Skip to Content

Вывод справочной информации

Вывод справочной информации

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

  1. THhopen = class(Telecontrol)
  2.  
  3. private
  4.  
  5. FIntf: _DHhopen;
  6.  
  7. function GetControlInterface: _DHhopen;
  8.  
  9. protected
  10.  
  11. procedure CreateControl;
  12. procedure InitControlData;
  13.  
  14. override;
  15.  
  16. public
  17.  
  18. function OpenHelp(const HelpFile: WideString;
  19. const HelpSection: WideString): Integer;
  20.  
  21. procedure CloseHelp;
  22.  
  23. property ControlInterface:_DHhopen
  24. read GetControlInterface;
  25.  
  26. property DefaultInterface:_DHhopen
  27. read GetControlInterface;
  28.  
  29. published
  30.  
  31. property isHelpOpened: WordBool index 1
  32. read GetWordBoolProp
  33. write SetWordBoolProp
  34. stored False;
  35.  
  36. end;

Класс тньореп предоставляет два метода: OpenHelp и CloseHelp.

Метод OpenHeip обеспечивает вывод справочной информации, метод close-Help — закрывает окно справочной системы.

У метода openHeip два параметра — имя файла справочной информации и имя раздела, содержимое которого будет выведено. В качестве имени раздела надо использовать имя HTML-файла, который применялся программой HTML Help Workshop в процессе создания СНМ-файла. Следует обратить внимание на то, что оба параметра должны быть строками widechar.

Следующая программа, ее диалоговое окно приведено на рис. 14.10, а текст — в листинге 14.2, демонстрирует использование ActiveX-компонента Hhopen для вывода справочной информации. Компонент нпореп добавляется в форму обычным образом. Так как во время работы программы он не отображается, то его можно поместить в любое место формы.


Рис. 14.10. Окно программы Использование ActiveX

Листинг 14.2. Использование компонента Hhopen

  1. unit ushh_;
  2. interface
  3.  
  4. uses
  5. Windows, Messages, SysUtils,
  6. Classes, Graphics, Controls,
  7. Forms, Dialogs, OleCtrls, HHOPENLibJTLB, StdCtrls;
  8.  
  9. type
  10.  
  11. TForm1 = class(TForm)
  12. Label1: TLabel;
  13. Editl: TEdit; // файл справки
  14. Edit2: TEdit; //раздел справки (имя HTML-файла)
  15. Button1: TButton; // кнопка Справка
  16. Hhopen1: THhopen; // ActiveX-компонент Hhopen
  17. Label2: TLabel;
  18. Label3: TLabel;
  19.  
  20. procedure ButtonlClick(Sender: TObject);
  21.  
  22. private
  23. { Private declarations }
  24. public
  25. { Public declarations }
  26. end;
  27.  
  28. var
  29. Form1: TForm1;
  30.  
  31. implementation
  32. {$R *.DFM}
  33.  
  34. // щелчок на кнопке Справка
  35.  
  36. procedure TForm1.ButtonlClick(Sender: TObject);
  37. var
  38.  
  39. HelpFile : string; // файл справки
  40. HelpTopic : string; // раздел справки
  41. pwHelpFile : PWideChar;
  42.  
  43. // файл справки (указатель на строку WideChar)
  44.  
  45. pwHelpTopic : PWideChar;
  46.  
  47. // раздел (указатель на строку WideChar)
  48.  
  49. begin
  50.  
  51. HelpFile := Edit1.Text;
  52. HelpTopic := Edit2.Text;
  53.  
  54. // выделить память для строк WideChar
  55.  
  56. GetMemfpwHelpFile, Length(HelpFile) * 2) ;
  57. GetMemfpwHelpTopic, Length(HelpTopic)*2);
  58.  
  59. // преобразовать Ansi-строку в WideString-строку
  60.  
  61. pwHelpFile := StringToWideChar
  62. (HelpFile,pwHelpFile,MAX_PATH*2)
  63. pwHelpTopic := StringToWideChar(HelpTopic,pwHelpTopic,32);
  64.  
  65. // вывести справочную информацию
  66.  
  67. Form1.Hhopen1.OpenHelp(pwHelpFile,pwHelpTopic);
  68.  
  69. end;
  70.  
  71. end.

Вывод справочной информации выполняет процедура обработки события Onciic на кнопке Справка. Так как параметры метода OpenHelp должны быть строками widechar, то сначала выполняется преобразование ANSI-строки В строку WideChar.



Delphi Для профессионалов &1   |    Delphi Для профессионалов &2   |    Delphi Для профессионалов &3   |    Иллюстрированный самоучитель &1   |    Иллюстрированный самоучитель &2