Implémentation simple de l'association entre le programme Delphi et l'aide Chm Auteur : Li Xin [email protected] QQ : 1348513 L'aide au format Chm est un nouveau format qui n'est apparu qu'après Windows98. Par rapport au format .hlp, il a une méthode d'édition plus simple et plus riche. graphique. Il est obtenu en compilant des fichiers de page Web via l'outil de production Chm, donc en théorie, vous pouvez rendre le fichier d'aide aussi beau que la page Web. La méthode de production la plus simple : utilisez d'abord FronPage pour créer le fichier d'aide, puis utilisez HTMLHelpWorkshop pour le compiler afin d'obtenir le fichier d'aide *.chm. HTMLHelpWorkshop peut être téléchargé à partir du site Web de Microsoft. L'aide dans les applications peut être divisée en types contextuels et non contextuels. Sensible au contexte signifie qu'après que l'utilisateur a appuyé sur la touche F1, un écran d'aide lié à l'objet actuellement sélectionné (tel qu'un formulaire, une zone de texte, une zone de liste déroulante) apparaît ; une aide différente apparaît pour différents objets. L'aide non associative signifie qu'après avoir appuyé sur la touche F1 n'importe où dans le programme, le même écran d'aide apparaît. Parlons de ces deux méthodes et méthodes d'implémentation simples dans Delphi. 1. Aide chm non associée Dans Delphi, vous pouvez appeler directement le fichier d'aide chm via la fonction ShellExecute, comme suit : utiliseshellapi
.......var HWndHelp:Hwnd; i:integer;begin //Vérifie si la fenêtre d'aide existe déjàHWndHelp:=FindWindow(nil,conHelpTitle); if HwndHelp<>0 then //Si elle existe, fermez SendMessage( HwndHelp ,WM_CLOSE,0,0); i:=ShellExecute(poignée, 'open',Pchar(strCurExePath+'/help.chm''),nil, nil, sw_ShowNormal); si i<>42 alors Showmessage('le fichier d'aide help.chm est endommagé !');end 2. Contexte; chm Pour implémenter l'aide chm contextuelle dans Delphi, vous pouvez appeler la fonction HtmlHelpA dans le contrôle HHCTRL.OCX sous le répertoire système Windows System32. Les étapes suivantes sont requises : 1. Définissez la propriété HelpContext du contrôle concerné. Par exemple, le formulaire principal frmMain::10100, la zone de texte edtInput: 10101, la boîte de dialogue dlgReport: 10200, la zone de liste déroulante cbReportEdit: 102012, déclarez la fonction HtmlHelpA function HtmlHelpA (hwndcaller:Longint; lpHelpFile:string; wCommand: Entier long;dwData :string): HWND;stdcall; réponse de la touche F1 externe 'hhctrl.ocx'3 //La fonction publique ShowChmHelp affiche différents écrans d'aide. PRocedure ShowChmHelp(sTopic:string); var i:integer;begin i:=HtmlHelpA(application.Handle,Pchar(ExePath+'/help.chm'),HH_DISPLAY_TOPIC,sTopic); si i=0 alors commencez Showmessage(' help. le fichier d'aide chm est endommagé ! '); exit;end;….function TfrmMain.FormHelp (Command : Word ; Data : Integer ; var CallHelp : Boolean) : Boolean ; début du cas Données de 10100 : ShowChmHelp (frmMain.htm); 10101 : ShowChmHelp ('edtInput.htm');… sinon ShowChmHelp (par défaut. htm'); fin;fin;fonction TdlgReport.FormHelp (Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;begin case Data of 10200: ShowChmHelp('dlgReport.htm');10201: ShowChmHelp(cbReportEdit.htm');… else ShowChmHelp(par défaut .htm'); fin;fin;