Чтобы вывести справочную
информацию, которая находится в СНМ-файле, нужно воспользоваться ActiveX-компонентом
(элементом управления) ньореп, который входит в состав Windows и представляет
собой специальную динамическую библиотеку (файл Hhopen.ocx).
Первое, что следует
сделать, — установить компонент Hhopen на одну из вкладок палитры компонентов.
Для этого надо из меню Component выбрать команду Import ActiveX Control.
На экране появится окно Import ActiveX, в котором будут перечислены
все зарегистрированные в реестре Windows компоненты. В окне Import ActiveX,
в списке зарегистрированных компонентов, нужно выбрать строку hhopen
OLE Control module и щелкнуть на кнопке Install. В результате этого
на экране появится диалоговое окно Install, в котором программист может
выбрать пакет (packege — пакет, библиотека компонентов), в который будет добавлен
устанавливаемый компонент. Компоненты, добавляемые программистом, "по умолчанию"
добавляются в пакет dciusr. В результате щелчка на кнопке ОК выбранный
компонент добавляется в пакет, и на экране появляется окно Package и
запрос подтверждения процесса перекомпиляции пакета . По завершении процесса
компиляции на экране появится окно, информирующее о том, что компонент добавлен
в пакет и зарегистрирован . Значок компонента ньореп будет добавлен на вкладку
ActiveX. В процессе компиляции будет создан файл представления компонента
-- модуль HHOPENLib_TLIB.pas, который содержит описание методов, свойств и событий
компонента.
Модуль представления
можно увидеть, загрузив его в редактор кода из каталога \Delphi 7\Lib. Пролистав
в окне редактора кода модуль HHOPENLib_TLIB.pas, который представляет собой
интерфейс для доступа к элементу управления, можно найти описание класса тньореп
(листинг 14.1).
Листинг 14.1.
Описание класса THhореn
THhopen = class(Telecontrol)
private
FIntf:
_DHhopen;
function GetControlInterface: _DHhopen;
protected
procedure
CreateControl;
procedure InitControlData;
override;
public
function
OpenHelp(const HelpFile: WideString;
const
HelpSection: WideString): Integer;
procedure
CloseHelp;
property ControlInterface:_DHhopen
read
GetControlInterface;
property DefaultInterface:_DHhopen
read GetControlInterface;
published
property isHelpOpened: WordBool index 1
read GetWordBoolProp
write SetWordBoolProp
stored False;
end;
Класс тньореп предоставляет
два метода: OpenHelp и CloseHelp.
Метод OpenHeip обеспечивает
вывод справочной информации, метод close-Help — закрывает окно справочной системы.
У метода openHeip два
параметра — имя файла справочной информации и имя раздела, содержимое которого
будет выведено. В качестве имени раздела надо использовать имя HTML-файла, который
применялся программой HTML Help Workshop в процессе создания СНМ-файла. Следует
обратить внимание на то, что оба параметра должны быть строками widechar.
Следующая программа,
ее диалоговое окно приведено на рис. 14.10, а текст — в листинге 14.2, демонстрирует
использование ActiveX-компонента Hhopen для вывода справочной информации. Компонент
нпореп добавляется в форму обычным образом. Так как во время работы программы
он не отображается, то его можно поместить в любое место формы.
Рис. 14.10. Окно
программы Использование ActiveX
Листинг 14.2.
Использование компонента Hhopen unit ushh_;
interface
uses
Windows, Messages, SysUtils,
Classes, Graphics, Controls,
Forms,
Dialogs, OleCtrls, HHOPENLibJTLB, StdCtrls;
type
TForm1
= class(TForm) Label1: TLabel;
Editl:
TEdit; // файл справки
Edit2:
TEdit; //раздел справки (имя HTML-файла)
Button1:
TButton; // кнопка Справка
Hhopen1:
THhopen; // ActiveX-компонент Hhopen
Label2:
TLabel;
Label3:
TLabel;
procedure ButtonlClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1:
TForm1;
implementation
{$R
*.DFM}
//
щелчок на кнопке Справка
procedure
TForm1.ButtonlClick(Sender: TObject);
var
HelpFile
: string; // файл справки
HelpTopic
: string; // раздел справки
pwHelpFile : PWideChar;
//
файл справки (указатель на строку WideChar)
pwHelpTopic : PWideChar;
// раздел (указатель на строку WideChar)
begin
HelpFile
:= Edit1.Text;
HelpTopic
:= Edit2.Text;
// выделить память для строк WideChar
GetMemfpwHelpFile, Length(HelpFile) * 2) ;
GetMemfpwHelpTopic,
Length(HelpTopic)*2);
//
преобразовать Ansi-строку в WideString-строку
pwHelpFile := StringToWideChar
(HelpFile,pwHelpFile,MAX_PATH*2)
pwHelpTopic := StringToWideChar(HelpTopic,pwHelpTopic,32);
// вывести справочную информацию
Form1.Hhopen1.OpenHelp(pwHelpFile,pwHelpTopic);
end;
end.
Вывод справочной информации выполняет процедура обработки события Onciic на кнопке Справка. Так как параметры метода OpenHelp должны быть строками widechar, то сначала выполняется преобразование ANSI-строки В строку WideChar.
Релятивисты и позитивисты утверждают, что "мысленный эксперимент" весьма полезный интрумент для проверки теорий (также возникающих в нашем уме) на непротиворечивость. В этом они обманывают людей, так как любая проверка может осуществляться только независимым от объекта проверки источником. Сам заявитель гипотезы не может быть проверкой своего же заявления, так как причина самого этого заявления есть отсутствие видимых для заявителя противоречий в заявлении.
Это мы видим на примере СТО и ОТО, превратившихся в своеобразный вид религии, управляющей наукой и общественным мнением. Никакое количество фактов, противоречащих им, не может преодолеть формулу Эйнштейна: "Если факт не соответствует теории - измените факт" (В другом варианте " - Факт не соответствует теории? - Тем хуже для факта").
Максимально, на что может претендовать "мысленный эксперимент" - это только на внутреннюю непротиворечивость гипотезы в рамках собственной, часто отнюдь не истинной логики заявителя. Соответсвие практике это не проверяет. Настоящая проверка может состояться только в действительном физическом эксперименте.
Эксперимент на то и эксперимент, что он есть не изощрение мысли, а проверка мысли. Непротиворечивая внутри себя мысль не может сама себя проверить. Это доказано Куртом Гёделем.
Понятие "мысленный эксперимент" придумано специально спекулянтами - релятивистами для шулерской подмены реальной проверки мысли на практике (эксперимента) своим "честным словом". Подробнее читайте в FAQ по эфирной физике.