Чтобы вывести справочную информацию, которая находится в СНМ-файле, нужно
воспользоваться 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,
который представляет собой интерфейс для доступа к элементу управления, можно
найти описание класса THhopen 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 для вывода
справочной информации. Компонент нпореп добавляется в форму обычным образом. Так
как во время работы программы он не отображается, то его можно поместить в любое
место формы. 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.
|