Einzelnen Beitrag anzeigen

moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Hilfe einbinden - klappt nur halb ?!

  Alt 16. Mai 2005, 09:48
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
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat