Delphi7程式中上下文關聯chm幫助的實現

2021-04-01 04:41:46 字數 3708 閱讀 2401

delphi7

程式中上下文關聯chm幫助的實現

kelvinsdu@sina.*****

:1348513

chm格式的幫助是從

windows98

以後才出現的新的格式,與

.hlp

格式相比,具有更簡單的編輯方式、更豐富的畫面。它是通過

chm製作工具對網頁檔案進行編譯得到的,所以理論上你可以把幫助檔案做的和網頁一樣漂亮。

最簡單的製作方法:先用

fronpage

製作幫助檔案,然後用

html help workshop

或者visual chm等軟體

編譯得到

*.chm

的幫助檔案了。

html help workshop

應用程式中的幫助可分為上下文關聯和非關聯兩種。上下文關聯,是指使用者按

f1鍵後,出現與當前焦點物件(如窗體、文字框、下拉列表框)相關的幫助畫面;不同物件,出現的幫助不同。非關聯幫助,是指在程式任何位置按

f1鍵後,出現同一幫助畫面。

在delphi

中實現上下文關聯的

chm幫助,可以通過呼叫

windows

系統目錄

system32

下的hhctrl.ocx

控制項中的

htmlhelpa

函式實現。

下面就以乙個包含兩個窗體的小例子,談談在

delphi7

中實現上下文關聯

chm幫助的方法。

該程式包含兩個窗體,主窗體

frmmain

和彈出窗體

dlgquery

。如下圖所示

主窗體frmmain

中包含乙個

edit1

和memo1

,查詢對話方塊

dlgquery

中包含乙個

edit1

和***bobox1

。將它們的

helpcontext

屬性設為大於0的整數值。

例如,主窗體

frmmain.helpcontext

=10100

,其中的文字框

edit1.

helpcontext=10101,

memo1.

helpcontext=10102

;對話方塊

dlgquery.helpcontext=

10200

,其中edit1. helpcontext=

10201

,***bobox1. helpcontext=10202

。.將所有窗體的keypreview屬性設為true,響應窗體的鍵盤事件;然後,編寫f1按鍵的響應**,呼叫chm幫助檔案中的頁面。

這樣,在不同位置

(不同對話方塊或者不同控制項)按

f1鍵,程式將彈出與其

helpcontext

相關的幫助頁面。

相關實現**如下:

1.宣告

windows api

函式htmlhelpa

function htmlhelpa (hwndcaller:longint; lphelpfile:string; w***mand:longint;dwdata:string): hwnd;stdcall; external 'hhctrl.ocx'

2.定義呼叫chm幫助檔案的公共函式

procedure showchmhelp(stopic:string);

//公用函式

showchmhelp

,根據不同的引數

顯示不同幫助畫面。

const hh_display_topic=0;

var i:integer;

begin

+'/help.chm'),hh_display_topic,stopic);

if i=0 then

begin

showmessage('help.chm

幫助檔案不存在或者檔案格式損壞!');

exit;

end;

end;

3.設定應用程式的onhelp事件響應函式

procedure tfrmmain.formcreate(sender: tobject);

begin

end;

4. 設定所有窗體的onhelp事件

function tfrmmain.formhelp(***mand: word; data: integer; var callhelp: boolean): boolean;

begin

case data of

10100: showchmhelp('mainfunction.htm');

10101: showchmhelp('projectmanager.htm');

10102: showchmhelp('financeinput.htm');

elseshowchmhelp('systermintroduction.htm');

end;

end;

function t

dlgquery

.formhelp(***mand: word; data: integer; var callhelp: boolean): boolean;

begin

case data of

10200: showchmhelp('quickquery.htm');

10201: showchmhelp('superquery.htm');

elseshowchmhelp('systermintroduction.htm');

end;

end;

5. 所有窗體處理f1按鍵事件

procedure tfrmmain.formkeydown(sender: tobject; var key: word; shift: tshiftstate);

begin

if key=vk_f1 then

begin

end;

end;

procedure t

dlgquery

.formkeydown(sender: tobject; var key: word; shift: tshiftstate);

begin

if key=vk_f1 then

begin

end;

end;

這樣,通過設定相關屬性和編寫有關**,就可以實現程式與

chm格式幫助的關聯。

以上介紹了

delphi7

應用程式與

chm幫助關聯的一種簡單實現方法。如果要實現更複雜的關聯(例如,與幫助頁面內特定位置

/書籤的關聯,請檢視

htmlhelpa

函式的說明。

delphi5

下實現上下文關聯幫助比delphi7下要簡單,不需要編寫窗體formkeydown相應f1的**,請見《

delphi

程式與chm

幫助關聯的簡單實現

如果需要例子程式的源**,可直接與作者聯絡。

kelvinsdu@sina.***

如果需要例子程式的源**,可直接與作者聯絡。

kelvinsdu@sina.***

python中上下文管理,with的用法

在定義foo時,定義了 enter 和 exit 方法,那麼我們例項化的物件obj就是乙個上下文管理器,即含有 enter 和 exit 方法的物件就是上下文管理器。所以在這裡可以用with with 上下文管理器 語句體 當with遇到上下文管理器時,執行順序 先執行上下文管理器的 enter 方...

程式的上下文

一 含義 上下文有程式執行所需要的全部資源和資料 包括函式資料 構成。程式執行的過程就是構建上下文和使用上下文進行解釋和處理的過程。上下文的構建和維護構成了乙個解釋系統的小宇宙,任何事件 過程 元素,只有進入這個上下文才會有含義。程式的執行依賴於上下文,程式執行的一半工作是執行上下文的構建與維護。二...

Flask 應用(程式)上下文和請求上下文

狗書 中有個地方講到應用上下文和請求上下文,博主初次看的時候很懵逼,其實我們要理解這兩個東西,最應該了解it行業的 上下文 是什麼意思,這樣再去理解應用上下文和請求上下文就容易得多了,只是對博主來說是這樣的。上下文,英文context,其完整意思應當是concatenate text,聯絡文字,在i...