| 導購 | 订阅 | 在线投稿
分享
 
 
 

Delphi的Hint(1)

來源:互聯網網民  2006-01-31 23:38:07  評論

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的控件作如下設置: 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來實現,在網上找一個漫畫式提示,有很多文章可用。這裏不再說述。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 
 熱帖排行
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有