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...