Moin !
Ich versuche gerade eine Hilfe in meine Anwendung einzubauen. So irgendwie funzt das schon, aber nicht so recht.
Also, ich nutze folgendes:
Tutorial:
http://www.dsdt.info/tutorials/htmlhelp/
Header bzw. Fix von hier:
http://www.helpware.net/delphi/index.html
Popup Info hier:
http://www.helpware.net/htmlhelp/how_to_whatsthis.htm
Achja und ich nutze D6.
Soweit so gut. Nun habe ich zum Erstellen von der CHM-Hilfe das Tool Help & Manual. Aber das ist sicherlich erstmal Nebensache. Nun verwende ich folgenden Code in meinem Projekt (biHelp ist auf True gesetzt!):
Delphi-Quellcode:
{Alle 'Whats This' und F1 Help_ContextPopup WinHelp-Ereignisse werden
hier ankommen}
procedure F1HelpEvent(ContextHelpID: Longint; X, Y: Integer);
var hhpopup: HH.THHPopup;
begin
with hhpopup
do begin
// Größe dieser Struktur
cbStruct := SizeOf(hhpopup);
// Instanz-Handle für String-Ressource
hinst := 0;
// Enthält 0, eine Ressourcen-ID oder eine Topic-ID in
// einer Textdatei
idString := ContextHelpID;
// Enthält den Text, der angezeigt werden soll, wenn idString 0 ist
pszText :=
nil;
// top center (in Pixeln) des Popup-Fensters
pt := Point(x,y);
// Textfarbe, verwende -1 für Standard; RGB-Wert (hier rot)
clrForeground := COLORREF($000000FF);
// Hintergrundfarbe, verwende -1 für Standard; RGB-Wert
clrBackground := COLORREF(-1);
// Anzahl an Leerzeichen zwischen Fensterrand und Text, -1 für
// jeden Teil zum Ignorieren
rcMargins := Rect(-1,-1,-1,-1);
// Schrift: facename, point size, char set, BOLD ITALIC UNDERLINE
pszFont := '
';
end;
HtmlHelp(Form1.Handle,
PChar(ExtractFilePath(ParamStr(0))+'
Hilfe\Hilfe.chm::/Cshelp.txt'),
HH_DISPLAY_TEXT_POPUP, DWORD(@hhpopup));
end;
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var chmFile:
string;
begin
chmFile := ExtractFilePath(ParamStr(0))+'
Hilfe\Hilfe.chm';
mHHelp :=
nil;
if not FileExists(chmFile)
then
ShowMessage('
Hilfe-Datei nicht gefunden'#13+chmFile);
{HH 1.2 oder höher Versionskontrolle}
if (hh.HHCtrlHandle = 0)
or (hh_funcs._hhMajVer < 4)
or ((hh_funcs._hhMajVer = 4)
and (hh_funcs._hhMinVer < 73))
then
ShowMessage('
Diese Anwendung erfordert die Installation der '+
'
MS HTML Help 1.2 oder höher');
{Hook - verwendet HH_FUNCS.pas}
mHHelp := hh_funcs.THookHelpSystem.Create(chmFile, '
', htHHAPI);
mHHelp.HelpCallback2 := F1HelpEvent;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
HHCloseAll;
// Schließt alle Hilfe-Fenster
if Assigned(mHHelp)
then
mHHelp.Free;
end;
procedure TForm1.TBXItem2Click(Sender: TObject);
begin
DefWindowProc(
handle, WM_SYSCOMMAND, SC_CONTEXTHELP, 0);
end;
Nun passieren aber ganz seltsame Dinge ... Wenn ich z.B. die F1 Taste drücke dann kommt ein Popup. An dieser Stelle (also direkt nach dem Programmstart) sollte aber doch dann die Hilfe aufgehen, oder sehe ich da was falsch?
Eigentlich will ich die Popups doch nur, wenn ich auch den Button TBXItem2 angeklickt habe. Dieser Button hat bei mir aber garkeine Funktion.
Und dann noch eine Frage im Zusammenhang mit den Popups ... Angenommen ich habe da jetzt ein Label wo ich eine HilfeID vergebe. Nun kann ich ja auf die ID ein Popup "binden". Bedeutet das dann, das ich jetzt keine "normale" Hilfe mehr zu dem Label haben kann? Also ein Text in der
HTML-Hilfe.
Und ich verstehe auch nicht so ganz die Sache mit den Popuptexten. Werden die jetzt in das CHM File mit reinkompiliert, oder muss ich die Datei extra mitliefern!?
Hoffe jemand kann mir ein paar Tips geben