Implementação simples de associação entre o programa Delphi e a ajuda do Chm Autor: Li Xin [email protected] QQ: 1348513 A ajuda do formato Chm é um novo formato que só apareceu após o formato .hlp, possui um método de edição mais simples e mais rico. gráficos. Ele é obtido compilando arquivos de páginas da web por meio da ferramenta de produção Chm, portanto, em teoria, você pode tornar o arquivo de ajuda tão bonito quanto a página da web. O método de produção mais simples: primeiro use o FronPage para criar o arquivo de ajuda e, em seguida, use o HTMLHelpWorkshop para compilá-lo e obter o arquivo de ajuda *.chm. HTMLHelpWorkshop pode ser baixado do site da Microsoft. A ajuda em aplicativos pode ser dividida em tipos sensíveis ao contexto e não contextuais. Sensível ao contexto significa que depois que o usuário pressiona a tecla F1, uma tela de ajuda relacionada ao objeto atualmente em foco (como um formulário, caixa de texto, caixa de lista suspensa) aparece para diferentes objetos; Ajuda não associativa significa que após pressionar a tecla F1 em qualquer lugar do programa, a mesma tela de ajuda aparece. Vamos falar sobre esses dois métodos e métodos simples de implementação em Delphi. 1. Ajuda chm não associada No Delphi, você pode chamar diretamente o arquivo de ajuda chm por meio da função ShellExecute, como segue: usashellapi
.......var HWndHelp:Hwnd; i:integer;begin //Verifica se a janela de ajuda já existeHWndHelp:=FindWindow(nil,conHelpTitle); HwndHelp,WM_CLOSE,0,0);i:=ShellExecute(identificador, 'open',Pchar(strCurExePath+'/help.chm''),nil, nil, sw_ShowNormal); se i<>42 então Showmessage('help.chm file de ajuda está danificado!');end; chm Para implementar a ajuda chm sensível ao contexto no Delphi, você pode chamar a função HtmlHelpA no controle HHCTRL.OCX no diretório de sistema do Windows System32. As seguintes etapas são necessárias: 1. Defina a propriedade HelpContext do controle relevante. Por exemplo, o formulário principal frmMain::10100, a caixa de texto edtInput: 10101, a caixa de diálogo dlgReport: 10200, a caixa de listagem combo cbReportEdit: 102012, declare a função HtmlHelpA function HtmlHelpA (hwndcaller:Longint; lpHelpFile:string; wCommand: Inteiro longo;dwData:string): HWND;stdcall; external 'hhctrl.ocx'3 Resposta da tecla F1 //Função pública ShowChmHelp exibe diferentes telas de ajuda. PRocedure ShowChmHelp(sTopic:string); var i:integer;begin i:=HtmlHelpA(application.Handle,Pchar(ExePath+'/help.chm'),HH_DISPLAY_TOPIC,sTopic); arquivo de ajuda chm está danificado '); TfrmMain.FormHelp(Comando: Word; Dados: Inteiro; var CallHelp: Boolean): Boolean;begin case Dados de 10100: ShowChmHelp(frmMain.htm); htm'); fim;fim;função TdlgReport.FormHelp(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;begin case Dados de 10200: ShowChmHelp('dlgReport.htm');10201: ShowChmHelp(cbReportEdit.htm');… else ShowChmHelp(default .htm'); fim;fim;