Главная страница
    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.036 c
14-1135920690
WondeRu
2005-12-30 08:31
2006.01.22
Слышал что новая версия клиента к форуму появилась. Это правда?


14-1135706486
Serg1981
2005-12-27 21:01
2006.01.22
Ограничения БД Access


3-1132653380
ShiFT
2005-11-22 12:56
2006.01.22
получение BLOBField в Потоке.


6-1129122090
Piero
2005-10-12 17:01
2006.01.22
ClientSocket


14-1135178809
Kerk
2005-12-21 18:26
2006.01.22
Западное образование





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский