TApplication部件的OnHelp事件響應幫助事件。 當應用程序接收到一個所需的幫助
時,發生OnHelp事件。使用OnHelp事件可以在需要幫助時定義一些特殊過程。 以下的例子改變了應用程序的幫助文件,AppHelp函數用來處理OnCreate事件。
function TForm1.AppHelp(Command.Word;Data : lontint) : Boolean
begin
if OpenDialog1.Exeeute then
Application HelpFile := OpenDialog1.FileName;
end;
11.2.2 通用對話框中使用幫助系統
Delphi通用對話框中都能顯示一個幫助按鈕。如果程序顯示了對話框中的幫助按鈕,應該確保應用程序的幫助文件中有相應的主題。
在通用對話框中使用幫助系統,要做到以下三點:
1. 把對話框的Option|SHOWHelp屬性設置成true,這樣在程序運行時將出現幫助按鈕。 ShowHelp 屬性與其部件的名字相關, 例如字體對話框的 ShowHelp 屬性稱為fdShowHelp。
2. 為對話框部件定義幫助文件。
3. 定義應用程序的文件名。
11.3 Delphi幫助提示(Hint)的應用
使用Delphi集成開發環境時,用戶常把鼠標置於程序部件上,如加速按鈕,對齊按鈕等。鼠標在部件上停留超過一定時間後,Delphi將會顯示一個彈出窗口, 裡面有部件名稱和概述。
這就是Delphi的幫助提示。Delphi的應用程序可通過定義ShowHint 屬性實現幫助提示。
11.3.1 幫助提示的顯示
ShowHint屬性可應用於所有的控件和應用程序部件,控件的ShowHint 屬性含義與程序的稍有不同。控件的ShowHint屬性決定某一控件是否顯示幫助提示,如果ShowHint 是真值,當用戶把鼠標置於控件之上超過一定時間後,控件將出現幫助提示。如果是假值,則不出現提示。控件是否顯示還決定於控件的ParentShowHind屬性。如果 ParentShowHint是真值,控件的父類的ShowHint屬性將決定控件是否顯示幫助提示。 假如有一個分組框和一個檢查框,分組框是檢查框的父件。表11.3說明了子件與父件的 ShowHint,ParentShowHint屬性設置對子件幫助提示的影響。
表11.3 Hint屬性設置對幫助提示的影響
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
分組框ShowHint 檢查框ParentShowHint 檢查框ShowHint 幫助提示
─────────────────────────────────────
T或F F T 顯示
T T F 顯示
F T T 不顯示
T或F F F 不顯示
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
T表示真值,F表示假值
把控件的ShowHint屬性設置成真值,系統自動將ParentShowHint設置成假值。應用程序部件的ShowHint屬性可以決定整個程序的幫助提示是否有效。如果應用程序的ShowHint 屬性為真,程序中各部件的幫助提示才有效, 但是否顯示還要取決於部件的SHowHint, ParentShowHint及其父件的ShowHint屬性,如果應用程序的ShowHint屬性為假值,無論程序部件的屬性如何設置,程序中所有幫助提示都無效。
Hint屬性是顯示在幫助提示框中的文本字符。Hint屬性應用於所有控件,包括應用程序部件菜單部件。因為應用程序部件不是可視部件,因此不能在Object Inspector 窗口中定義Hint屬性。但可以在定義部件的Hint屬性時同時定義應用程序部件的Hint 屬性,定義時只需用“|"字符會分開,例如:
Edit.Hint := 'Name |Enter Name in the edit box'
等價於
Edit.Hint := Name;
Application.Hint := Enter Name in the edit box
應用程序的Hint屬性可用在OnHint事件。
如果只定義了一個值,Delphi把這個值同時賦給部件和應用程序部件的Hint屬性。 如果應用程序的ShowHint屬性為假值,所有的幫助提示將不顯示, 但可以利用程序部件的Hint屬性顯示其它提示,如狀態條等。
當某一部件的SHowHint屬性為真, 但又沒有定義Hint 屬性, 如果此時文件定義了Hint屬性,則此部件將使用文件的Hint值。
11.3.2 OnHint事件
當用戶把鼠標放在某一部件,而該部件的Hint 值不為空值,此時發生OnHint事件。利用OnHint事件可以執行一些特殊的操作。
最常用是利用OnHint事件顯示狀態條的標題,狀態條是用面板來實現的。下面舉例說明。
這個例子使用了面板部件,菜單,一個編輯框。菜單可隨意設計, 但需記住每個菜單項的Hint 值。 另外, 定義編輯框的Hint 值, 把面板置於窗體底部( 將Align 屬性置於dBotton)把面板標題置於左端(將Alignment屬性置於taleftJustify)。
OnHint 事件是應用程序部件的事件,而應用程序部件是非可視部件,不能使用Object Inspector窗體定義事件,必須編寫自己的OnHint事件。