Delphi プログラムと Chm ヘルプの関連付けの簡単な実装 著者: Li Xin [email protected] QQ: 1348513 Chm 形式のヘルプは、Windows98 以降にのみ登場した新しい形式で、.hlp 形式と比較して編集方法が簡単で、よりリッチです。グラフィックス。これは、Chm 制作ツールを通じて Web ページ ファイルをコンパイルすることによって取得されるため、理論的には、ヘルプ ファイルを Web ページと同じくらい美しいものにすることができます。最も単純な作成方法: 最初に FronPage を使用してヘルプ ファイルを作成し、次に HTMLHelpWorkshop を使用してそれをコンパイルして *.chm ヘルプ ファイルを取得します。 HTMLHelpWorkshop は Microsoft の Web サイトからダウンロードできます。アプリケーションのヘルプは、コンテキスト依存型と非コンテキスト型に分類できます。コンテキスト依存とは、ユーザーが F1 キーを押すと、現在フォーカスされているオブジェクト (フォーム、テキスト ボックス、ドロップダウン リスト ボックスなど) に関連するヘルプ画面がオブジェクトごとに異なることを意味します。非関連ヘルプとは、プログラム内の任意の場所で F1 キーを押すと、同じヘルプ画面が表示されることを意味します。これら 2 つの方法と、Delphi での簡単な実装方法について説明します。 1. 関連しない chm ヘルプ Delphi では、次のように ShellExecute 関数を通じて chm ヘルプ ファイルを直接呼び出すことができます。
.......var HWndHelp:Hwnd; i:integer;begin //ヘルプ ウィンドウが既に存在するかどうかを確認する HWndHelp:=FindWindow(nil,conHelpTitle); if HwndHelp<>0 then //存在する場合は、SendMessage( HwndHelp ,WM_CLOSE,0,0); i:=ShellExecute(ハンドル, 'open',Pchar(strCurExePath+'/help.chm''),nil, nil, sw_ShowNormal); if i<>42 then Showmessage('help.chm ヘルプ ファイルが破損しています!');end; chm Delphi で状況依存の chm ヘルプを実装するには、Windows システム ディレクトリ System32 にある HHCTRL.OCX コントロール内の HtmlHelpA 関数を呼び出します。次の手順が必要です。 1. 関連するコントロールの HelpContext プロパティを設定します。 たとえば、メイン フォーム frmMain::10100、テキスト ボックス edtInput: 10101、ダイアログ ボックス dlgReport: 10200、コンボ リスト ボックス cbReportEdit: 102012 では、HtmlHelpA 関数 function HtmlHelpA (hwndcaller:Longint; lpHelpFile:string; wCommand:倍長整数;dwData :string): HWND;stdcall; external 'hhctrl.ocx'3 F1 キー応答 //パブリック関数 ShowChmHelp はさまざまなヘルプ画面を表示します。 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 ヘルプ ファイルが破損しています! '); 終了;終了;….関数TfrmMain.FormHelp(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;begin case データ 10100: ShowChmHelp(frmMain.htm); 10101: ShowChmHelp('edtInput.htm');… else ShowChmHelp(default. html'); 終了;終了;関数TdlgReport.FormHelp(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;begin case Data of 10200: ShowChmHelp('dlgReport.htm');10201: ShowChmHelp(cbReportEdit.htm');… else ShowChmHelp(default) .htm'); 終了;終了;