Вариант использования HTML Help в Делфи

Советы » Help файлы » Вариант использования HTML Help в Делфи

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Вариант использования HTML-Help в делфи
Зависимости: HHCtrl.ocx
Автор:       wl, wl@ezmail.ru, Киров Copyright:   MSDN Дата:        8 июля 2003 г.

***************************************************** }
// 1) После Uses... добавляешь: const


  HH_DISPLAY_TOPIC = $0000;   HH_HELP_FINDER = $0000; // WinHelp equivalent   HH_GET_WIN_HANDLE = $0006;   HH_DISPLAY_TEXT_POPUP = $000E;     // display string resource id or text in a popup window   HH_HELP_CONTEXT = $000F; // display mapped numeric value in dwData   HH_HELP_CONTEXTMENU = $0010; // text popup help
// 2) Перед секцией Implementation добавляешь:
function

HtmlHelp(   hwndCaller: HWND;   pszFile: string

;   uCommand: Integer;   dwData: integer): HWND; stdcall

; external

'hhctrl.ocx' name 'HtmlHelpA';

// 3) В разделе Private у класса формы добавляешь:
procedure

WMHelp(var

aMessage: TWMHelp); message

WM_HELP;
// 4) В разделе implementation пишешь:
// Если смотрим помощь по пунктам меню function

GetMenuHelpContext(Menu: TMenu; aMessage: TWMHelp): Integer; begin


  Result := 0;
  if

(Menu <> nil

) then

  begin


    Result := Menu.GetHelpContext(aMessage.HelpInfo.iCtrlId, true);
    if

(Result = 0) then

      Result := Menu.GetHelpContext(aMessage.HelpInfo.hItemHandle, false);   end

;
end

;

procedure

TForm1.WMHelp(var

aMessage: TWMHelp); // Предполагается, что класс // формы называется TForm1 var


  Control: TWinControl;   ContextId: integer;   hlp: HWND;
begin


  if

(aMessage.HelpInfo.iContextType = HELPINFO_WINDOW) then

  begin


    Control := FindControl(aMessage.HelpInfo.hItemHandle);       // Ищем активный компонент
    while

((Control <> nil

) and

(Control.HelpContext = 0)) do

      Control := Control.Parent;     if

(Control = nil

) then

      Exit;     ContextId := Control.HelpContext; // Смотрим у него HelpContext   end


  else


  begin


    ContextId := GetMenuHelpContext(Menu, aMessage); // Для меню     if

(ContextId = 0) then

      ContextId := GetMenuHelpContext(PopupMenu, aMessage);
  end

;
  hlp := HtmlHelp(Handle, 'c:WINDOWSHelpjoy.chm', HH_HELP_CONTEXT,     ContextId);   if

(hlp = 0) then

    ShowMessage('Помощь не найдена!'); end

;

// 5) вместо 'c:WINDOWSHelpjoy.chm' - подставляешь свой CHM - файл.

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com