IPB

Здравствуйте, гость ( Вход | Регистрация )

Статьи по Delphi - Help файлы, Работа с Help файлами
yuansw
сообщение 21.09.2005 - 18:47
Сообщение #1


Черный человек
Иконка группы

Группа: Модераторы
Пользователь №: 9425
Сообщений: 729
Регистрация: 20.01.2005
Из: Междуреченск
Загружено: байт
Скачано: байт
Коэффициент: ---
Спасибо сказали: 11 раз(а)



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

Код

// 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 в запущенной программе

Сообщение отредактировал yuansw - 28.09.2005 - 07:41
Перейти в начало страницы
Вставить ник
+Цитировать сообщение

Сообщений в этой теме


Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 1.08.2025 - 12:56