Главная страница
    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.055 c
14-1135448120
lookin
2005-12-24 21:15
2006.01.22
Как будет по английски "цвет по уровню" одним словом?


5-1121698036
MrTime
2005-07-18 18:47
2006.01.22
Создание значка пользовательского компонента


14-1135976124
Kerk
2005-12-30 23:55
2006.01.22
Почитал ветки


3-1132838076
DimMih
2005-11-24 16:14
2006.01.22
Работа с DBGrid


2-1135859507
ezorcist
2005-12-29 15:31
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский