Witam
Witam zrobiłem helpa w Microsoft Help Workshop
przy pomocy poradnika http://support.microsoft.com/kb/828419/pl i mam problem z użyciem tego w delphi. Może mi ktoś krok po kroku wyjaśnić jak dodać tego helpa do aplikacji lub wysłać jakiś poradnik - szukałem na googlach i nic działającego nie znalazłem.
Ja się wiele helpami w formacie hlp nie bawiłem. Ciężko się to w Wordzie w rtfie przygotowuje, a później
na gotowym skądś wytrzaśniętym projekcie hpj zmieniałem tylko głowny temat i kompilowałem, wiem tylko,
że helpa pokazęsz tak jak poniżej pokazałem. Lepiej zainteresuj się formatem CHM i programem WinCHM
przy pomocy którego można tworzyć fajnie wyglądająće helpy z plików html, jest też Microsoftowy HTML
Help Workshop, ale jego nie używałem. W google znajdziesz też kilka przykładów jak obsłużyć plik CHM.
Application.HelpFile := ('pomoc.hlp');
Application.HelpCommand(HELP_CONTENTS, 0);
dzieki za pomoc już znalacłem- ShellExecute(Handle, 'open', 'help.chm', ,
, SW_SHOWNORMAL);
Tak również można, ale taka metoda ma tę wadę że Użytkownik może nie mieć skojarzone prawidłowo
w rejestrze pliku chm i wtedy nie podejrzy helpa. Natomiast jest kontrolka - bilbioteka hhctrl.ocx, która Ci
włąsnie może pokazać plik pomocy chim i z tego co testowałem pod XP, nawet jak ją przeniesiemy czy
też usuniemy - powinna przywrócić się na nowo. Dlatego do otwarcie pliku *.chm polecam taki sposób:
const
Help_Ocx = 'hhctrl.ocx';
Plik_Pomocy = 'pomoc.chm';
//...deklaracja funkcji później dynamicznie łądowanej z pliku hhctrl.ocx
HtmlHelp : function (hwndCaller: HWND; pszFile: PChar; uCommand: UINT; dwData: DWORD): HWND; stdcall;
// ...I gdzieś w kodzie na przykład przycisku czy pozycji menu:
var
H : Thandle;
begin
H := LoadLibrary(PChar(Help_Ocx));
if Dll_H = 0 then
begin
MessageBox(Application.Handle,
PChar('Nie można załadować pliku: ' + Help_Ocx + '!' +#13#10+
'Otwarcie pliku Pomocy nie będzie możliwe.'),
PChar(Application.Title), MB_OK + MB_ICONERROR);
Exit;
end;
HtmlHelp := GetProcAddress(H, 'HtmlHelpA');
if FileExists(Plik_Pomocy) = True then
begin
HtmlHelp(Application.Handle, PChar(Plik_Pomocy), 0, 0);
end
else
begin
MessageBox(Application.Handle,
PChar('Nie można wczytać pliku pomocy ' + Plik_Pomocy + '!'),
PChar(Application.Title), MB_OK + MB_ICONERROR);
end;
end;
Jeżeli natomiast chcesz podejrzeć konkretny temat o jakimś numerze contextu, to w funkcji HtmlHelp te
przedostatnie zero zastępujesz cyfrą 15 ($0F), a zamiast ostatniego zera podajesz numer id tematu, a
więcej ospisane jest w przykładzie na http://www.swissdelphicenter.ch/torry/showcode.php?id=402