計算機工程課件-Delphi的窗體設計_第1頁
計算機工程課件-Delphi的窗體設計_第2頁
計算機工程課件-Delphi的窗體設計_第3頁
計算機工程課件-Delphi的窗體設計_第4頁
計算機工程課件-Delphi的窗體設計_第5頁
已閱讀5頁,還剩158頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

窗體設計3.1

Delphi窗體3.1.1

窗體與窗口

窗口是屏幕上被邊框圍住的一部分。它有標題,而且通常有一個控制菜單,用于移動、關閉、最大化、最小化窗口。

在Windows中,用戶界面的絕大多數都是窗口。應用程序的窗口,通常可分為三類:·重疊型窗口:作為應用程序的主窗口。

·彈出式窗口:通常用于對話框與消息框。只有彈出式窗口才能覆蓋其他窗口,彈出式窗口與重疊型窗口非常相似。

·子窗口:通常用于不能移出父窗口客戶區(qū)中的從屬窗口,如用于創(chuàng)建MDI應用程序等。3.1.2

窗體屬性

窗體是用戶設計應用程序界面的地方,有時也將窗體稱作表單。

在Delphi中,每個窗體都有一個窗體文件(.DRM)和一個單元文件(.PAS)。

窗體文件保存著窗體和窗體上各個組件的屬性;單元文件則是用戶編寫窗體的事件處理過程的地方。窗體的屬性窗體的各種屬性窗體的常用屬性3.1.3

窗體事件■事件的產生可以來自系統(tǒng),也可以來自用戶。事件是一種將發(fā)生的動作與代碼相連的機制。因此事件是一個方法指針,它指向某個類實例的方法?!觥龃绑w的事件窗體的各種事件1.Create和Destroy事件

當創(chuàng)建窗體時,就執(zhí)行Create事件;當釋放窗體所占用的空間時,就會執(zhí)行

Destroy事件?!霎攧?chuàng)建窗體,并且Visible屬性設置為True時,下列事件按順序出現Create、Show、Activate、Paint。2.Show和Hide事件■

Show事件和Hide事件分別在窗體顯示與隱藏時被觸發(fā)。當窗體的Visible屬性設置為True時,窗體被顯示,同時觸發(fā)Show事件;當窗體的Visible屬性設置為False時,窗體被隱藏,同時觸發(fā)Hide事件。3.Activate和Deactivate事件

當激活窗體時,就觸發(fā)Activate事件,當窗體不再激活時,就會觸發(fā)

Deactivate事件。4.Click和DblClick事件■

在窗體上(光標沒有在其它組件上)單擊,就會觸發(fā)Click事件。在窗體上雙擊,就會觸發(fā)DblClick事件。5.DragDrop事件■在窗體上拖放操作時,就會產生DragDrop事件。該事件過程的基本語法形式為:procedure

TForm.FormDragDrop(Sender,Source:TObject;X,Y:integer);

其中Source參數為拖動的對象,Sender為要拖動到的對象,X和Y為拖放后鼠標的位置坐標(單位像素)?!觥觥?.KeyDown、KeyUp和KeyPress事件在窗體上按下鍵盤的任一鍵(KeyDown)或釋放它(KeyUp),就會產生KeyDown和KeyUp事件??梢詫︽I盤上的所有鍵,包括功能鍵及與

Shift、Alt、Ctrl的組合鍵進行處理(但如果按下的是快捷鍵或者熱鍵,則不必編寫事件處理程序,該操作由系統(tǒng)來完成)。在窗體上按下單個的字母鍵,就會產生

KeyPress事件。

7.MouseDown、MouseUp和MonseMove事件■

在窗體上按下或釋放任一鼠標鍵時,就會出現MouseDown和MouseUp事件。在窗體上移動鼠標(鼠標指針在窗體上),就會產生MouseMove事件。8.Resize事件

在調整窗體的大小時,就會觸發(fā)

Resize事件。3.2

設計窗體3.2.1

新建窗體■設計窗體的第一步當然是新建空白窗體。單擊[New]菜單下的[NewApplication]命令開始一個新項目,此

時會新建一個名為“Form1”的空白窗體。■3.2.2

設置窗體屬性■新建窗體后,就是設置窗體的屬性了?!鲈O置窗體屬性通常是利用ObjectInspector來進行。3.2.3

添加組件■新建窗體后,就是往窗體中添加組件了。從組件板上往窗體添加組件通常有三種方法?!鼋M件面板組件面板Label控件■·雙擊組件板上的組件圖標,Delphi將把組件以缺省的標準和大小放在窗體正中間?!ぴ诮M件板上單擊組件圖標,選中組件,再在窗體中想放置組件的位置的左上角單擊一下窗體,Delphi將以缺省的大小把組件放置在那里?!觥觥と绻胩砑咏M件的同時設置組件的大小,可將組件添加到窗體中后,單擊組件選中組件,這時組件四周將會出現八個黑色方塊的控點。在某—控點上按住鼠標左鍵,拖動鼠標,這時會出現一個矩形方框,表示調整后組件的大小?!鐾戏鸥淖兛丶笮 鋈绻娇虻拇笮『线m,釋放鼠標,組件會按矩形方框的大小和形狀放置在窗體中。注意:非控件組件的大小和形狀不能任意改變,它們在窗體中的大小和形狀由系統(tǒng)決定。■可以往窗體中添加所需的組件。

添加組件時,如果不知道組件在組件板的哪一個選項卡怎么辦?

可以單擊[View]菜單下的[Componentlist]命令,打開一個[Components](組件列表)對話框。從該對話框中可以找到所需組件。添加組件時,如果不知道組件在組件板的哪一個選項卡怎么辦?■如果想在窗體上添加多個相同組件,可按住Shift鍵。再單擊要添加的組件,把鼠標移到窗體上?!觥鋈缓竺繂螕粢淮问髽思纯煞胖靡粋€組件,連續(xù)單擊鼠標,可以放置多個組件,直到不想放置為止。最后用鼠標單擊組件板上左側的箭頭標志按鈕,就可脫離連續(xù)放置狀態(tài)?!?.2.4

編輯組件■添加組件后,還要對組件進行適當編輯,包括選定組件、調整組件大小和位置、對齊組件,以及對組件進行刪除、復制、剪切和粘貼操作。1.選定組件■要編輯組件,首先得選定組件。

選定組件可分為選定單個組件和選定多個組件兩種。選定單個組件又有兩種情況。

·若組件在窗體最表面,即可見,此時,單擊組件,該組件四周會出現八個黑色

小方塊的控點表示該組件被選定。

·若組件被另一個組件完全覆蓋,此時要選定組件,得先右擊覆蓋該組件的組件,打開一快捷菜單,再選擇[Send

To

Back]命令,這樣可將被覆蓋的組件傳送到窗體表面,并選定該組件?;驈腛bject

Inspector窗口的組件下拉列表中選定該組件的名稱?!鋈绻x定多個組件,可以有兩種方法?!?、按住鼠標左鍵,拖動鼠標,此時將會出現一個選線矩形框,使要選定的組件被方框所包含,釋放鼠標即可。2、按住Shift鍵,依次單擊要選定的組件。■■選定多個組件后,這些組件即形成一整體。可同時進行移動、刪除、復制等操作。■2.調整大小

要調整組件的大小,可先選定組件,將鼠標放在組件周圍的某個控點上,按

住鼠標左鍵并拖動鼠標,即可改變組件

的大小?!鲞x定組件后,按住Shift鍵,同時按

“→”、“←”、“↑”、“↓”鍵可精確調整組件的尺寸?!隽硗猓梢酝ㄟ^在ObjectInspector(對象查看器)中設置組件的

Height和Width屬性來調整組件的大小。3.調整位置

調整組件的位置和調整組件大小的操作基本相同?!龇椒ㄊ窍冗x定組件,在組件8個控點形成的方框內按住鼠標左鍵并拖動鼠標,就可以將組件拖到所需位置。選定組件后,按住Ctrl鍵,同時按

“→”、“←”、“↑”、“↓”鍵可精確調整組件的位置?!觥隽硗?,可通過在ObjectInspector(對象查看器)中設置組件的

Left和Top屬性來調整組件的位置。4.對齊組件

為了使窗體整潔、美觀,經常需要把一系列組件橫向對齊或縱向對齊。如果要對齊組件,可執(zhí)行如下操作:對齊組件執(zhí)行的操作:(1)選定要對齊的多個組件。

(2)執(zhí)行如下操作之一,打開[A1ignment]對話框①單擊[Edit]菜單下的[A1ign]命令。

②右擊窗體,打開一快捷菜單,再選擇

[A1ign]命令。對齊組件執(zhí)行的操作:(3)根據需要,選擇如下操作:

①如果要設置水平對齊,可在[Horizontal]選項組中選擇對齊方式單選按鈕。如:

[Left

Sides](左對齊)、[Centers](居中對齊)、[Right

Sides](右對齊)、[Spaceequally](水平均勻分布)、[Center

inwindow](組件在窗口橫向居中)。對齊組件執(zhí)行的操作:

②如果要設置垂直對齊,可在[Vertical]選項組中選擇對齊方式單選按鈕。如:

[Tops](頂端對齊)、[Centers](居中對齊)、[Bottoms](底端對齊)、[Space

equally](垂直均勻分布)、[Center

in

window](組件在窗口縱向居中)。(4)單擊[OK]按鈕。對齊組件執(zhí)行的操作:5.刪除組件

如果要刪除不合適的組件,可在選定組件后,按Delete鍵,或單擊[Edit]菜單下的[Delete]命令?!鰟h除單個組件和刪除多個組件的操作完全相同。如果錯刪除了組件,可用[Edit]菜單下的[undelete]命令恢復。但如果刪除組件后進行了其他編輯工作,則無法恢復。■6.復制、剪切和粘貼組件

復制、剪切和粘貼組件分別是使用[Edit] 菜單下的[Copy]、[Cut]、[Paste]命令?!隽硗?,可直接在窗體文件中復制(刪除、剪切)組件。以文本方式查看窗口■右擊窗體,可打開一個快捷菜單,從中選擇[ViewasText]命令,可打開窗體文件。窗體文件中有窗體中所有組件及其屬性的描述?!觥鰧⑿枰獜椭?刪除、剪切)的組件的代碼復制(刪除、剪切),其實質即是復制(刪除、剪切)組件。■在窗體文件中復制(刪除、剪切)組件完畢后,右擊文件,打開快捷菜單,從中選擇[ViewasForm]命令,即可返回窗體窗口。7.鎖定組件

窗體設計好后,為了確保窗體中的各個組件的位置不會因為不小心而改動,可以將組件鎖定,組件鎖定后窗體就不能再移動或改變大小,除非解除鎖定。鎖定組件鎖定組件■如果要鎖定組件,單擊[Edit]菜單下的[Lock

Controls]命令。再次單擊該命令則可解除鎖定。■3.2.5

設置組件屬性3.2.6

Tab順序■Tab順序是指在運行時用Tab鍵將控件組件切換成當前活動組件時所要遵循的順序。設置Tab順序有兩種方法。■第一種方法是在Object Inspector(對象查看器)上通過設置組件的TabOrder屬性值來達到目的。第二種修改Tab順序的方法是單擊[Edit]菜單下的[Tab

Order]命令,或右擊窗體,從快捷菜單中選擇[Tab

Order]命令,打開[TabOrder]對話框。該對話框以Tab順序將組件依次排列?!稣{整組件Tab順序方法一改變TabOrder屬性值調整組件Tab順序方法二■如果要改變組件的Tab順序,先選定該組件,然后單擊對話框右邊的上下箭頭按鈕,移動該組件到適當位置。3.2.7

創(chuàng)建順序■創(chuàng)建順序和Tab順序意義相似,不同的是,Tab順序用于控件型組件,而創(chuàng)建順序則用于非控件型組件。通常創(chuàng)建順序決定創(chuàng)建窗體時非控件型組件被創(chuàng)建的順序?!?.2.8

窗體網格

缺省情況下,窗體都帶有網格。此時,移動和改變窗體中組件的位置和大小都要以網格的單元格為單位。窗體的網格窗體的網格■這種情況下,對精確排列、對齊組件有時很不方便。因此,有時需要使窗體的網格無效?!鋈绻咕W格無效,單擊[Tools]菜單下的[Environment

Options

]命令,打開[Environment

Options]對話框,并選擇[Designer]選項卡。改變設計者參數■在[Grid options]選項組進行窗體的網格設置,選項組中選項功能如下:·[Display

grid]復選框:使窗體顯示網格?!觥觥Snaptogrid]復選框:在窗體中移動組件和改變組件的大小都以網格間距為單位,否則可任意移動組件和改變組件大小。■·[Grid

size X]編輯框:設置網格單元格的寬(以像素為單位)?!Grid

size

Y]編輯框:設置網格單元格的高(以像素為單位)?!?/p>

·[Show

component

captions]復選框:設計時顯示非控件型組件的標題(caption)。選擇該項可清楚地識別非控件型組件?!觥Show

designer

hints]復選框:設計時,將鼠標移動到某個組件上,就可以顯示該組件的名稱及所屬的類。3.2.9

保存文件■窗體設計完后,要保存項目文件和單元文件,以便以后修改。■保存單元文件方法是,單擊[File]菜單中[Save

As]命令項,打開[SaveUnit

As]對話框,選擇指定文件夾和文件名,單擊[保存]按鈕。■保存項目文件方法是,單擊[File]菜單中[Save

Project

As]命令項,打開[Save

Project

As]對話框,選擇指定文件夾和文件名,單擊[保存]按鈕。3.3

窗體模板■有一些窗體設計已形成約定俗成的規(guī)范,此時如果每次設計窗體時都重新設計,不僅浪費時間,而且難以保證符合規(guī)范。■對于這一種情況,Delphi 提供了窗體模板。窗體模板位于對象庫中。■■單擊[File]菜單下的[New]級聯(lián)菜單下[Other]命令,打開[New Items]對話框(即對象庫),并選擇[Forms]選項卡?!鰧ο髱旃蔡峁┝?種窗體模板,另外,還提供了復制、繼承、使用三種應用窗體模板的方式,分別對應于對話框底部

的[Copy]、[Inherit]和[Use]單選按鈕。對象庫提供的3種窗體模板這三種方式的含義如下?!觥椭品绞剑篋elphi 將把窗體模板文件(.DFM)和單元文件(.PAS)復制一份。并以缺省的“Formn.DFM”和“Unitn.PAS”來命名所生成的窗體和單元文件(n表示某一個數字),將它們放入在當前項目中?!觥だ^承方式:Delphi 將以窗體模板所定義的類為基類,派生出一個新的窗體類。并把派生窗體的DFM文件和PAS文件用缺省名放入項目中?!觥な褂梅绞剑篋elphi 將在項目文件(.DPR)中的Uses語句中聲明窗體模板的單元文件。該窗體并沒有復制到項目中。但編譯項目時,Delphi將根據項目文件(.DPR)中的聲明,把窗體模板的文件一起編譯鏈接?!觥鰧ο髱旃蔡峁┝?種窗體模板,其功能如下?!觥boutBox模板:標準的[About]對話框,常用于顯示應用程序的名稱、版本和版權信息等?!觥ual

List

Box模板:有兩個列表框的窗體,可在兩個列表框之間相互移動選項。·Tabbed

Pages模板:多頁窗體?!鲇脩舫丝梢岳孟到y(tǒng)提供的窗體模板外,也可以創(chuàng)建窗體模板。如果要創(chuàng)建窗體模板,執(zhí)行如下操作。(1)新建并設計一個窗體。(2)右擊窗體,打開一個快捷菜單。

(3)單擊[Add

to Repository]命令,打開[Add

to Repository]對話框。

(4)在[Title]編輯框輸入窗體模板的名稱。

(5)在[Description]編輯框輸入窗體模板的描述。(6)在[Page]下拉框中選擇“Forms”。(7)在[Author]編輯框輸入作者姓名。

(8)單擊[Browser]按鈕,選擇窗體模板的圖標。(9)單擊[OK]按鈕,保存窗體模板。保存窗體模板(一)保存窗體模板(二)■這樣,下次再打開[New

Items]對話框的[Forms]選項卡,就會發(fā)現其中有用戶所創(chuàng)建的窗體模板。3.4

運行時改變窗體■窗體和組件的屬性可以分為兩種情況,第一種情況是在設計窗體時設定屬性,在運行時不允許修改。■第二種情況是可以在設計窗體時設定屬性,也可以在運行時設定屬性,也就是說可以在運行時修改屬性值。另外,還可以根據需要在運行時創(chuàng)建組件?!?.4.1

運行時設置屬性3.4.2

運行時創(chuàng)建組件■Delphi

還允許用戶在運行程序時根據需要創(chuàng)建自己的組件?!鲞@種方法與在設計時添加組件相比,具有更大的靈活性,而且能夠節(jié)省內存。這是因為,運行創(chuàng)建的組件可以在不需要時刪除?!觥鲞\行時創(chuàng)建組件可分為三個步驟:

(1)組件的變量聲明,即用要創(chuàng)建的組件對應的類聲明一個組件對象。

如:用組件ColorDialog對應的類

TColorDialog聲明了組件對象

ColorDialog1。

(2)創(chuàng)建組件,即調用該組件類的Create方法,該方法引用的參數表明該組件被誰擁有。

如:參數為Form1,表明該組件創(chuàng)建后由Form1窗體擁有。

(3)釋放組件,即調用組件的Free方法,釋放掉組件所占的內存。3.5

MDI程序■所謂MDI,是Multiple

DocumentInterface的縮寫,意思是多文檔界面。MDI程序能夠同時打開多個文檔?!觥鲆粋€MDI程序至少應包括兩種類型的

Form:一個是“父”Form,它的

FormStyle屬性應當設為fsMDIForm;MDI的窗體屬性設置■另一個是“子”Form,它的

FormStyle屬性應當設為fsMDIChild?!鋈绻鸉ormStyle屬性設為fsNormal,表示是一般Form。3.5.1

MDI窗體1.“父”Form

MDI程序需要有一個公共的區(qū)域顯示多個文檔并在這些文檔之間切換,這個公共的區(qū)域稱為“父”Form或框架,■在這個框架內被打開的文檔稱為子窗口?!鲆粋€MDI程序只能有一個“父”Form,但可以有多個子窗口,子窗口的類型可以是不同的。MDI窗體舉例■可以把項目中任意一個Form的FormStyle屬性指定為fsMDIForm。但是,如果沒有同時把這個Form指定為程序的主Form,編譯將出錯?!?.“子”Form

要創(chuàng)建一個“子”Form,首先要使用[File]菜單上的[New

Form]命令向項目中加入一個新的Form,把這個Form的FormStyle特性設為fsMDIChild。3.5.2

創(chuàng)建子窗體1.啟動時靜態(tài)建立子窗體

在[Project

Options]對話框的[Forms]頁上有一個[Auto-CreateForms]列表框。靜態(tài)建立子窗體菜單位置靜態(tài)創(chuàng)建子窗體■凡是出現在這個列表框中的Form,在程序啟動時將自動創(chuàng)建,我們稱之為靜態(tài)建立?!鯷Auto-Create

Forms]框中列出的是由Delphi自動創(chuàng)建的窗體,[Available

Forms]框中列出的是不由Delphi自動創(chuàng)建的窗體?!鋈绻M哟绑w不在啟動時自動建立,而是在運行期動態(tài)創(chuàng)建,就應當把“子”Form從[Auto-Create

Forms]列表框中移走,移到[Available

Forms]列表框中。2.運行期動態(tài)建立子窗體

如果一個“子”Form沒有出現在[Auto-create

Forms]列表框中,這意味著必須在運行期動態(tài)創(chuàng)建這個Form的實體。3.5.3

MDI的屬性和方法■窗體中有一些專門用于MDI的屬性和方法,可以控制子窗口的操作和狀態(tài)。1.MDI的主要屬性(1)WindowMenu屬性

在Word的主菜單[窗口]的下拉菜單中,在橫線下面顯示的是已打開的子窗口標題,有“√”的是當前子窗口,如果要切換子窗口,只需單擊窗口名即可。先設置一個菜單組件再設置主窗口的WindowsMenu屬性■這項功能在Delphi中只需設置主窗口的WindowMenu屬性為對應的菜單項即可完成,程序員不用寫任何代碼。(2)ActiveMDIChild屬性

ActiveMDIChild為只讀屬性,獲得當前活動的子窗口。調用ActiveMDIChild屬性執(zhí)行結果(3)MDIChildren和MDIChildCount屬性■

MDIChildren屬性保存了主窗口中的所有子窗口。它是一個數組,下標類型為整型,從0開始,表示各子窗口的索引,元素類型為TForm,記錄著子窗口的類實例?!鲈贛DIChildren數組中,子窗口的順序與其生成的順序正好相反,即

MDIChildren[0]返回最后生成的子窗口?!鯩DIChildCount屬性記錄著子窗口的個數。MDIChildren[MDIChildCount-1]返回第1個生成的子窗口?!?.MDI的主要方法(1)Next和Previous方法■Next和Previous方法用于改變當前獲得焦點的子窗口。

Next將焦點移

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論