1.4.1.6 給菜單加提示(Hint)
在菜單中加提示是很好的習(xí)慣。它使得您的用戶在運(yùn)行菜單功能前,可以對菜單的任務(wù)有一個簡略的了解。在菜單條任一項(xiàng)的值段按F1,可以查閱在線幫助,在幫助的正文中找到OnHint并查閱它的例程,將DisplayHint等方法的例程Copy到您的程序中。然后,在菜單條的Hint屬性中加入提示正文,運(yùn)行時當(dāng)用戶將鼠標(biāo)移到菜單項(xiàng)時,在窗體的底部狀態(tài)行中會出現(xiàn)Hint屬性中的提示信息
1.4.1.7 菜單的其它屬性簡介
菜單還有其它的一些屬性。Enabled屬性決定菜單是否被禁用,這在編程中可以實(shí)現(xiàn)一定情況下不允許用戶使用某項(xiàng)菜單。Checked屬性表征了菜單項(xiàng)的開關(guān)情況,當(dāng)Checked為True時,菜單條的前面會出現(xiàn)選中標(biāo)志。Visible屬性控制菜單隱藏與否。設(shè)置這一屬性可以實(shí)現(xiàn)多版本的菜單。被隱藏的菜單項(xiàng)以及它的子菜單都是不可見的,或是不可訪問的。
Popup Menu在用Menu Designer時是完全相同的。只不過它在運(yùn)行時和主菜單的激活形式有所不同:它是用鼠標(biāo)的右鍵激活的。彈出式菜單在一定的窗口范圍內(nèi)激活,所以必須將窗口和彈出式菜單聯(lián)系起來。在設(shè)計(jì)完P(guān)opupMenu后,須在Name屬性中為它命名,然后把這個名稱賦給窗體的PopupMenu屬性。這樣,窗口會接收右鍵輸入,并激活彈出式對話框。
1.4.2 使用計(jì)時器部件Timer
在System頁上,還有一個(Timer計(jì)時器)部件,它能夠有規(guī)律地觸發(fā)OnTimer事件,發(fā)送信息給應(yīng)用程序。它是編制應(yīng)用程序時最為重要的部件之一。
1.4.2.1 Timer的重要屬性
Enabled屬性表示了計(jì)時器打開還是關(guān)閉;用Interval屬性設(shè)置兩個OnTimer事件間的間隔,單位是毫秒,也即千分之一秒。將間隔置為0相當(dāng)于關(guān)閉計(jì)時器,Interval的最大允許值是32767,也即32.767秒!碓:
1.4.2.2 使用Timer對程序進(jìn)行控制
計(jì)時器是獨(dú)立的對象,在啟動與Windows無關(guān)的邏輯和應(yīng)用事件時極其有用。如:用計(jì)時器可以模擬時鐘或計(jì)時器,可視地顯示經(jīng)過的時間;可以用作系統(tǒng)延時,Delphi提示信息出現(xiàn)只需在該區(qū)域停頓幾秒,就是Timer應(yīng)用的一個例子;可以檢查系統(tǒng)環(huán)境、事件,根據(jù)結(jié)果進(jìn)行響應(yīng);也可以在窗口中閃爍一段正文或圖像,提示某種操作或處理正在進(jìn)行等等。
在窗體中放置一個計(jì)時器Timer部件,將它的Interval屬性置為100(每隔10毫秒觸發(fā)一次),雙擊部件進(jìn)入代碼編輯器,在它的事件中加入這樣一句程序:
MessageBeep(0);
運(yùn)行它,會有規(guī)律地發(fā)出“!甭。它給您一個應(yīng)用Timer部件的直觀印象。
盡管Delphi的計(jì)時器每秒可以產(chǎn)生1000次激發(fā),在編程中還必須注意程序?qū)τ?jì)時器激發(fā)的響應(yīng)。如果程序處理OnTimer事件的時間超過Interval的設(shè)定值,就可能錯過事件,因?yàn)楫?dāng)下一次激發(fā)到來時,系統(tǒng)正忙于處理上一事件,則這次激發(fā)就會被忽略。同時要注意其它的Windows應(yīng)用程序是否會影響計(jì)時器的觸發(fā)。如果后臺正運(yùn)行著一個占用處理器的程序,就可能會導(dǎo)致Timer的觸發(fā)不準(zhǔn)確,從而使前臺程序運(yùn)行出現(xiàn)錯誤。
1.4.3 使用公用對話框部件
Delphi為您在Dialogs頁上提供了幾個標(biāo)準(zhǔn)對話框,它們是文件打開OpenDialog;文件保存SaveDialog;字體Fontdialog;顏色ColorDialog;打印PrintDialog;打印設(shè)置PrintsetupDialog;查找FindDialog;替換ReplaceDialog等部件。
1.4.3.1 調(diào)用標(biāo)準(zhǔn)對話框
您可以發(fā)現(xiàn),除了Font,Find,Replace對話框之外,其余標(biāo)準(zhǔn)對話框的Events頁都是空白的。因?yàn)樗鼈儽旧硎遣豢梢暤膶υ捒蛐问剑圆荒茼憫?yīng)標(biāo)準(zhǔn)的鼠標(biāo)鍵盤操作,只能在程序中調(diào)用它們。在本章第一節(jié)的Demo程序中,我們已經(jīng)對用Color對話框有了了解,在程序的適當(dāng)位置加入對話框所屬的Execute方法,可以執(zhí)行標(biāo)準(zhǔn)對話框。
在編制應(yīng)用程序時,您可以先設(shè)計(jì)好主菜單。在需要使用標(biāo)準(zhǔn)對話框的菜單項(xiàng)的事件處理過程中,調(diào)用標(biāo)準(zhǔn)對話框的Execute等方法,以滿足設(shè)計(jì)需求,即響應(yīng)菜單命令彈出標(biāo)準(zhǔn)對話框。
1.4.3.2 OpenDialog和SaveDialog部件
OpenDialog(文件的打開)和SaveDialog(保存對話框)部件處理文件的打開與存儲,它們擁有完全相同的屬性域。DefaultExt屬性表示缺省擴(kuò)展名。當(dāng)用戶沒有輸入文件的后綴時,可以為用戶文件自動加擴(kuò)展名。FileName屬性指定出現(xiàn)在FileName正文框中的缺省文件名。Filter屬性提供了文件過濾器。FileEditStyle決定在輸入文件名時用Edit還是Combo- Box;設(shè)置為fsComboBox時,允許使用歷史列表HistoryList屬性,這在應(yīng)用程序需要經(jīng)常選擇文件時,可以節(jié)約大量的時間。HistoryList屬性保存有在File Name下拉式編輯框中顯示的文件名,使用[TStrings]的省略按鈕可以編輯歷史列表。您也可以編程實(shí)現(xiàn)將HistoryList屬性設(shè)為以前用OpenDialog打開的文件名歷史列表。下列程序段可以實(shí)現(xiàn)自動歷史文件名加載:
if OpenDialog1.Execute then
OpenDialog1.HistoryList.Insert(0,OpenDialog1.FileName);
1.4.3.3 ColorDialog和FontDialog
顏色對話框ColorDialog我們在前文的例程中已經(jīng)用過,其更詳細(xì)的功能如Options的設(shè)定請查閱在線幫助。
字體對話框Font可以幫助用戶獲取各種方式的字體。使用OnApply事件,可以使得Font對話框中包含一個Apply按鈕,按動它,對話框中設(shè)定的字體會立即應(yīng)用到指定的對象中,而對話框仍然是打開的,這樣更便于觀察修改的結(jié)果。
以下的例程在窗體中先放置一個按鈕Button1,調(diào)用字體對話框來改變按鈕上的Caption屬性顯示的字體:
Procedure TForm1.Button1Click(Sender:TObject);
begin
FontDialog1.Execute;
end;
Procedure TForm1.FontDlgApply(Sender:Tobject);
begin
Button1.Font:= FontDialog1.Font;
end;
1.4.3.4 PrintDialog和PrintSetupDiaog
打印對話框PrintDialog和打印設(shè)置對話框PrintSetupDialog可以顯示標(biāo)準(zhǔn)打印、打印設(shè)置對話框,支持打印文件和打印設(shè)置功能,設(shè)置它的Options屬性可以規(guī)定對話框的表現(xiàn)形式
1.4.3.5 FindDialog和ReplaceDialog
FindDialog和ReplaceDialog提供了查找、替換兩個對話框部件,對于尋找和替換文本是極其有用的。在FindDialog和ReplaceDialog中都有OnFind事件,當(dāng)用戶單擊尋找對話框中的Find Next按鈕時將觸發(fā)這一事件。FindText屬性中保存了用戶在Find What編輯框中輸入的文本。在ReplaceDialog中還有OnReplace事件,當(dāng)用戶單擊替換對話框中的Replace和Replace All按鈕時,將觸發(fā)OnReplace事件。FindText和ReplaceText屬性分別保存了用戶在Find What和Replace With編輯框中輸入的文本。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |