Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

Delphi , Файловая система , Help файлы



Автор: wl
WEB-сайт: http://delphibase.endimus.com

{ **** 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:\WINDOWS\Help\joy.chm', HH_HELP_CONTEXT,
    ContextId);
  if (hlp = 0) then
    ShowMessage('Помощь не найдена!');
end;

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

Пример использования:
F1 в запущенной программе

Пример использования HTML Help в Delphi для отображения содержимого справки. Вот разбивка кода:

Зависимости Код требует компонента HHCtrl.ocx, который обеспечивает функциональность HTML Help.

Константы Код определяет несколько констант, связанных с HTML Help:

  • HH_DISPLAY_TOPIC: отображает тему
  • HH_HELP_FINDER: открывает диалог справки
  • HH_GET_WIN_HANDLE: получает handle окна для HTML Help
  • HH_DISPLAY_TEXT_POPUP: отображает текст в popup-окне
  • HH_HELP_CONTEXT: отображает контекстно-зависимую справку
  • HH_HELP_CONTEXTMENU: отображает контекстное меню

Функция Код определяет функцию HtmlHelp, которая принимает четыре параметра:

  • hwndCaller: handle вызывающего окна
  • pszFile: путь к файлу HTML Help (например, c:\WINDOWS\Help\joy.chn)
  • uCommand: команда для выполнения на файле HTML Help (например, отображение темы)
  • dwData: дополнительные данные для функции HTML Help Функция объявлена как stdcall и импортируется из библиотеки hhctrl.ocx.

Обработка событий Код определяет обработчик события для сообщения WMHelp, которое отправляется, когда пользователь кликнет на кнопку справки или нажмет F1. Обработчик проверяет, является ли информация о справке контекстно-зависимой (т.е. связанной с конкретным контролем) и отображает содержимое справки соответственно.

Имплементация В разделе реализации код определяет два процедура:

  • GetMenuHelpContext: получает контекст справки для пункта меню
  • WMHelp: обрабатывает сообщение WMHelp Обработчик WMHelp проверяет, является ли информация о справке контекстно-зависимой и отображает содержимое справки с помощью функции HtmlHelp. Если файл справки не найден, отображается сообщение об ошибке.

Пример использования Чтобы использовать этот код в вашем приложении Delphi, вам нужно: 1. Добавить компонент HHCtrl.ocx к проекту 2. Создать форму с меню и/или popup-меню 3. Определите контексты справки для каждого контрола или пункта меню с помощью свойства HelpContext 4. Реализуйте процедуру GetMenuHelpContext, чтобы возвращать правильный контекст справки для каждого пункта меню 5. Установите обработчики событий для сообщения WMHelp, чтобы отображать содержимое справки Обратите внимание, что это только пример кода, и вам нужно будет его модифицировать, чтобы он соответствовал вашим конкретным требованиям.

В статье описывается способ интеграции HTML Help в приложении на языке Delphi, который позволяет пользователю получать помощь по определенным пунктам меню или компонентам.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Help файлы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 05:36:05/0.0037269592285156/0