Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.045 c
6-1129103609
Wiz@rd
2005-10-12 11:53
2006.01.22
bind error


14-1135654521
boalse
2005-12-27 06:35
2006.01.22
Редактирование


6-1128786696
Levis
2005-10-08 19:51
2006.01.22
Работа с IdHTTP


2-1135758673
darvin
2005-12-28 11:31
2006.01.22
ДПФ пример программной реализации Delphi


11-1097922134
Владимир Кладов
2004-10-16 14:22
2006.01.22
KOLOLERE2





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский