第11章 TApplication與TScreen類介紹及應用
一、TApplication類
用於開發視窗程序的類。此類封裝了一個視窗應用程式,其方法和屬性反映了視窗作業系統在建立、執行、維持以及析構該程式等方面的基本原則。
Delphi的每個視窗程序都會自動聲明一個Application對象,此變數屬於Tapplication類。
TApplication類對象常用屬性:
ExeName:唯讀,EXE檔案路徑名。
Title:讀寫。標題,即運行時應用程式圖示後的文字。除了直接設定此屬性外,還可通過另一種方式更改:Project->Options->Application。
Icon:讀寫。只有該項目內沒有設定Icon屬性值的表單,它們標題列的表徵圖,都會以代表應用程式的表徵圖作為它們的表徵圖。更改也有兩種方式,同Title。
MainForm:指定該程式的哪個視窗為項目的主視窗。
TApplication類對象常用方法:
CreateForm:在程式中建立一個新的表單。當程式有多個表單時,可將程式中預設建立表單的代碼刪除,等需要時才以動態方式建立它們的實體。除可節省空間的外,當程式表單繁多時,還可節省程式的啟動時間。
MessageBox:此方法屬於Application。而MessageDlg和ShowMessage是全域的方法。
Run:執行此應用程式。Run方法包含了應用程式的主訊息迴圈,因此能讓程式執行,並使它的視窗在執行中能持續顯示畫面,直到程式主訊息迴圈終止。注意:此方法在Unit中無用,僅在Application中才起作用。
Terminate:終止程式執行。此方法會調用Windows API函數PostQuitMessage,依序終止程式。當系統收到程式的WM_QUIT訊息,或程式主表單關閉時,會自動調用Terminate。
二、TScreen類
代表該程式在執行整個時整個螢幕的狀態。此類的屬性記錄了下列相關的內容:
Ø 此程式舉用了何種表單或資料模組。
Ø 什麼是作用中的表單,及該表單內作用中的控制組件。
Ø 該螢幕大小及解析度。
Ø 該程式使用的游標和文字。
Delphi項目中,有一個預設的全域變數:Screen。
TScreen的屬性
ActiveControl:指出螢幕上哪個控制組件現在擁有輸入焦點。只能通過作用中表單的SetFocusedControl來更改。ActiveControl值改變時,會觸發OnActiveControlChange事件。
Fonts:螢幕能支援的所有字型。TStrings類型。通過此屬性,可知道當前Windows安裝了哪些字型。最好不要使用未安裝的字型。
第12章 進階組件介紹
這些進階組件可能是標準組件的加強版,也可能是與標準組件不相干的全新組件。因進階組件數量太多,僅介紹Additional、Win32、System、Dialogs中最常用的組件。
一、Additional選項卡中的常用組件
1、TBitBtn
繼承自TButton,具有和Tbutton幾乎相同的屬性、方法與事件,但它擁有圖形化按鈕表面的特殊功能。允許程式員自己建立圖形,也可使用內建的標準圖形。
Glyph:幾乎是TBitBtn最重要的屬性,用來指定TBitBtn對象顯示於按鈕表明的圖形。此屬性屬於TBitmap類。Glyph屬性按鈕圖形需注意:
1)圖形必須是BMP格式。
2)載入的圖形配合NumGlyphs屬性,可用來指定按鈕不同狀態顯示的圖形,NumGlyphs最大為3,此時,載入的圖形均分為左中右三等分,左圖表示按鈕一般狀態時顯示的圖形,中圖為Enabled為False時顯示的圖形,右圖則為按鈕按下時顯示的圖形。
3)載入的圖形左下角的像素,同時表示此圖形的透明顏色。即按鈕圖形中,任何與此圖形左下角像素顏色相同者,會被設為按鈕底色,產生透明效果。
NumGlyphs:當設定Glyph屬性時,NumGlyphs用來表示該圖形包含集中按鈕狀態。允許值為1~4。4表示按鈕按下且固定住的圖形,TBitButton無此行為。
Kind:設定按鈕類型,是個枚舉類型的值。
Layout:設定圖片與文字的相對位置,是個枚舉類型的值。
Margin:設定圖形(含文字)與按鈕邊界的距離。
Spacing:表示按鈕圖形與文字間的距離。
Style:決定按鈕外觀。
2、TMaskEdit組件
繼承自TCustomEdit,具有和TEdit幾乎一樣的屬性和方法,但它加入了格式化文字的功能,這幾乎是使用它的唯一理由。
EditMask:設定TmaskEdit組件顯示文字的格式化規則。格式化字串由三個欄位組成,並以分號分隔。如“!\(99\)0000-0000;1;_”:第一部分“!\(99\)0000-0000”為主體,其意義如下表,第二部分指定是否儲存非使用者輸入的字元(1儲存,0不儲存),第三部分設定尚未輸入字元的位置的顯示狀態。
要清除格式條件,只需將EditMask設為空白字串即可。
EditText:設定或取得MaskEdit組件顯示的文字。要設定EditText,其字串必須包含未輸入字元的位置的顯示狀態(預設為‘_’),否則其格式化功能運行不正常。
Text:同EditText。但設定時,不需加未輸入字元的位置的顯示狀態。
GetTextLength:取得Text屬性的字串長度。
IsMasked:是否設定MaskEdit屬性。即MaskEdit屬性是否為空白。
3、TImage控制項
常用它來存放圖形或顯示圖形於表單上。其支援的格式包括BMP、ICO、JPEG、WMF、EMF等。
AutoSize:Image組件是否自動縮放為載入的圖形大小。
Stretch:載入的圖片是否會自動縮放為Image組件的大小。
Canvas:對TImages而言,此屬性是唯讀。
Center:圖片是否置中。
IncrementalDisplay:指明圖形檔案是否使用漸進方式顯示。
Picture:設定或取得Image組件顯示的繪圖物件。設定方式或在設計時直接指定此屬性,或在運行時指定此屬性或者通過LoadFormFile、LoadFromClipboard、Format、SaveToFile、SaveToClipboard實現。將此屬性設為nil即可清除顯示圖片。
Proportional:指明圖形文字是否以等比例方式顯示。
Transparent:通過顏色來設定Picture屬性所包含的圖片的透明顏色。其設定方式與TBitBtn的Glyph屬性相同(依左下角像素為基準)。需注意,僅對BMP圖片有效。
4、TShape組件
用來顯示矩形、正方形、圓形、橢圓等基本幾何圖形,因不接受使用者輸入,所有比較節省資源。
Brush:用來設定TShape組件的內容。屬於TBrush類。設計時可設定其子屬性:color和style;運行時可設定其Bitmap屬性。
Pen:用來設定TShape組件的框線。
Shape:設定TShape的顯示外觀。
二、Win32選項卡常用組件
1、TPageControl組件
常用屬性:
ActivePage:設定或取得作用中的TabSheet組件。
ActivePageIndex:設定或取得作用中的TabSheet組件的索引值,當不存在選項卡時,此值為-1。
HotTrack:滑鼠指到選項卡時,選項卡文字是否高亮顯示。
Images:指定選項卡顯示的小表徵圖來源TImageList,選項卡表徵圖與來源TImageList對象間的對應關係,通過各選項卡的TabSheet的ImageIndex指定。
MultiLine:選項卡是否以多列顯示。
PageCount:唯讀。取得選項卡數(即TabSheet總數)。
Pages:唯讀。取得PageControl包含的TabSheet集合。通過Pages可直接操作指定的TabSheet。
RaggedRight:一般用預設值False。選項卡右邊空白是否不填滿。
ScrollOpposite:一般用預設值False。當有多個選項卡時,選擇的選項卡及其右側所有選項卡是否自動佔滿到PageControl的另一端。
Style:設定選項卡外觀。
TabPosition:選項卡相對於PageControl的位置,此屬性僅在Style設為tsTabs時有效。
TabHeight、TabWidth:設定選項卡高度、寬度。
常用方法:
FindNextPage:由指定的TabSheet(CurPage參數),依照指定方向(GoForward參數;往前為True)並指定是否檢查選項卡的Visible(CheckTabVisible),返回CurPage的下一個TabSheet。當CurPage不存在時,則根據GoForward為True或False,分別返回第一個或最好一個TabSheet。
SelectNextPage:將選項卡定位到下一個TabSheet(依GoForward決定向前還是向後)。
常用事件:
OnDrawTab:當選項卡重繪時,觸發這個事件。
OnGetImageIndex:當選項卡正準備顯示其對象的選項卡表徵圖時觸發。當時間一開始觸發時,其TabIndex與ImageIndex參數值相同,可通過變更ImageIndex改變該選項卡的表徵圖。
2、TImageList組件
用來有效管理大量的ICO或BMP圖片。通常通過索引值,提供其他元件圖表標。雖然她也擁有運行時的一些屬性,方法設定,但通常將其視為一個靜態表徵圖數組來源。
TransparentColor:僅用於BMP圖片(因ICO本身已是屏蔽過的圖片)。透明色仍為左下角的像素顏色,但可自行由圖中點選透明顏色。
Fill Color:當指定圖片較小時,可指定填滿顏色。
Options:選項設定中的Cop表示載入的圖片以左上方為基準,Center表示已圖片中心為基準,Stretch則是將圖延伸到跟表徵圖大小一樣的大小。
可直接拖拽圖形來重新排列。
3、TRichEdit控制項
繼承自TMemo,具有標準的格式化文字能力,用來提供類似Word的格式檔案。即支援RichText的格式化(RTF)、列印、搜尋、文字拖拽等功能。
使用此組件時,必須自行建立使用者操作介面,即所有字型變化、縮排等行為,都必須通過程式自行建立操作介面並編寫對應的程式碼。
DefAttributes:運行時自訂TRichEdit組件的預設字型。
HideScrollBar:當不需要捲軸時,是否隱藏捲軸。
HideSelection:當失去焦點時,是否隱藏TRichEdit中選擇的文字。
PageRect:指定列印內容大小。
Paragraph:設定段落。
SelAttributes:類似DefAttributes,僅作用於選取的文字,或指定位置。
PlainText:指定讀寫檔案時,是否將RichEdit的文字視為純文字。
FindText方法:尋找文字。
Print方法:列印RichEdit的格式化文字,參數Caption為列印檔案的標題。
4、TDateTimePicker組件
是可視化的日期、時間組件,其顯示格式由系統設定決定。
常用屬性:
CalAlignment:決定顯示日期時,顯示的下拉行事曆群組件相對於日期組件的位置。
Checked:當ShowCheckBox設為True時,顯示的檢查欄是否被選擇。
DateFormat:設定日期格式。dfShort:簡短日期。dfLong:完整日期。
DateMode:設定日期組件右方顯示的外觀。其值為dmComboBox(下拉式箭頭)或dmUpDown x(上下箭頭)。當Kind設定為dtKTime,則此屬性失效。
DroppedDown:唯讀。用來判斷日期組件是否處於下拉狀態。
Format:格式化TDateTimePicker組件日期顯示格式。Format格式字元如下:
Ø d、dd、ddd、dddd:順序顯示一位日期、兩位日期、簡短星期、完整星期。
Ø H、HH、h、hh、m、mm、s、ss:依序為時分秒。對小於10的數,一位元時,第一位保留空白,兩位元時前置0。H與h區別:前者24小時,後者12小時。
Ø M、MM、MMM、MMMM:依序為一位月份、二位月份、簡短月份、完整月份。
Ø t、tt:顯示am/pm。t顯示格式為“a/p”,tt顯示格式為“am/pm”。
Kind:設定TDateTimePicker組件顯示日期(dkDate)或時間(dkTime)。
ShowCheckbox:是否顯示檢查欄。為True時,Checkbox必須被選擇,才能接受輸入。
常用事件:
OnCloseUp和OnDropDown:下拉日曆關閉時時觸發,TDateTimePicker組件顯示時觸發。
5、TStatusBar
由一些Panel組件(TStatusPanel)組成,且通常位於程式下方。
AutoHint:為True時,Hint屬性的文字會被顯示到第一個Panel中。
Panels:存放管理TStatusPanel的集合。設計時通過Panels可新增、刪除Panel,或改變顯示文字、Panel寬度、浮凸效果(Bevel屬性)。運行時則通過Items屬性的Add、AddItem、Insert等方法管理Panels。
SimplePanel:指定TStatusBar是否僅有單一Panel,當設定為True時,Panels失效。
SimpleText:用來顯示SimplePanel為True時,狀態列的文字。
SizeGrip:狀態列右下方是否顯示三角形斜紋。若TStatusBar右邊的Panel設定為靠右對齊,文字會被此斜紋裁掉。
UseSystemFont:是否使用系統預設字型。設為False時,Font中設定的字型才有效。
FlipChildren:將TStatusBar中的Panels順序反轉。
三、System選項卡常用組件
1、TTimer組件
Enabled:用來控制組件是否每隔Interval所指定的時間,觸發OnTimer事件。
Interval:觸發OnTimer事件的時間間隔。
OnTimer事件。
四、Dialogs選項卡常用組件
1、TOpenDialog組件:用來顯示“選擇檔案”對話方塊。
DefaultExt:預設副檔名用於儲存檔案對話方塊,但其副檔名字串不允許超過3個字元,且字串中不得含有‘.’。
FileName:用來存放包含路徑的檔案名稱字串。
Files:唯讀。用來存放TOpenDialog選取的所有檔案名稱(當Options設定為允許多重選取時,Files包含多個檔案名稱字串)。
Filter:開啟檔案時的“檔案類型”設定。格式為“類型描述|*.副檔名”,其中類型描述可省略。多中檔案類型時,如:OpenDialog1.Filter :='文字檔(*.txt)|*.txt|avi檔案(*.avi)|*.avi'; 此種方式是要麼txt要麼avi。OpenDialog1.Filter := 'bmp(*.bmp),txt(*.txt)|*.bmp;*.txt';此種方式是bmp和txt同時起作用。
FilterIndex:指定開啟檔案對話方塊中的預設檔案類型,其值起始於1。如上述設定的txt和avi格式時,預設為txt,可設定此值為2,則預設顯示avi。
InitialDir:指定預設路徑,當預設路徑不存在時,會以系統預設路徑取代。
Options:設定了開啟、儲存檔案的對話方塊共用選項設定,其常用設定值如下:
Ø ofAllowMultiSelect:允許多重選取檔案。
Ø ofCreatePrompt:檔案不存在時,是否提示建立新檔案。
Ø ofOverridePrompt:檔案存在時,是否提示覆蓋,用於儲存檔案對話方塊。
OptionsEx:只包含ofExNoPlaceBar選項,當ofExNoPlaceBar為False時,TOpenDialog包含中紅色圈出的地區;否則,不包含。
Execute方法:調用對話方塊,通過傳回值來確定是否按下“確定”按鈕。
2、TFontDialog組件
用來顯示“設定字型”對話方塊,也是通過Execute來開啟對話方塊。
Device:可用字型設定。預設為fdScreen(螢幕字型),其他可能值包括fdPrinter(印表機)、fdBoth(兩者)。
Font:設定、取得字型。
Option屬性:常用設定:fdApplyButton:是否包含“應用”按鈕。
3、TColorDialog組件
用來顯示“顏色”對話方塊,也是通過Execute來開啟對話方塊。
Color:設定、擷取顏色值。
Options:常用設定:cdFullOpen:對話方塊是否完全開啟。cdPreventFullOpen:“規定自訂色彩”按鈕是否為disabled。