Delphi的Hint(1)

Delphi中使用提示是如此簡單,只需將欲使用Hint的控件作如下設置:

ShowHint := True;

Hint := ‘提示信息’;

不必寫一行代碼,相當方便。

但有時我們又想自己定制提示的效果,使其看起來更美觀更具個人特色,沒關系,Delphi完全有辦法讓你寫出自己喜歡的Hint效果。

Delphi的Hint功能實現歸類在Application類中,所以我們可以在Application類中看到數個關于Hint的屬性,這些屬性可以設置Hint窗口的顔色,停留時間,出現時間等,設置了這些屬性,將對整個工程的Hint功能起到影響。這樣做的好處當然是統一了Hint的風格,並且讓其他類不必去理會Hint的實現。

我們可以建一個簡單的工程,並放一個按鈕,將按鈕的ShowHint設爲True,再對Hint設一個值。運行程序,當光標指到按鈕上時,便會出現一個提示窗口。

但如果我們在主窗口的創建事件中寫下:

procedure TForm1.FormCreate(Sender: TObject);

begin

Application.ShowHint := False;

end;

這些再運行程序,就不再有提示出現了,由此可知Application的ShowHint控制整個工程的Hint是否顯示。

如果你對于平常所見的Hint窗口的顔色感到厭煩,那麽可以設Application的HintColor爲其他顔色。但此時有一個問題,如果HintColor設爲黑色,則提示字體也爲黑色,就看不到提示信息了。爲此,我們得了解另一個全局對象,事實上當程序運行時,會創建三個全局對象:Application,Screen,Mouse,三個對象的職責非常明顯。Screen封閉了運行的工程在屏幕上的狀態,它有一個HintFont的屬性,允許你設置提示信息的字體。

我們可以寫如下的代碼:

procedure TForm1.Button1Click(Sender: TObject);

begin

Application.HintColor := clBlack;

Screen.HintFont.Color := clWindow;

Screen.HintFont.Size := 14;

end;

運行程序看看效果,提示字體變爲白色,且變大了。

另外Application有這三個屬性:

HintHidePause,HintPause,HintShortPause,控制著提示窗顯示的時間等。HintHidePause指定提示窗口在屏幕上顯示的時間,以毫秒爲單位。HintPause則指定當你將光標移到有提示的控件上時,經過多長時間才會出現提示窗口,以毫秒爲單位。而HintShortPause呢表示當你快速移動光標經過一組有Hint的控件時,顯示Hint的間隔。比如有兩個有Hint的控鈕,當你的光標快速從Btn1移到Btn2時,Hint經過HintShortPause毫秒才會顯示出來。

Application中有一個比較特殊的屬性Hint,我們不禁要奇怪,Hint指定的是那個控件的提示呢。其實Hint屬性的一個很大的用途是給那些沒有辦法直接出現Hint窗口的控件一個機會,使它們能夠通過別的方式出現提示。比如菜單,我們沒有辦法使菜單出現Hint窗口,但我們可以使菜單的Hint出現在狀態欄上的。

我們在上面的工程主窗口中加一個狀態欄,並在加一個菜單控件,設置幾個菜單項,並給每個菜單薦的Hint屬性設置一些字符串。

然後寫下:

procedure TForm1.FormCreate(Sender: TObject);

begin

Application.OnHint := WhenHint;

end;

procedure TForm1.WhenHint(sender: TObject);

begin

StatusBar1.SimpleText := Application.Hint;

end;

運行程序,當你指到菜單項時,看,狀態欄上出現了提示了。

上面可以看到,通過一些簡單的代碼,就可以使得提示別具特色。但人們是永遠不會滿足的,他們總想能不能做更好看的Hint呢,甚至對Hint的窗口風格提出了要求。Delphi的工程師們早想到了這一點,他們通過類的繼承設定了一個提示窗口的父類,即我們看到的那個Hint窗口,我們可以通過繼承它並覆蓋它所提供的虛擬方法來寫自己的提示窗口。

去讀一讀HintWindow的源碼吧,你只要覆蓋幾個虛擬方法,你就可以做出很漂亮的提示出來了。

Delphi的Hint雖然簡單易用,但卻不夠靈活,因爲它提供了統一的風格,所以你不能指定某個提示爲錯誤指示,可某個提示爲警告提示。關于這個,我們要用API來實現,在網上找一個漫畫式提示,有很多文章可用。這裏不再說述。

 
Delphi的Hint(1)
Delphi中使用提示是如此簡單,只需將欲使用Hint的控件作如下設置:ShowHint := True;Hint := ‘提示信息’;不必寫一行代碼,相當方便。 但有時我們又想自己定制提示的效果,使其看起來更美觀更具個人特色,...查看完整版>>Delphi的Hint(1)
 
使用"hint"設置視圖內的SQL查詢方式
本文主要介紹了Oracle數據庫如何在有視圖的SQL中使用hint(提示)來設置視圖內的SQL查詢方式。 在實際的工作中,很多人經常會用到視圖訪問,且視圖一般都是已經寫好了,但在許多情況下,並不太適宜在視圖內直接加hint。...查看完整版>>使用"hint"設置視圖內的SQL查詢方式
 
改造Hint輸出方式
  elphi爲每個可視構件(而非快速按鈕專屬)都提供了Hint及ShowHint特性,其中Hint屬性指定文本提示盒中的文本,而ShowHint屬性則決定鼠標指向構件時是否顯示文本提示盒,當ShowHint值爲True時,顯示文本提示盒。用...查看完整版>>改造Hint輸出方式
 
如何自定義提示窗口(Hint Window)
  // 自定義 THintWindow 類class TCcrunHintWindow : public THintWindow{ bool FActivating; __fastcall TCcrunHintWindow(TComponent* Owner) : THintWindow(Owner) { Canvas->F...查看完整版>>如何自定義提示窗口(Hint Window)
 
常見Oracle HINT的用法
  1. /*+ALL_ROWS*/  表明對語句塊選擇基于開銷的優化方法,並獲得最佳吞吐量,使資源消耗最小化.  例如:  SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';   2. /*+FIRST...查看完整版>>常見Oracle HINT的用法