Форум: "WinAPI";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
ВнизКак "прикрутить" HTML Help? Найти похожие ветки
← →
Navi (2005-11-05 16:55) [0]Здравствуйте!
В качестве help-файла используется *.chm, полученный Microsoft HTML Help Workshop. На OnCreate главной
формы: Application.OnHelp:= AppHelp;
function TForm1.AppHelp(Command: Word; Data: Longint; var CallHelp: Boolean): Boolean;
begin
Result:= True;
try
CallHelp:= False;
case Command of
HELP_COMMAND: ;
HELP_CONTENTS: DisplayHelpTableOfContents;
HELP_CONTEXT: DisplayHelpByContext(Data);
HELP_CONTEXTPOPUP: DisplayHelpContextPopup(Data, "popup_topics.txt");
HELP_KEY: ;
HELP_QUIT: ;
end;
except
Result:= False;
end;
end;
procedure DisplayHelpContextPopup(const ContextID: LongInt; const ATextName: String);
var
HHPopup: THHPopup;
begin
if HHCTRL <> 0 then // где HHCTRL:= LoadLibrary("HHCTRL.OCX");
begin
FillChar(HHPopup, SizeOf(HHPopup), #0);
with HHPopup do
begin
cbStruct:= SizeOf(HHPopup);
hinst:= 0;
idString:= ContextID;
pszText:= nil;
pt:= Point(0, 0);
clrForeground:= -1;
clrBackground:= -1;
rcMargins:= Rect(-1, -1, -1, -1);
pszFont:= PChar("MS Shell Dlg, 10, , ");
end;
HHPopup.cbStruct:= SizeOf(HHPopup);
HtmlHelp(0, PChar(GetHelpFile("") + "::/" + ATextName), HH_DISPLAY_TEXT_POPUP, LongInt(@HHPopup));
// где HtmlHelp:= GetProcAddress(HHCTRL, "HtmlHelpA");
// THtmlHelpA = function(hwndCaller: THandle; pszFile: PChar; uCommand: Cardinal; dwData: LongInt): THandle; stdcall;
end;
end;
На 2-ой (модальной форме), имеющей BorderIcons = [biSystemMenu, biHelp] и BorderStyle = bsDialog лежит Edit1,
имеющий HelpContext = 1000. Если поставить фокус на Edit1 и нажать F1, то почему-то Command в AppHelp равен
HELP_CONTEXTPOPUP (а по логике д.б. HELP_CONTEXT) и вызывается DisplayHelpContextPopup. А если кликнуть
Edit1 курсором crHelp после нажатия question mark в title bar то тоже Command = HELP_CONTEXTPOPUP, т.е. все
логично. Поэтому, прошу прощения за несколько вопросов в одной ветке, но т.к. они связанные друг с другом...
1. Как сделать так, чтобы при любом фокусе и нажатии F1 получался Command = HELP_CONTEXT и Data равнялась HelpContext
для текущего диалога?
2. Что указывать параметром hinst в THHPopup? Значения Application.Handle, Application.MainForm.Handle, HInstance
приводят к "Справка по данному элементу отсутствует", а 0 - работает.
3. Что указывать параметром pt в THHPopup?
Спасибо.
← →
Navi (2005-11-12 09:33) [1]Всем спасибо за информативные ответы. Разобрался сам, прочтя "Delphi Programming for the HTML Help API" by Robert Chandler.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c