Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

Как "прикрутить" 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 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.076 c
14-1135769635
Johnmen
2005-12-28 14:33
2006.01.22
Модераторам


14-1135615175
Mystic
2005-12-26 19:39
2006.01.22
Небольшой вопросик по Delphi


14-1135355802
TUser
2005-12-23 19:36
2006.01.22
Дешевые магазины


1-1134740100
_max_
2005-12-16 16:35
2006.01.22
Расположение компонентов на форме


14-1135761332
DesWind
2005-12-28 12:15
2006.01.22
Время отвремени не тормозится на точках останова