程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi程序與Chm幫助關聯的簡單實現

Delphi程序與Chm幫助關聯的簡單實現

編輯:Delphi
Chm格式的幫助是從Windows98以後才出現的新的格式,與.hlp格式相比,具有更簡單的編輯方式、更豐富的畫面。它是通過Chm制作工具對網頁文件進行編譯得到的,所以理論上你可以把幫助文件做的和網頁一樣漂亮。   最簡單的制作方法:先用FronPage制作幫助文件,然後用HTML Help Workshop編譯就可以得到*.chm的幫助文件了。Html Help Workshop可以到微軟的網站上去下載。   應用程序中的幫助可分為上下文關聯和非關聯兩種。上下文關聯,是指用戶按F1鍵後,出現與當前焦點對象(如窗體、文本框、下拉列表框)相關的幫助畫面;不同對象,出現的幫助不同。非關聯幫助,是指在程序任何位置按F1鍵後,出現同一幫助畫面。下面就這兩種方式,談談在Delphi中的簡單實現方法。   一、非關聯的chm幫助 在Delphi中,你可以通過ShellExecute函數直接調用chm幫助文件,具體如下: uses shellapi
  ....... var  HWndHelp:Hwnd;      i:integer; begin    //檢查幫助窗口是否已經存在    HWndHelp:=FindWindow(nil,conHelpTitle);    if HwndHelp<>0 then  // 如存在則關閉         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 幫助文件損壞!'); end;   二、上下文關聯的chm幫助    在Delphi中實現上下文關聯的chm幫助,可以調用Windows系統目錄System32下的HHCTRL.OCX控件中的HtmlHelpA函數實現。 需要以下幾個步驟: 1 設置相關控件的HelpContext屬性。   例,主窗體frmMain::10100 ,其中的文本框 edtInput:10101 對話框dlgReport:10200 ,其中的組合列表框 cbReportEdit:10201   2 聲明HtmlHelpA函數   function HtmlHelpA (hwndcaller:Longint; lpHelpFile:string; wCommand:Longint;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 幫助文件損壞!');       exit;   end; end; …. function TfrmMain.FormHelp(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean; begin    case Data of      10100: ShowChmHelp(frmMain.htm);      10101: ShowChmHelp('edtInput.htm'); …      else  ShowChmHelp(default.htm');    end; end; function 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');    end; end;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved