Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Вывод справочной информации

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

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay