Вивід довідкової інформації

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