Einfache Implementierung der Verknüpfung zwischen Delphi-Programm und Chm-Hilfe Autor: Li Xin [email protected] QQ: 1348513 Chm-Formathilfe ist ein neues Format, das erst nach Windows98 erschien Grafik. Es wird durch Kompilieren von Webseitendateien mit dem Chm-Produktionstool erhalten, sodass Sie theoretisch die Hilfedatei so schön gestalten können wie die Webseite. Die einfachste Produktionsmethode: Verwenden Sie zuerst FronPage, um die Hilfedatei zu erstellen, und kompilieren Sie sie dann mit HTMLHelpWorkshop, um die *.chm-Hilfedatei zu erhalten. HTMLHelpWorkshop kann von der Microsoft-Website heruntergeladen werden. Hilfe in Anwendungen kann in kontextsensitive und nicht kontextbezogene Typen unterteilt werden. Kontextsensitiv bedeutet, dass nach dem Drücken der F1-Taste ein Hilfebildschirm für das aktuell fokussierte Objekt (z. B. ein Formular, ein Textfeld oder ein Dropdown-Listenfeld) für verschiedene Objekte angezeigt wird. Nicht-assoziative Hilfe bedeutet, dass nach dem Drücken der F1-Taste an einer beliebigen Stelle im Programm derselbe Hilfebildschirm angezeigt wird. Lassen Sie uns über diese beiden Methoden und einfache Implementierungsmethoden in Delphi sprechen. 1. Nicht zugeordnete CHM-Hilfe In Delphi können Sie die CHM-Hilfedatei wie folgt direkt über die ShellExecute-Funktion aufrufen: usedshellapi
.......var HwndHelp:Hwnd; i:integer;begin //Überprüfen Sie, ob das Hilfefenster bereits existiertHWndHelp:=FindWindow(nil,conHelpTitle); if HwndHelp<>0 then //Wenn es existiert, schließen Sie SendMessage( HwndHelp ,WM_CLOSE,0,0); i:=ShellExecute(handle, 'open',Pchar(strCurExePath+'/help.chm''),nil, nil, sw_ShowNormal); if i<>42 then Showmessage('help.chm help file is beschädigt!');end; chm Um die kontextsensitive CHM-Hilfe in Delphi zu implementieren, können Sie die Funktion HtmlHelpA im HHCTRL.OCX-Steuerelement im Windows-Systemverzeichnis System32 aufrufen. Folgende Schritte sind erforderlich: 1. Legen Sie die HelpContext-Eigenschaft des entsprechenden Steuerelements fest. Beispielsweise deklarieren das Hauptformular frmMain::10100, das Textfeld edtInput: 10101, das Dialogfeld dlgReport: 10200, das Kombinationslistenfeld cbReportEdit: 102012 die HtmlHelpA-Funktion function HtmlHelpA (hwndcaller:Longint; lpHelpFile:string; wCommand: Longint;dwData :string): HWND;stdcall; external 'hhctrl.ocx'3 F1-Tastenreaktion //Die öffentliche Funktion ShowChmHelp zeigt verschiedene Hilfebildschirme an. PROcedure ShowChmHelp(sTopic:string); var i:integer;begin i:=HtmlHelpA(application.Handle,Pchar(ExePath+'/help.chm'),HH_DISPLAY_TOPIC,sTopic); if i=0 then begin Showmessage(' help. chm-Hilfedatei ist beschädigt! '); TfrmMain.FormHelp(Befehl: Word; Daten: Ganzzahl; var CallHelp: Boolean): Boolean;begin case Daten von 10100: ShowChmHelp(frmMain.htm);… sonst ShowChmHelp(default. htm'); end;end;function TdlgReport.FormHelp(Befehl: Word; Daten: Ganzzahl; var CallHelp: Boolean): Boolean;begin case Daten von 10200: ShowChmHelp('dlgReport.htm');10201: ShowChmHelp(cbReportEdit.htm');… sonst ShowChmHelp(default .htm'); end;end;