計時器是獨立的對象,在啟動與Windows無關的邏輯和應用事件時極其有用。如:用計時器可以模擬時鐘或計時器,可視地顯示經過的時間;可以用作系統延時,Delphi提示信息出現只需在該區域停頓幾秒,就是Timer應用的一個例子;可以檢查系統環境、事件,根據結果進行響應;也可以在窗口中閃爍一段正文或圖像,提示某種操作或處理正在進行等等。
在窗體中放置一個計時器Timer部件,將它的Interval屬性置為100(每隔10毫秒觸發一次),雙擊部件進入代碼編輯器,在它的事件中加入這樣一句程序:
MessageBeep(0);
運行它,會有規律地發出“叮”聲。它給您一個應用Timer部件的直觀印象。
盡管Delphi的計時器每秒可以產生1000次激發,在編程中還必須注意程序對計時器激發的響應。如果程序處理OnTimer事件的時間超過Interval的設定值,就可能錯過事件,因為當下一次激發到來時,系統正忙於處理上一事件,則這次激發就會被忽略。同時要注意其它的Windows應用程序是否會影響計時器的觸發。如果後台正運行著一個占用處理器的程序,就可能會導致Timer的觸發不准確,從而使前台程序運行出現錯誤。
1.4.3 使用公用對話框部件
Delphi為您在Dialogs頁上提供了幾個標准對話框,它們是文件打開OpenDialog;文件保存SaveDialog;字體Fontdialog;顏色ColorDialog;打印PrintDialog;打印設置PrintsetupDialog;查找FindDialog;替換ReplaceDialog等部件。
1.4.3.1 調用標准對話框
您可以發現,除了Font,Find,Replace對話框之外,其余標准對話框的Events頁都是空白的。因為它們本身是不可視的對話框形式,所以不能響應標准的鼠標鍵盤操作,只能在程序中調用它們。在本章第一節的Demo程序中,我們已經對用Color對話框有了了解,在程序的適當位置加入對話框所屬的Execute方法,可以執行標准對話框。
在編制應用程序時,您可以先設計好主菜單。在需要使用標准對話框的菜單項的事件處理過程中,調用標准對話框的Execute等方法,以滿足設計需求,即響應菜單命令彈出標准對話框。
1.4.3.2 OpenDialog和SaveDialog部件
OpenDialog(文件的打開)和SaveDialog(保存對話框)部件處理文件的打開與存儲,它們擁有完全相同的屬性域。DefaultExt屬性表示缺省擴展名。當用戶沒有輸入文件的後綴時,可以為用戶文件自動加擴展名。FileName屬性指定出現在FileName正文框中的缺省文件名。Filter屬性提供了文件過濾器。FileEditStyle決定在輸入文件名時用Edit還是Combo- Box;設置為fsComboBox時,允許使用歷史列表HistoryList屬性,這在應用程序需要經常選擇文件時,可以節約大量的時間。HistoryList屬性保存有在File Name下拉式編輯框中顯示的文件名,使用[TStrings]的省略按鈕可以編輯歷史列表。您也可以編程實現將HistoryList屬性設為以前用OpenDialog打開的文件名歷史列表。下列程序段可以實現自動歷史文件名加載:
if OpenDialog1.Execute then
OpenDialog1.HistoryList.Insert(0,OpenDialog1.FileName);
1.4.3.3 ColorDialog和FontDialog
顏色對話框ColorDialog我們在前文的例程中已經用過,其更詳細的功能如Options的設定請查閱在線幫助。
字體對話框Font可以幫助用戶獲取各種方式的字體。使用OnApply事件,可以使得Font對話框中包含一個Apply按鈕,按動它,對話框中設定的字體會立即應用到指定的對象中,而對話框仍然是打開的,這樣更便於觀察修改的結果。
以下的例程在窗體中先放置一個按鈕Button1,調用字體對話框來改變按鈕上的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和打印設置對話框PrintSetupDialog可以顯示標准打印、打印設置對話框,支持打印文件和打印設置功能,設置它的Options屬性可以規定對話框的表現形式。
1.4.3.5 FindDialog和ReplaceDialog
FindDialog和ReplaceDialog提供了查找、替換兩個對話框部件,對於尋找和替換文本是極其有用的。在FindDialog和ReplaceDialog中都有OnFind事件,當用戶單擊尋找對話框中的Find Next按鈕時將觸發這一事件。FindText屬性中保存了