Робота з HTML-довідкою в програмах.
Сьогодні: -0 -0 -0
Зараз онлайн: На сайті -13 На IRC-каналі -2
Зручно увінчувати цю систему на початку розробки програми. Але я опишу спосіб застосування загалом.
У розділі глобальних змінних додайте наступні змінні для роботи з довідкою:
_HHwinHwnd: HWND = 0; HHCtrlHandle: THandle = 0; mHelpFile: String;
Відразу після розділу глобальних змінних та перед implementation вставте наступні рядки коду:
var HtmlHelpA: function(hwndCaller: HWND; pszFile: PANsiChar; uCommand: UInt; dwData: DWORD): HWND; stdcall; HtmlHelpW: function(hwndCaller: HWND; pszFile: PW ; HH_DISPLAY_TOPIC = $0000; HH_HELP_CONTEXT = $000F; HH_CLOSE_ALL = $0012;
Десь на початку розділу implementation вставте код:
const hhPathRegKey = 'CLS); Reg.CloseKey; if (result <> '') and (not FileExists(result)) then result := ''; end; Reg.Free; end; procedure LoadHtmlHelp; var OcxPath: string; begin if HHCtrlHandle = 0 then begin OcxPath := GetPathToHHCtrlOCX; if (OcxPath <> '') and FileExists(OcxPath) then begin HHCtrlHandle := LoadLibrary(PChar(OcxPath)); if HHCtrlHandle <> 0 then begin @HtmlHelpA := GetProcAddress(HHCtrlHandle, 'HtmlHelpA'); @HtmlHelpW := GetProcAddress(HHCtrlHandle, 'HtmlHelpW'); @HtmlHelp := GetProcAddress(HHCtrlHandle, 'HtmlHelpA'); end; end; end; end; procedure UnloadHtmlHelp; begin if HHCtrlHandle <> 0 then begin FreeLibrary(HHCtrlHandle); HHCtrlHandle := 0; end; end;
У OnCreate головної форми програми додайте:
mHelpFile := ExtractFilePath(ParamStr(0)) + 'Help.chm'; mHelpFile := ExpandFileName(mHelpFile); LoadHtmlHelp; if HHCtrlHandle = 0 thenShowMessage('HTML-довідка не підтримується системою');
В обробнику пункту меню для завантаження довідки (наприклад, Довідка - Зміст) пишемо:
if HHCtrlHandle = 0 then showmessage('Довідка не підтримується') else HtmlHelp(Handle,PChar(mHelpFile+'::/Pages/topic1.htm'),HH_DISPLAY_TOPIC,0);
При виході з програми необхідно закрити всі відкриті вікна довідки, тому OnClose головної форми додавайте рядок:
HtmlHelp(0, nil, HH_CLOSE_ALL, 0);
Часто у програмах роблять інші пункти меню, які відповідають розділам довідки. Ось як їх завантажувати:
Аналогічно можна завантажувати будь-який необхідний розділ довідки.
Щоб вставити посилання на цю статтю на іншому сайті, використовуйте наступний HTML-код:
Посилання для форумів (BBCode):