Hint 多樣性

普通Hint:直接設置窗體和組件的ShowHint屬性爲True,並在其Hint中輸入文字內容即可。
解釋:ShowHint屬性則決定鼠標指向構件時是否顯示文本提示盒,Hint屬性指定文本提示盒中的文本。用戶可在對象監視器(ObjectInspector)的屬性欄中設置或在程序中修改Hint及ShowHint屬性。 
   
經改造的Hint: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提供的文本提示盒輸出方框、文本字型都太小,既不美觀亦不易看清。值得慶幸的是,Delphi2.0版提供了全部構件的源代碼,我們可以通過對類TApplication的源碼作一些小修改,增加一個HintFont的屬性,即可象修改HintColor一樣來修改文本提示盒的字體、字型大小等。
    
TApplication是在Forms單元裏定義的,因此讓我們打開Forms
.pas單元文件來作以下一些修改: 

ProcedureSetHintColor(Value
:TColor);
     ProcedureSetHintFont(Value
:TFont);
    
PropertyHintColor
:TColorreadFHintColorWriteSetHintColor;
     PropertyHintFont
:TFontwriteSetHintFont;
    
ProcedureTApplication
.SetHintColor(Value:Color);
    
ProcedureTApplication
.SetHintFont(Value:TFont);
     begin
       
if (ValueΙΛnil) and (FHinWindowΙΛnil) then
         FHintWindow
.Canvas.Font:=Value;
     end;
     別忘了在新增的語句旁作一些必要的註釋,可以很清楚地知道哪些語句是你自己加進去的。
    
將修改後的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 Hint方法,然後在應用程序開始處給變量HintWindowClass指派一個新類實例。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章