Implementación simple de asociación entre el programa Delphi y la ayuda Chm Autor: Li Xin [email protected] QQ: 1348513 La ayuda del formato Chm es un nuevo formato que solo apareció después de Windows98. En comparación con el formato .hlp, tiene un método de edición más simple y más rico. gráficos. Se obtiene compilando archivos de páginas web a través de la herramienta de producción Chm, por lo que, en teoría, puede hacer que el archivo de ayuda sea tan hermoso como la página web. El método de producción más simple: primero use FronPage para crear el archivo de ayuda y luego use HTMLHelpWorkshop para compilarlo y obtener el archivo de ayuda *.chm. HTMLHelpWorkshop se puede descargar desde el sitio web de Microsoft. La ayuda en las aplicaciones se puede dividir en tipos sensibles al contexto y no contextuales. Sensible al contexto significa que después de que el usuario presiona la tecla F1, aparece una pantalla de ayuda relacionada con el objeto actualmente enfocado (como un formulario, cuadro de texto, cuadro de lista desplegable); aparece ayuda diferente para diferentes objetos; La ayuda no asociativa significa que después de presionar la tecla F1 en cualquier parte del programa, aparece la misma pantalla de ayuda. Hablemos de estos dos métodos y métodos de implementación simples en Delphi. 1. Ayuda chm no asociada En Delphi, puede llamar directamente al archivo de ayuda chm a través de la función ShellExecute, de la siguiente manera: usesshellapi
.......var HWndHelp:Hwnd; i:integer;begin //Compruebe si la ventana de ayuda ya existeHWndHelp:=FindWindow(nil,conHelpTitle); si HwndHelp<>0 entonces //Si existe, cierre SendMessage( HwndHelp, WM_CLOSE,0,0); i:=ShellExecute(identificador, 'open',Pchar(strCurExePath+'/help.chm''),nil, nil, sw_ShowNormal); si i<>42 entonces Showmessage('¡el archivo de ayuda help.chm está dañado!');end; chm Para implementar la ayuda chm sensible al contexto en Delphi, puede llamar a la función HtmlHelpA en el control HHCTRL.OCX en el directorio del sistema de Windows System32. Se requieren los siguientes pasos: 1. Establezca la propiedad HelpContext del control relevante. Por ejemplo, el formulario principal frmMain::10100, el cuadro de texto edtInput: 10101, el cuadro de diálogo dlgReport: 10200, el cuadro de lista combinado cbReportEdit: 102012, declara la función HtmlHelpA función HtmlHelpA (hwndcaller:Longint; lpHelpFile:string; wCommand: Entero largo;dwData:cadena): HWND;stdcall; external 'hhctrl.ocx'3 Respuesta de la tecla F1 //La función pública ShowChmHelp muestra diferentes pantallas de ayuda. Procedimiento ShowChmHelp(sTopic:string); var i:integer;begin i:=HtmlHelpA(application.Handle,Pchar(ExePath+'/help.chm'),HH_DISPLAY_TOPIC,sTopic); ¡El archivo de ayuda chm está dañado! '); finalizar; finalizar;….función TfrmMain.FormHelp(Comando: Word; Datos: Entero; var CallHelp: Booleano): Booleano; inicio de caso Datos de 10100: ShowChmHelp(frmMain.htm); 10101: ShowChmHelp('edtInput.htm');… else ShowChmHelp(default. htm'); fin;fin;función TdlgReport.FormHelp(Comando: Word; Datos: Entero; var CallHelp: Booleano): Booleano; inicio de caso Datos de 10200: ShowChmHelp('dlgReport.htm');10201: ShowChmHelp(cbReportEdit.htm');… else ShowChmHelp(predeterminado .htm'); fin;fin;