Delphi為每個可視構件(而非快速按鈕專屬)都提供了Hint 及ShowHint特性,其中Hint屬性指定文本提示盒中的文本, 而ShowHint屬性則決定鼠標指向構件時是否顯示文本提示盒, 當ShowHint值為True時,顯示文本提示盒。用戶可在對象監 視器(Object Inspector)的屬性欄中設置或在程序中修改Hint 及ShowHint屬性。
除此之外,Delphi還在類TApplication中提供了 HintColor、HintPause、HintHidePause、HintShortPause幾個屬性來控制文本提示盒的輸出方式。 一般來說,HintColor、HintPause、HintHidePause、 HintShortPause通常在Form的OnCreate事件中設定它們的值 (如有需要的話),如以下的一段程序。
ProcedureTMainForm.FormCreate(Sender:TObject);
begin
Application.HintPause:0;{使文本提示盒立即出現}
Application.HintPause:clBlue;{以藍色小方框的 方式出現} Application.HintHidePause:10000;{延長停留時間 為10秒} Application.HintShortPause:100;
end;
另外,在編程中,我們還可以通過TApplication的OnHint 事件獲取鼠標指向構件的Hint文本。 事實上,Delphi提供的文本提示盒輸出方框、文本字型都太小,既不美觀亦不易看清。<
值得慶幸的是,Delphi5提供了全部構件的源代碼,我們可以通過對類TApplication的源碼作一些小修改,增加一個HintFont的屬性,即可象修改 HintColor一樣來修改文本提示盒的字體、字型大小等。 TApplication是在Forms單元裡定義的,因此讓我們打開 Forms.pas單元文件來作以下一些修改:
ProcedureSetHintColor(Value:TColor};
ProcedureSetHintFont(Value:TFont); {1997.04.19Mynewidea}
PropertyHintColor: TColorreadFHintColorWriteSetHintColor;
PropertyHintFont:TFontwriteSetHintFont; {1997.04.19Mynewidea}
ProcedureTApplication.SetHintColor(Value:Color); 上增加一個過程 {1997.04.19Mynewidea}
ProcedureTApplication.SetHintFont(Value:TFont);
begin
if(Value nil)and(FHinWindow nil)then
FHintWindow.Canvas.Font:Value;
end;{1997.04.19Mynewidea}
別忘了在新增的語句旁作一些必要的注釋,如上面的 {1997.04.19Mynewidea},可以很清楚地知道哪些語句是你自己加進去的。
將修改後的Forms.pas存盤,然後重建庫文件,以後在你的庫文件裡,類TApplication就多了一個屬性HintFont, 你就可以很輕易的通過HintFont屬性來修改文本提示盒的字 體、字型大小了,如以下一段程序:
ProcedureTMainForm.FormCreate(Sender:TObject);
Var NewHintFont:TFont.Create;
begin NewHintFont:TFont.Create;
NewHintFont.Name:′楷體-GB2312′;{設置字體為 楷體}
NewHintFont.Size:12;{設置字型大小為12}
Application.HintFont:NewHintFont;
end;
此外,Delphi繪制文本提示盒是在類THintWindow的方法 ActivateHint中通過WindowsAPI資源函數SetWindowPos來實 現的,這段代碼在Controls.pas單元文件裡,有興趣的讀者 可以進一步修改這段代碼以繪制其他任意形狀(如橢圓、圓等) 而不僅僅是矩型方框的文本提示盒!但或許最好的方法是從類 THintWindow繼承下來一個新類,並重載Activate