後一頁
前一頁
回目錄
回首頁
第十一章 Delphi應用程式的應用(二)

所有的應用程式都是TApplication的派生類。TApplication有三種方法呼叫在線輔助敘述系統。

  HelpContext方法可呼叫WinHelp(關於Winhelp的內容見上節)。它把HelpFile 中的檔案標簽和一個文本代碼傳遞給WinHelpHelpFileTApplication的字元串型式的屬性,專門用來存放Help文件的。如果HelpFile屬性是空字元,HelpContext返回假值,其它情況均返回真值。

  下面的例子使用窗體上的一個按鈕,當用戶按一下按鈕,螢幕出現DATA.HLP文件中714號主題內容。 

  procedure TForm2.Bin1Click(Snder : TObject)

begin

Application.HelpFile := DATAHLP;

Application.HelpContext(714)

   end; 

        HelpJump方法可呼叫WinHelp。它傳遞HelpFile屬性中的檔案標簽和輔助敘述文件的內容字元串(詳見11.1)。內容字元串是輔助敘述文件中唯一辨識輔助敘述主題的字元串。如果HelpFile 屬性是空字元,HelpFJump返回假值,其它情況均返回真值。

  下面的例子使用了窗體上的一個按鈕。當用戶按一下按鈕, 輔助敘述系統調出了 DELPH2.HLP文件中的Default屬性。因為Default屬性的內容字元串是VclDefaultProperty。 

procedure TForm1.Tbn|Click(Sender : TObject)

begin

Application.HelpFile := 'DELPHI.HLP';

Application.HelpJump ('VclDefaultProperty');

end 

HelpCommand方法能快速存取WinHelp函數中的各種命令。根據這些命令WinHelp執行不同的動作。表11.2WinHelp函數的有關資訊。

  BOOL WinHelp(hwd,LpszHelpFile,fuCommand,dwData) 

11.2 WinHelp的參數及含義

 ───────────────────────────────

  參數     型式     描

———————————————————————————————

  hwnd HWND   請求輔助敘述的視窗

  LpszHelpFile LPSTK 待顯示的輔助敘述文件的檔案標簽

  fuCommand UNIT 請求的輔助敘述型式

  dwData DWORD 輔助敘述所需的描述表或關鍵字

 ─────────────────────────────── 

  HelpCOmmandWinHelp傳遞fuCommanddwDatafuCommand 是輔助敘述型式可為表11.3中的列值之一。 

11.3 fuCommand的取值及含義

 ───────────────────────────────

  值         

———————————————————————————————

  HELP_LONTEXT  顯示dwData指定描述長的輔助敘述資訊

  HELP_CONTENTS  顯示輔助敘述的內容主題

  HELP_SET_LONTENTS 如果dwDataOrol04則在一個彈出

             式視窗中顯示Help主題

  HELP_HELP PONHELP 顯示Help應用程式的自身輔助敘述,函

             數忽略lpszHelpFiledwData參數

  HELP_INDEX 顯示輔助敘述文件的索引

  HELP_KEY 顯示dwData指定的關鍵字的輔助敘述

  HELP_MULTIKEY 顯示一個關鍵字的輔助敘述,該關鍵字

             在一個可變關鍵字表中

  HELP_QUIT Help應用程式報告文件不再使用

  HELP_SETNDEX dwData指定的描述符作為輔助敘述文

              件的目前索引

 ─────────────────────────────── 

  dwData參數的含義依賴於fuCommand的設定,如果fuCommandHELP_CONTEXTdwData為一個32 位的無符號整數,它包含一個描述表標識號:如果 fuCommand HELP_KEYdwData 則為一個指定長指標,所指的字元串是輔助敘述的關鍵字。 如果 fuCommand HELPMULLTIKEYdwData則指向一個MULTIKEYHELP數據結構的長指標。

  下面的例子使用了窗體中的按鈕。 當用戶按一下按鈕輔助敘述系統將顯示指定文件的輔助敘述內容主題。 

  procedure TForm1.Bin1Click(Sender : TObject)

begin

Application.HelpFile := 'MyHlep.HLP'

Application.HelpCommand(HELP_CONTENTS,0);

end; 

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敘述了子件與父件的 ShowHintParentShowHint屬性設定對子件輔助敘述提示的影響。 

11.3 Hint屬性設定對輔助敘述提示的影響

 ─────────────────────────────────────

  分群群組框ShowHint 檢查框ParentShowHint 檢查框ShowHint 輔助敘述提示

—————————————————————————————————————

  TF F T 顯示

  T T F 顯示

 F T T 不顯示

  TF         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事件。

  首先,在TForm1物件中宣稱DisplayHint方法,並在單元的implementation部分編寫實現代碼。在DisplayHint方法中,把應用程式的Hint屬性賦給面板的標題。另一個重要問題是必須把DisplayHint方法作為處理OnHint事件的方法。窗體的OnCreate事件的代碼解決了這個問題。

  下面列出了程式的完整代碼。當用戶執行程式, 把滑鼠置於選擇表或部件之上,在窗體的狀態條中將出現定義的提示。 

Type

TForm1 = class(TForm)

Button1: TButton;

Panel1: TPanel;

Edit1: TEdit;

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

procedure DisplayHint(Sender: TObject);

end;

var

Form1: TForm1;

implementation

{$R *.FRM}

procedure TForm1.DisplayHint(Sender: TObject);

begin

Panel1.Caption := Application.Hint;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Application.OnHint := DisplayHint;

end; 

11.4 自定義部件的輔助敘述裝設 

  Delphi有一個功能強大的輔助敘述搜詢引擎,叫做多層輔助敘述,能為自定義的部件提供“上下文敏感”輔助敘述。多層輔助敘述允許把自定義部件的多個輔助敘述文件裝設成Delphi 的輔助敘述序列,以提供給用戶一種內層存取輔助敘述文件的方式,用戶有三種方法存取輔助敘述文件:

  1. 設計狀態選中部件,然後按F1

  2. 在自定義部件的Object Inspector視窗中按F1

  3. Delphi輔助敘述系統選擇搜詢主題。

  Delphi 在提供這種輔助敘述機制時, 不需要編寫額外的代碼。 有些文件是自定義部件輔助敘述系統所必須的, 以下介紹裝設的具體步驟。

  裝設所需的文件

  STEREO.PAS     自定義部件的源代碼

STEREO.RES     自定義部件的資源文件

STEREO.DCR     工具調色板圖示0

STEREO.HRJ     輔助敘述工程文件

STEREO.RTF     輔助敘述源文件

STEREO.HLP     自定義部件的輔助敘述文件

STEREO.KUF     關鍵字文件

  裝設步驟 

11.4.1 裝設關鍵字文件 

1. 結束Delphi整合開發環境

2. 備份\delphi\bin\delphi.hdx

3. 執行HelpInst應用程式

4. 打開\delphi\bin\delphi.hdx

5. 選擇keywords |Add選擇表項並選擇Sberee.buf

6. 選擇File|Source選擇表項

7. 結束HelpInst

8. 因為WinHelp需要知道STEREO.HLP的位置所以要做以下其中之一:

    a. STEREO.Hlp復制到\delphi:\bin\目錄下;

    b. WinHELP.INI文件中加上stereo.hlp=\usehelp; 

11.4.2 裝設自定義部件 

1. 進入Delphi整合開發環境

2. 選擇Option|Install Components選擇表項

3. 選擇Add

4. 選擇Browse

5. 輸入\stereo

6. 選擇OK 

11.4.3 激活自定義部件輔助敘述系統 

  1. TstereoButtonTStereeSpeaker部件從部件調色板上的Sample頁拖至視窗;

2. 選擇TStereoButton部件並按F1,螢幕上出現關於TStereoButton的輔助敘述資訊;

3. Object Inspector窗體口選擇IsOn屬性並按F1,螢幕顯示IsOn屬性;

4. 在主選擇表中選擇Help|Topic選擇表項,並搜詢Stereo 主題, 螢幕將出現STEREO

.HLP的輔助敘述內容。

 



後一頁
前一頁
回目錄
回首頁