Delphi為每個(gè)可視構(gòu)件(而非快速按鈕專(zhuān)屬)都提供了Hint
及ShowHint特性,其中Hint屬性指定文本提示盒中的文本,
而ShowHint屬性則決定鼠標(biāo)指向構(gòu)件時(shí)是否顯示文本提示盒,
當(dāng)ShowHint值為T(mén)rue時(shí),顯示文本提示盒。用戶可在對(duì)象監(jiān)
視器(ObjectInspector)的屬性欄中設(shè)置或在程序中修改Hint
及ShowHint屬性。
除此之外,Delphi還在類(lèi)Tapplication中提供了
HintColor、HintPause、HintHidePause、HintShortPause幾
個(gè)屬性來(lái)控制文本提示盒的輸出方式。
一般來(lái)說(shuō),HintColor、HintPause、HintHidePause、
HintShortPause通常在Form的OnCreate事件中設(shè)定它們的值
(如有需要的話),如以下的一段程序。
PRocedureTMainForm.FormCreate(Sender:TObject);
begin
Application.HintPause:Κ0;{使文本提示盒立即出現(xiàn)}
Application.HintPause:ΚclBlue;{以藍(lán)色小方框的
方式出現(xiàn)}
Application.HintHidePause:Κ10000;{延長(zhǎng)停留時(shí)間
為10秒}
為10秒}
Application.HintShortPause:Κ100;
end;
另外,在編程中,我們還可以通過(guò)TApplication的OnHint
事件獲取鼠標(biāo)指向構(gòu)件的Hint文本。
事實(shí)上,Delphi提供的文本提示盒輸出方框、文本字型都
太小,既不美觀亦不易看清。值得慶幸的是,Delphi2.0版提
供了全部構(gòu)件的源代碼,我們可以通過(guò)對(duì)類(lèi)TApplication的
源碼作一些小修改,增加一個(gè)HintFont的屬性,即可象修改
HintColor一樣來(lái)修改文本提示盒的字體、字型大小等。
TApplication是在Forms單元里定義的,因此讓我們打開(kāi)
Forms.pas單元文件來(lái)作以下一些修改:
ProcedureSetHintColor(Value:TColor};
ProcedureSetHintFont(Value:TFont);
{1997.04.19Mynewidea}
PropertyHintColor:
TColorreadFHintColorWriteSetHintColor;
PropertyHintFont:TFontwriteSetHintFont;
{1997.04.19Mynewidea}
ProcedureTApplication.SetHintColor(Value:Color);
上增加一個(gè)過(guò)程
{1997.04.19Mynewidea}
ProcedureTApplication.SetHintFont(Value:TFont);
beginif(ValueΙΛnil)and(FHinWindowΙΛnil)then
FHintWindow.Canvas.Font:ΚValue;
end;{1997.04.19Mynewidea}
別忘了在新增的語(yǔ)句旁作一些必要的注釋?zhuān)缟厦娴?
{1997.04.19Mynewidea},可以很清楚地知道哪些語(yǔ)句是你
自己加進(jìn)去的。
將修改后的Forms.pas存盤(pán),然后重建庫(kù)文件,以后在
你的庫(kù)文件里,類(lèi)TApplication就多了一個(gè)屬性HintFont,
你就可以很輕易的通過(guò)HintFont屬性來(lái)修改文本提示盒的字
體、字型大小了,如以下一段程序:
ProcedureTMainForm.FormCreate(Sender:TObject);
Var
NewHintFont:ΚTFont.Create;
begin
NewHintFont:ΚTFont.Create;
NewHintFont.Name:Κ′楷體-GB2312′;{設(shè)置字體為
楷體}
NewHintFont.Size:Κ12;{設(shè)置字型大小為12}
Application.HintFont:ΚNewHintFont;
end;
此外,Delphi繪制文本提示盒是在類(lèi)THintWindow的方法
ActivateHint中通過(guò)WindowsAPI資源函數(shù)SetWindowPos來(lái)實(shí)
r> ActivateHint中通過(guò)WindowsAPI資源函數(shù)SetWindowPos來(lái)實(shí)
現(xiàn)的,這段代碼在Controls.pas單元文件里,有興趣的讀者
可以進(jìn)一步修改這段代碼以繪制其他任意形狀(如橢圓、圓等)
而不僅僅是矩型方框的文本提示盒!但或許最好的方法是從類(lèi)
THintWindow繼承下來(lái)一個(gè)新類(lèi),并重載Activate??Hint方
法,然后在應(yīng)用程序開(kāi)始處給變量HintWindowClass指派一個(gè)
新類(lèi)實(shí)例
(摘自BBS 水木清華站)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注