Delphi中使用提示是如此簡(jiǎn)單,只需將欲使用Hint的控件作如下設(shè)置:
ShowHint := True;
Hint := ‘提示信息’;
不必寫一行代碼,相當(dāng)方便。
但有時(shí)我們又想自己定制提示的效果,使其看起來更美觀更具個(gè)人特色,沒關(guān)系,Delphi完全有辦法讓你寫出自己喜歡的Hint效果。
Delphi的Hint功能實(shí)現(xiàn)歸類在Application類中,所以我們可以在Application類中看到數(shù)個(gè)關(guān)于Hint的屬性,這些屬性可以設(shè)置Hint窗口的顏色,停留時(shí)間,出現(xiàn)時(shí)間等,設(shè)置了這些屬性,將對(duì)整個(gè)工程的Hint功能起到影響。這樣做的好處當(dāng)然是統(tǒng)一了Hint的風(fēng)格,并且讓其他類不必去理會(huì)Hint的實(shí)現(xiàn)。
我們可以建一個(gè)簡(jiǎn)單的工程,并放一個(gè)按鈕,將按鈕的ShowHint設(shè)為True,再對(duì)Hint設(shè)一個(gè)值。運(yùn)行程序,當(dāng)光標(biāo)指到按鈕上時(shí),便會(huì)出現(xiàn)一個(gè)提示窗口。
但如果我們?cè)谥鞔翱诘膭?chuàng)建事件中寫下:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowHint := False;
end;
這些再運(yùn)行程序,就不再有提示出現(xiàn)了,由此可知Application的ShowHint控制整個(gè)工程的Hint是否顯示。
如果你對(duì)于平常所見的Hint窗口的顏色感到厭煩,那么可以設(shè)Application的HintColor為其他顏色。但此時(shí)有一個(gè)問題,如果HintColor設(shè)為黑色,則提示字體也為黑色,就看不到提示信息了。為此,我們得了解另一個(gè)全局對(duì)象,事實(shí)上當(dāng)程序運(yùn)行時(shí),會(huì)創(chuàng)建三個(gè)全局對(duì)象:Application,Screen,Mouse,三個(gè)對(duì)象的職責(zé)非常明顯。Screen封閉了運(yùn)行的工程在屏幕上的狀態(tài),它有一個(gè)HintFont的屬性,允許你設(shè)置提示信息的字體。
我們可以寫如下的代碼:
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.HintColor := clBlack;
Screen.HintFont.Color := clWindow;
Screen.HintFont.Size := 14;
end;
運(yùn)行程序看看效果,提示字體變?yōu)榘咨?,且變大了?BR> 另外Application有這三個(gè)屬性:
HintHidePause,HintPause,HintShortPause,控制著提示窗顯示的時(shí)間等。HintHidePause指定提示窗口在屏幕上顯示的時(shí)間,以毫秒為單位。HintPause則指定當(dāng)你將光標(biāo)移到有提示的控件上時(shí),經(jīng)過多長(zhǎng)時(shí)間才會(huì)出現(xiàn)提示窗口,以毫秒為單位。而HintShortPause呢表示當(dāng)你快速移動(dòng)光標(biāo)經(jīng)過一組有Hint的控件時(shí),顯示Hint的間隔。比如有兩個(gè)有Hint的控鈕,當(dāng)你的光標(biāo)快速?gòu)腂tn1移到Btn2時(shí),Hint經(jīng)過HintShortPause毫秒才會(huì)顯示出來。
Application中有一個(gè)比較特殊的屬性Hint,我們不禁要奇怪,Hint指定的是那個(gè)控件的提示呢。其實(shí)Hint屬性的一個(gè)很大的用途是給那些沒有辦法直接出現(xiàn)Hint窗口的控件一個(gè)機(jī)會(huì),使它們能夠通過別的方式出現(xiàn)提示。比如菜單,我們沒有辦法使菜單出現(xiàn)Hint窗口,但我們可以使菜單的Hint出現(xiàn)在狀態(tài)欄上的。
我們?cè)谏厦娴墓こ讨鞔翱谥屑右粋€(gè)狀態(tài)欄,并在加一個(gè)菜單控件,設(shè)置幾個(gè)菜單項(xiàng),并給每個(gè)菜單薦的Hint屬性設(shè)置一些字符串。
然后寫下:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnHint := WhenHint;
end;
procedure TForm1.WhenHint(sender: TObject);
begin
StatusBar1.SimpleText := Application.Hint;
end;
運(yùn)行程序,當(dāng)你指到菜單項(xiàng)時(shí),看,狀態(tài)欄上出現(xiàn)了提示了。
上面可以看到,通過一些簡(jiǎn)單的代碼,就可以使得提示別具特色。但人們是永遠(yuǎn)不會(huì)滿足的,他們總想能不能做更好看的Hint呢,甚至對(duì)Hint的窗口風(fēng)格提出了要求。Delphi的工程師們?cè)缦氲搅诉@一點(diǎn),他們通過類的繼承設(shè)定了一個(gè)提示窗口的父類,即我們看到的那個(gè)Hint窗口,我們可以通過繼承它并覆蓋它所提供的虛擬方法來寫自己的提示窗口。
去讀一讀HintWindow的源碼吧,你只要覆蓋幾個(gè)虛擬方法,你就可以做出很漂亮的提示出來了。
Delphi的Hint雖然簡(jiǎn)單易用,但卻不夠靈活,因?yàn)樗峁┝私y(tǒng)一的風(fēng)格,所以你不能指定某個(gè)提示為錯(cuò)誤指示,可某個(gè)提示為警告提示。關(guān)于這個(gè),我們要用API來實(shí)現(xiàn),在網(wǎng)上找一個(gè)漫畫式提示,有很多文章可用。這里不再說述。
ShowHint := True;
Hint := ‘提示信息’;
不必寫一行代碼,相當(dāng)方便。
但有時(shí)我們又想自己定制提示的效果,使其看起來更美觀更具個(gè)人特色,沒關(guān)系,Delphi完全有辦法讓你寫出自己喜歡的Hint效果。
Delphi的Hint功能實(shí)現(xiàn)歸類在Application類中,所以我們可以在Application類中看到數(shù)個(gè)關(guān)于Hint的屬性,這些屬性可以設(shè)置Hint窗口的顏色,停留時(shí)間,出現(xiàn)時(shí)間等,設(shè)置了這些屬性,將對(duì)整個(gè)工程的Hint功能起到影響。這樣做的好處當(dāng)然是統(tǒng)一了Hint的風(fēng)格,并且讓其他類不必去理會(huì)Hint的實(shí)現(xiàn)。
我們可以建一個(gè)簡(jiǎn)單的工程,并放一個(gè)按鈕,將按鈕的ShowHint設(shè)為True,再對(duì)Hint設(shè)一個(gè)值。運(yùn)行程序,當(dāng)光標(biāo)指到按鈕上時(shí),便會(huì)出現(xiàn)一個(gè)提示窗口。
但如果我們?cè)谥鞔翱诘膭?chuàng)建事件中寫下:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowHint := False;
end;
這些再運(yùn)行程序,就不再有提示出現(xiàn)了,由此可知Application的ShowHint控制整個(gè)工程的Hint是否顯示。
如果你對(duì)于平常所見的Hint窗口的顏色感到厭煩,那么可以設(shè)Application的HintColor為其他顏色。但此時(shí)有一個(gè)問題,如果HintColor設(shè)為黑色,則提示字體也為黑色,就看不到提示信息了。為此,我們得了解另一個(gè)全局對(duì)象,事實(shí)上當(dāng)程序運(yùn)行時(shí),會(huì)創(chuàng)建三個(gè)全局對(duì)象:Application,Screen,Mouse,三個(gè)對(duì)象的職責(zé)非常明顯。Screen封閉了運(yùn)行的工程在屏幕上的狀態(tài),它有一個(gè)HintFont的屬性,允許你設(shè)置提示信息的字體。
我們可以寫如下的代碼:
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.HintColor := clBlack;
Screen.HintFont.Color := clWindow;
Screen.HintFont.Size := 14;
end;
運(yùn)行程序看看效果,提示字體變?yōu)榘咨?,且變大了?BR> 另外Application有這三個(gè)屬性:
HintHidePause,HintPause,HintShortPause,控制著提示窗顯示的時(shí)間等。HintHidePause指定提示窗口在屏幕上顯示的時(shí)間,以毫秒為單位。HintPause則指定當(dāng)你將光標(biāo)移到有提示的控件上時(shí),經(jīng)過多長(zhǎng)時(shí)間才會(huì)出現(xiàn)提示窗口,以毫秒為單位。而HintShortPause呢表示當(dāng)你快速移動(dòng)光標(biāo)經(jīng)過一組有Hint的控件時(shí),顯示Hint的間隔。比如有兩個(gè)有Hint的控鈕,當(dāng)你的光標(biāo)快速?gòu)腂tn1移到Btn2時(shí),Hint經(jīng)過HintShortPause毫秒才會(huì)顯示出來。
Application中有一個(gè)比較特殊的屬性Hint,我們不禁要奇怪,Hint指定的是那個(gè)控件的提示呢。其實(shí)Hint屬性的一個(gè)很大的用途是給那些沒有辦法直接出現(xiàn)Hint窗口的控件一個(gè)機(jī)會(huì),使它們能夠通過別的方式出現(xiàn)提示。比如菜單,我們沒有辦法使菜單出現(xiàn)Hint窗口,但我們可以使菜單的Hint出現(xiàn)在狀態(tài)欄上的。
我們?cè)谏厦娴墓こ讨鞔翱谥屑右粋€(gè)狀態(tài)欄,并在加一個(gè)菜單控件,設(shè)置幾個(gè)菜單項(xiàng),并給每個(gè)菜單薦的Hint屬性設(shè)置一些字符串。
然后寫下:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnHint := WhenHint;
end;
procedure TForm1.WhenHint(sender: TObject);
begin
StatusBar1.SimpleText := Application.Hint;
end;
運(yùn)行程序,當(dāng)你指到菜單項(xiàng)時(shí),看,狀態(tài)欄上出現(xiàn)了提示了。
上面可以看到,通過一些簡(jiǎn)單的代碼,就可以使得提示別具特色。但人們是永遠(yuǎn)不會(huì)滿足的,他們總想能不能做更好看的Hint呢,甚至對(duì)Hint的窗口風(fēng)格提出了要求。Delphi的工程師們?cè)缦氲搅诉@一點(diǎn),他們通過類的繼承設(shè)定了一個(gè)提示窗口的父類,即我們看到的那個(gè)Hint窗口,我們可以通過繼承它并覆蓋它所提供的虛擬方法來寫自己的提示窗口。
去讀一讀HintWindow的源碼吧,你只要覆蓋幾個(gè)虛擬方法,你就可以做出很漂亮的提示出來了。
Delphi的Hint雖然簡(jiǎn)單易用,但卻不夠靈活,因?yàn)樗峁┝私y(tǒng)一的風(fēng)格,所以你不能指定某個(gè)提示為錯(cuò)誤指示,可某個(gè)提示為警告提示。關(guān)于這個(gè),我們要用API來實(shí)現(xiàn),在網(wǎng)上找一個(gè)漫畫式提示,有很多文章可用。這里不再說述。