Щоб вивести довідкову інформацію, яка знаходиться в СНМ-файлі, потрібно скористатися 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.