VB對話框與菜單程序設(shè)計課件_第1頁
VB對話框與菜單程序設(shè)計課件_第2頁
VB對話框與菜單程序設(shè)計課件_第3頁
VB對話框與菜單程序設(shè)計課件_第4頁
VB對話框與菜單程序設(shè)計課件_第5頁
已閱讀5頁,還剩213頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

VB對話框與菜單程序設(shè)計VB對話框與菜單程序設(shè)計VB對話框與菜單程序設(shè)計對話框是一種特殊的“窗體〞,只有一個“關(guān)閉〞按鈕,不能最大化和最小化,大小一般不能改變。一些應(yīng)用程序中常常需要進(jìn)展翻開和保存文件、選擇顏色和字體、打印等操作,這就需要應(yīng)用程序提供相應(yīng)的對話框以方便使用。這些對話框作為Windows資源,在VB中已被做成“公共對話框〞(CommonDialog)控件。VB對話框與菜單程序設(shè)計VB對話框與菜單程序設(shè)計VB對話框與1對話框是一種特殊的“窗體〞,只有一個“關(guān)閉〞按鈕,不能最大化和最小化,大小一般不能改變。一些應(yīng)用程序中常常需要進(jìn)展翻開和保存文件、選擇顏色和字體、打印等操作,這就需要應(yīng)用程序提供相應(yīng)的對話框以方便使用。這些對話框作為Windows資源,在VB中已被做成“公共對話框〞(CommonDialog)控件。8.1對話框設(shè)計對話框是一種特殊的“窗體〞,只有一個“關(guān)閉〞按鈕,不能最大化2通用對話框通用對話框是一種ActiveX控件,位于“MicrosoftCommonDialogControl6.0〞部件中。8.1對話框設(shè)計工程→部件→

通用對話框通用對話框是一種ActiveX控件,位于“M3VB對話框與菜單程序設(shè)計課件4設(shè)計時,通用對話框在窗體上顯示成一個圖標(biāo),可以在“屬性頁〞里中進(jìn)展屬性設(shè)置,將其設(shè)置為不同類型,可以通過代碼,使用Action屬性或Show方法,將通用對話框設(shè)置成不同的具體對話框。8.1對話框設(shè)計設(shè)計時,通用對話框在窗體上顯示成一個圖標(biāo),可58.1對話框設(shè)計通過在代碼中設(shè)置不同的Action值可以產(chǎn)生不同的對話框。如果沒有設(shè)置該屬性〔默認(rèn)值為0〕,運(yùn)行時通用對話框不會產(chǎn)生任何信息,直到設(shè)置了該屬性后才會出現(xiàn)相應(yīng)的對話框。8.1對話框設(shè)計通過在代碼中設(shè)置不同的Action值可以產(chǎn)68.1對話框設(shè)計Action屬性返回或設(shè)置被顯示的對話框的類型:

CommonDialogName.Action[=Value]其中CommonDialogName為通用對話框控件的名字,Value值可以取1~6的整數(shù),其含義如表示。8.1對話框設(shè)計Action屬性返回或設(shè)置被顯示的對話框的7VB對話框與菜單程序設(shè)計課件88.1對話框設(shè)計注意:使用該控件所產(chǎn)生的對話框僅提供了人機(jī)信息交互的界面,并不能實現(xiàn)真正的操作〔如翻開、另存、打印等〕,要想實現(xiàn)這些具體的操作必須進(jìn)展相應(yīng)的編程。8.1對話框設(shè)計注意:使用該控件所產(chǎn)生的對話框僅提供了人-9ShowX方法設(shè)置被顯示的對話框的類型,其語法格式為:其中CommonDialogName為通用對話框控件的名字。ShowX方法參考表8-1。ShowX方法設(shè)置被顯示的對話框的類型,其語法格式為108.1對話框設(shè)計DialogTitle屬性:產(chǎn)生的對話框的標(biāo)題文字,如不進(jìn)展設(shè)置那么會使用默認(rèn)的標(biāo)題。CancelError屬性:在每個所產(chǎn)生的對話框上都有“取消〞按鈕,該屬性決定程序運(yùn)行時,用戶單擊了“取消〞按鈕后是否會產(chǎn)生出錯信息。8.1對話框設(shè)計DialogTitle屬性:產(chǎn)生的對話框的118.1對話框設(shè)計該屬性取True時,單擊“取消〞按鈕會產(chǎn)生一個錯誤信息,同時自動將Err對象的Number屬性值設(shè)置為32755。程序中可以通過代碼來訪問這個屬性以判斷是否按下了“取消〞按鈕,以決定程序的走向。如果該屬性值置為False〔默認(rèn)〕,那么當(dāng)單擊“取消〞按鈕時,不會產(chǎn)生任何出錯信息。8.1對話框設(shè)計該屬性取True時,單擊“取消〞按鈕會產(chǎn)生12“翻開〞對話框充分利用了操作系統(tǒng)的功能,它可以遍歷整個的磁盤目錄構(gòu)造,找到所需要的文件,并以“列表〞或“詳細(xì)資料〞的方式顯示出來。文件對話框具有兩種模式,即Open和Save(SaveAs),其中Open模式可以使用戶指定翻開的文件,Save模式可以使用戶指定保存的文件。1.文件對話框“翻開〞對話框充分利用了操作系統(tǒng)的功能,它可以遍歷整13Action屬性:對話框類型〔取值1或2〕DefaultExt屬性:對話框默認(rèn)的文件擴(kuò)展名DialogTitle屬性:對話框標(biāo)題欄的字符串

1.文件對話框Action屬性:對話框類型〔取值1或2〕1.文件對話框14FileName屬性:文件名稱

該屬性值為字符串類型,用于設(shè)置或得到用戶所選定的文件名。即當(dāng)程序執(zhí)行時,用戶選定的某個文件名將顯示在“文件名〞文本框中,同時此文件名及相關(guān)路徑將以字符串的形式賦值給FileName屬性。1.文件對話框FileName屬性:文件名稱

該屬性值為字符串類型,用于設(shè)15InitDir屬性:初始路徑

該屬性用來指定“翻開〞對話框中的初始目錄。默認(rèn)設(shè)置顯示當(dāng)前目錄。初始路徑在設(shè)計時或代碼編寫中均可進(jìn)展設(shè)置。例:

Cd1.InitDir=〞E:\教材〞

‘將對話框的初始路徑設(shè)為E盤“教材〞文件夾1.文件對話框InitDir屬性:初始路徑

該屬性用來指定“翻開〞對話框中16Filter屬性:文件類型

通過Filter屬性在“翻開〞對話框中設(shè)置文件的類型。該屬性的值是一個字符串,由一組或多組文件類型表達(dá)式構(gòu)成,每組代表一類文件。構(gòu)成規(guī)那么是:

類型說明字符串|類型通配表達(dá)式[|類型說明字符串|類型通配表達(dá)式]…1.文件對話框Filter屬性:文件類型

通過Filter屬性在“翻開〞對17類型說明字符串為對文件類型的說明,類型通配表達(dá)式表示需顯示的文件類型,各組之間用“|〞符號分開。1.文件對話框Object.Filter[=Description1|Filter1|Description2|Filter2…]類型說明字符串為對文件類型的說明,類型通配表達(dá)式表示需顯示的18FilterIndes屬性:過濾器索引

該屬性用于表示用戶在“文件類型〞列表框中選定的文件類型的序號。例如與圖所示相對應(yīng),Word文檔的該屬性值為1,文本文件的該屬性值為2。1.文件對話框FilterIndes屬性:過濾器索引

該屬性用于表示用戶在19⑴設(shè)置適當(dāng)屬性,使對話框的標(biāo)題為“翻開文件〞,初始目錄為c盤根目錄;⑵設(shè)置適當(dāng)屬性,使對話框的“文件類型〞下拉式組合框中有二行:“Word文檔〞、“所有文件〞,默認(rèn)的是“所有文件〞;⑶編寫命令按鈕的事件過程,使得單擊按鈕可以彈出“翻開文件〞對話框;例:在窗體上畫一個名稱為command1的命令按鈕,標(biāo)題為〞翻開文件“,再畫一個名稱為CD1的通用對話框。程序運(yùn)行后,假設(shè)單擊命令按鈕,那么彈出翻開文件對話框,并按以下要求設(shè)置屬性和代碼:⑴設(shè)置適當(dāng)屬性,使對話框的標(biāo)題為“翻開文件〞,初始目錄20思路:首先,條件⑴、⑵是在對話框?qū)傩源翱谏吓渲脜?shù),可在對話框?qū)傩源翱趦?nèi)填寫“對話框標(biāo)題〞、“初始化路徑〞的相應(yīng)內(nèi)容;其次,過濾器的內(nèi)容為:Word文檔|*.doc|所有文件|*.*;且根據(jù)題意,過濾器索引值設(shè)為2;另,條件⑶是指編寫代碼,調(diào)用通用對話框,可采用如下程序代碼:cd1.action=1或者cd1.showopen均可思路:21書本P232【例8.1】書本P232【例8.1】22建立一個命令按鈕,用于翻開一個Windows應(yīng)用程序,如“計算器〞、“日歷〞等。建立一個命令按鈕,用于翻開一個Windows應(yīng)用程序,如“計23“另存為〞對話框為用戶在存儲文件時提供了一個標(biāo)準(zhǔn)界面,供用戶選擇或鍵入所要存入文件的路徑及文件名。

“另存為〞對話框所涉及的屬性與“翻開〞對話框根本一樣,只是多了一個DefaultExt屬性,該屬性用來表示所存文件的默認(rèn)擴(kuò)展名。2.另存為對話框“另存為〞對話框為用戶在存儲文件時提供了一個標(biāo)準(zhǔn)界面,供用戶242.顏色對話框“顏色〞對話框中的調(diào)色板除了提供根本顏色外,還提供了自定義顏色,供用戶調(diào)色。對用戶來說,使用該對話框,可以獲得非常直觀的效果。Color屬性:用來返回選定的RGB顏色值。2.顏色對話框252.顏色對話框例如,用顏色對話框改變窗體的背風(fēng)光PrivateSubCommand2_Click()Commondialog1.CancelError=false CommonDialog1.ShowColorForm1.BackColor=CommonDialog1.ColorEndSub2.顏色對話框PrivateSubComma26“字體〞對話框用來設(shè)置并返回所用字體的名字、字形、大小、效果及顏色。使用字體對話框時,必須首先設(shè)置對話框的Flags屬性,然后才能使用ShowFont方法實際顯示對話框。3.字體對話框

“字體〞對話框用來設(shè)置并返回所用字體的名字、字形、27Flags屬性值可以設(shè)置為如下3種情況:①cdlCFScreenFonts:屏幕字體。②cdlCFPrinterFonts:打印機(jī)字體。③cdlCFBoth:可以是屏幕字體,也可以是打印機(jī)字體。3.字體對話框

Flags屬性值可以設(shè)置為如下3種情況:3.字體對話框28書本P235【例8.4】書本P235【例8.4】29例:例:30Copys:設(shè)置或返回打印份數(shù)FromPage:打印起始頁ToPage:打印終止頁P(yáng)rinterDefault:確定在打印對話框中的選擇是否用于改變系統(tǒng)默認(rèn)的打印機(jī)設(shè)置。4.打印對話框Copys:設(shè)置或返回打印份數(shù)4.打印對話框318.2.1菜單設(shè)計概述菜單提供了一種構(gòu)造化的方式向使用應(yīng)用程序的用戶提示可用的命令。菜單是Windows應(yīng)用程序中十分關(guān)鍵的要素之一,以分組的形式組織多個命令或操作。8.2菜單設(shè)計8.2.1菜單設(shè)計概述8.2菜單設(shè)計32菜單設(shè)計概述下拉式菜單彈出式菜單8.2菜單設(shè)計菜單設(shè)計概述8.2菜單設(shè)計33下拉式菜單設(shè)計下拉式菜單是用戶在任何時候都可以在頂端菜單條上選擇后拉出的菜單。下拉式菜單設(shè)計下拉式菜單是用戶在任何時候都可以在頂端菜單條348.1菜單設(shè)計下拉式菜單設(shè)計在VisualBasic中,把每個菜單項看成是一個控件。菜單控件只包含一個事件,即Click事件。8.1菜單設(shè)計下拉式菜單設(shè)計35下拉式菜單設(shè)計主菜單名快捷鍵熱鍵子菜單標(biāo)記主菜單條分隔線菜單項子菜單名下拉式菜單設(shè)計主菜單條分隔線菜單項368.2菜單設(shè)計8.2.2下拉式菜單設(shè)計下拉式菜單的設(shè)計通過菜單編輯器來完成。翻開菜單編輯器的方法:①“工具〞菜單→菜單編輯器②組合鍵“Ctrl+E〞③工具欄上的“菜單編輯器〞按鈕④鼠標(biāo)右鍵→菜單編輯器8.2菜單設(shè)計8.2.2下拉式菜單設(shè)計37下拉式菜單設(shè)計翻開“菜單編輯器〞:“Tools〞菜單在“工具欄〞上選擇“菜單編輯器按鈕〞下拉式菜單設(shè)計翻開“菜單編輯器〞:“Tools〞菜單38下拉式菜單設(shè)計“菜單編輯器〞的使用:菜單列表框菜單項屬性

操作按鈕下拉式菜單設(shè)計“菜單編輯器〞的使用:菜單列表框菜單項屬性39下拉式菜單設(shè)計關(guān)于下拉式菜單的說明1.Caption:菜單項標(biāo)題。2.Name:菜單項名稱。當(dāng)通過代碼處理菜單項時需要使用Name屬性。3.熱鍵:在菜單的Caption屬性中在某個字母前加上“&〞符號就可以將該字母變?yōu)闊徭I。當(dāng)文件菜單展開時,同時按下Alt和O就可以選擇“翻開〞菜單命令。4.ShortCut:快捷鍵,不用翻開“文件〞菜單就可以通過Ctrl+O快捷鍵來選擇“翻開〞菜單命令。“翻開〞菜單項的快捷鍵為Ctrl+O。下拉式菜單設(shè)計關(guān)于下拉式菜單的說明405.分隔條:將菜單按功能進(jìn)展分組。通過將Caption屬性設(shè)置為“-〞〔減號、連字符〕可以將菜單項設(shè)置為分隔條。6.有效(Enabled)檢查框:當(dāng)某個菜單項的顏色變?yōu)榛疑珪r表示該菜單項的功能被禁用。將菜單項的Enabled屬性設(shè)置為False就可以禁用該菜單項。7.可見(Visible)檢查框:通過將菜單項的Visible屬性設(shè)置為False可以隱藏該菜單項,而要重新顯示該菜單項僅需將Visible屬性重新設(shè)置為True。8.復(fù)選(Checked)檢查框:通過將菜單項的Checked屬性設(shè)置為True可以在菜單項前顯示復(fù)選標(biāo)志。5.分隔條:將菜單按功能進(jìn)展分組。通過將Caption屬性設(shè)411.利用菜單編輯器定義菜單項

例:為電子標(biāo)題板增加一個下拉式菜單,利用菜單控制標(biāo)題板的內(nèi)容、字號、字體風(fēng)格等。1.利用菜單編輯器定義菜單項例:為電子標(biāo)題板增加一個下拉42設(shè)計菜單項:設(shè)計菜單項:43例:使用菜單控件數(shù)組:簡化編程,用一段代碼處理多個菜單項例:使用菜單控件數(shù)組:44彈出式菜單獨立于菜單欄而顯示在窗體的浮動菜單,操作時使用右鍵。在彈出式菜單上顯示的內(nèi)容與鼠標(biāo)位置有關(guān)。8.2.3彈出式菜單設(shè)計彈出式菜單獨立于菜單欄而顯示在窗體的浮動菜單,操作時使用右鍵45與一般菜單的設(shè)計相似,彈出式菜單通過菜單編輯器建立。不同的是菜單名的Visible屬性設(shè)置為False,或者在菜單編輯器中不選中“可見〞復(fù)選框。8.2.3彈出式菜單設(shè)計與一般菜單的設(shè)計相似,彈出式菜單通過菜單編46語法格式:[窗體名.]PopupMenu菜單名,flags,x,y說明:省略窗體名,將翻開當(dāng)前窗體的菜單;菜單名是通過菜單編輯器設(shè)計的菜單的名稱Flags參數(shù)為一些常量數(shù)值的設(shè)置,包含位置常數(shù)和行為常數(shù),表示彈出的位置和觸發(fā)的鍵位置。8.2.3彈出式菜單設(shè)計語法格式:8.2.3彈出式菜單設(shè)計47內(nèi)部常數(shù)位置常數(shù)說明vbPopupMenuLeftAlign0(默認(rèn))彈出菜單的左上角位于XvbPopupMenuCenterAlign4彈出菜單上框中央位于XvbPopupMenuRightAlign8彈出菜單的右上角位于X8.2.3彈出式菜單設(shè)計內(nèi)部常數(shù)位置常數(shù)說明vbPopupMenuLeftAlign48內(nèi)部常數(shù)行為常數(shù)說明vbPopupMenuLeftButton0(默認(rèn))菜單只接受右鍵單擊vbPopupMenuRightButton2菜單接受左、右鍵單擊兩個常數(shù)可以相加或者以or相連

8.2.3彈出式菜單設(shè)計內(nèi)部常數(shù)行為常數(shù)說明vbPopupMenuLeftButto49例為窗體設(shè)計一個彈出式菜單,用于設(shè)置窗體背景顏色。實例50例為窗體設(shè)計一個彈出式菜單,用于設(shè)置窗體背景顏色。實例5例

在窗體上添加一個文本框,通過下拉菜單實現(xiàn)復(fù)制、粘貼功能

實例51例在窗體上添加一個文本框,通過下拉菜單實現(xiàn)復(fù)制、粘貼功能實點擊“右鍵〞顯示菜單項的時候,應(yīng)先判斷文本框中是否有文本被選中,確定哪些菜單項可用。IfText1.SelLength>0ThenmnuEditCut.Enabled=TruemnuEditCopy.Enabled=TrueElsemnuEditCut.Enabled=FalsemnuEditCopy.Enabled=False點擊“右鍵〞顯示菜單項的時候,應(yīng)先判斷52〔1〕剪貼板對象Clipboard①剪貼板是內(nèi)存的一局部區(qū)域,所有應(yīng)用程序都能使用剪貼板中的信息。在VB中,所有與剪貼板有關(guān)的操作是通過剪貼板對象實現(xiàn)的。剪貼板對象是用于暫時保存圖形和文本的一種特殊的控件,它是VB中預(yù)先定義好的控件組。②剪貼板對象沒有任何屬性和事件,但通過它的一些方法可以提供對系統(tǒng)剪貼板的訪問〔即發(fā)送和接收數(shù)據(jù)〕。〔1〕剪貼板對象Clipboard53③剪貼板對象的方法Clipboard.Clear

將剪貼板清空

將選中的字符串復(fù)制到剪貼板Clipboard.SetDataData[,Format]

將非文本數(shù)據(jù)復(fù)制到剪貼板上Clipboard.GetText

將剪貼板上的字符串發(fā)送到光標(biāo)所在位置Clipboard.GetData

將剪貼板上的非文本數(shù)據(jù)發(fā)送到光標(biāo)所在位置③剪貼板對象的方法54PrivateSubmnuEditCut_Click()IfText1.SelLength>0Then

Text1.SelText=""'同時要讓粘貼菜單項有效

mnuEditPaste.Enabled=TrueEndIfEndSub表示文本框中選定的文本‘表示文本框中選定文本的長度PrivateSubmnuEditCut_Click()55PrivateSubmnuEditCopy_Click()IfText1.SelLength>0ThenmnuEditPaste.Enabled=TrueEndIfEndSub'復(fù)制與剪切的區(qū)別是Text1.SelText=""'同時要讓粘貼菜單項有效PrivateSubmnuEditCopy_Click(56PrivateSubmnuEditPaste_Click()IfLen(Clipboard.GetText)>0ThenEndIfEndSub注意:Text1.SelText=Clipboard.GetText和Text1.Text=Clipboard.GetText的區(qū)別〔在光標(biāo)所在位置處插入剪貼板上的數(shù)據(jù)〕PrivateSubmnuEditPaste_Click57PrivateSubmnuEditSel_Click()IfmnuEditSel.Checked=FalseThenmnuEditSel.Checked=TrueText1.SelStart=0Text1.SelLength=Len(Text1.Text)ElsemnuEditSel.Checked=FalseText1.SelLength=0EndIfEndSubPrivateSubmnuEditSel_Click()58Text1.Text:表示文本框中的文本Text1.SelText:表示文本框中選定的文本Text1.SelLength:表示文本框中選定文本的長度Text1.SelStart:表示文本框中選定文本的開場位置Text1.Text:表示文本框中的文本59綜合實例:參照WINDOWS的記事本程序,建立一個有菜單功能的文本編輯器綜合實例:參照WINDOWS的記事本程序,建立一個有菜單功能608.3MDI窗體多重窗體是指一個應(yīng)用程序中有多個并列的普通窗體,每個窗體都是一個對象,可以有屬于自己的對象、屬性和事件過程,完成不同的功能。MDI窗體,是指一個應(yīng)用程序〔父窗體〕中包含多個文檔〔子窗體〕,絕大多數(shù)基于Windows的大型應(yīng)用程序都是MDI窗體,如MicrosoftExcel和MicrosoftWord等應(yīng)用程序都是MDI窗體程序。MDI窗體可以同時翻開多個文檔,它簡化了文檔之間的信息交換。8.3MDI窗體多重窗體是指一個應(yīng)用程序61MDI窗體允許創(chuàng)立在單個容器窗體中包含多個窗體的應(yīng)用程序,允許用戶同時顯示多個文檔,每個文檔顯示在它自己的窗體中。MDI窗體是有父子關(guān)系的窗體,可以根據(jù)窗體作用的不同,來確定窗體是父窗體還是子窗體。文檔或子窗體被包含在父窗體中,父窗體為應(yīng)用程序中所有的子窗體提供工作空間,用戶在父窗體完成幾乎所有的工作。8.3MDI窗體MDI窗體允許創(chuàng)立在單個容器窗體中包含多62例:MicrosoftExcel允許創(chuàng)立并顯示不同樣式的多文檔窗體,每個子窗體都被限制在Excel父窗體的區(qū)域之內(nèi)。當(dāng)最小化Excel父窗體時,所有的文檔窗體都被最小化,只有父窗體的圖標(biāo)顯示在任務(wù)欄中。當(dāng)關(guān)閉Excel父窗體時,所有的文檔窗體都被關(guān)閉,但關(guān)閉某個文檔窗口時,Excel父窗體不會被關(guān)閉。8.3MDI窗體例:8.3MDI窗體63具體什么時候選用單窗體程序,什么時候使用多重窗體或MDI窗體呢?這需要根據(jù)應(yīng)用程序的目的,來決定使用哪種界面樣式最好。例:日歷程序最好設(shè)成單窗體程序,因為沒有必要同時翻開一個以上日歷;8.3MDI窗體具體什么時候選用單窗體程序,什么時候使用多64一個處理保險索賠的應(yīng)用程序可能要設(shè)計成MDI窗體,使用多文檔界面樣式,因為一個職員很可能會同時處理一個以上索賠,或者需要對兩個索賠進(jìn)展比較;一個管理信息系統(tǒng)〔MIS系統(tǒng)〕,需要完成的功能比較多,比方最根本的功能添加、修改、刪除和查詢記錄等,這些功能的實現(xiàn)都需要窗體界面,而這些窗體一般都是并列使用,所以像學(xué)生成績管理系統(tǒng)這樣的應(yīng)用程序,一般設(shè)計成多重窗體程序。8.3MDI窗體一個處理保險索賠的應(yīng)用程序可能要設(shè)計成MD658.3MDI窗體程序設(shè)計1MDI窗體特性2創(chuàng)立MDI應(yīng)用程序3MDI窗體及子窗體4MDI窗體的菜單8.3MDI窗體程序設(shè)計1MDI窗體特性66MDI窗體程序由父窗口和子窗口組成,父窗口又稱為MDI窗體,它被作為子窗口的容器。子窗口又稱為文檔窗口,它用于顯示各個文檔,所有的子窗口都具有一樣的功能。MDI窗體程序由父窗口和子窗口組成,父671MDI窗體特性在運(yùn)行時,MDI窗體及其所有的子窗體都呈現(xiàn)特定的性質(zhì):〔1〕所有子窗體均顯示在MDI窗體的工作空間內(nèi)。像其它的窗體一樣,用戶能移動子窗體和改變子窗體的大小,不過,它們被限制于這一工作空間內(nèi)。1MDI窗體特性在運(yùn)行時,MDI681MDI窗體特性在運(yùn)行時,MDI窗體及其所有的子窗體都呈現(xiàn)特定的性質(zhì):〔2〕當(dāng)最小化一個子窗體時,它的圖標(biāo)將顯示于MDI窗體上而不是在任務(wù)欄中。當(dāng)最小化MDI窗體時,此MDI窗體及其所有子窗體將由一個圖標(biāo)來代表。當(dāng)復(fù)原MDI窗體時,MDI窗體及其所有子窗體將按最小化之前的狀態(tài)顯示出來。1MDI窗體特性在運(yùn)行時,MDI69〔3〕當(dāng)最大化一個子窗體時,它的標(biāo)題會與MDI窗體的標(biāo)題組合在一起并顯示于MDI窗體的標(biāo)題欄上。〔4〕通過設(shè)定AutoShowChildren屬性,子窗體可以在窗體加載時自動顯示(True)或自動隱藏(False)。1MDI窗體特性〔3〕當(dāng)最大化一個子窗體時,它的標(biāo)題會與MDI窗體的標(biāo)題70〔5〕活動子窗體的菜單〔假設(shè)有〕將顯示在MDI窗體的菜單欄中,而不是顯示在子窗體中。MDI窗體程序在所謂的“以文檔為中心的應(yīng)用〞中特別有用,在這種應(yīng)用程序中,通常同時使用多個窗口來顯示或編輯文檔。1MDI窗體特性〔5〕活動子窗體的菜單〔假設(shè)有〕將顯示在MDI窗體的菜單712創(chuàng)立MDI應(yīng)用程序前面已經(jīng)學(xué)習(xí)過,可以通過“添加窗體〞對話框添加窗體,但這不是MDI窗體,只是多個普通窗體而已。如果創(chuàng)立一個MDI窗體應(yīng)用程序,可以按以下步驟執(zhí)行:〔1〕在“工程〞菜單中單擊“添加MDI窗體〞菜單項,可以創(chuàng)立MDI應(yīng)用程序的父窗體。2創(chuàng)立MDI應(yīng)用程序前面已經(jīng)學(xué)習(xí)過,722創(chuàng)立MDI應(yīng)用程序注意,一個應(yīng)用程序只能有一個MDI窗體,如果工程已經(jīng)有了一個MDI窗體,那么該“工程〞菜單上的“添加MDI窗體〞命令就不可使用。MDI應(yīng)用程序的父窗體是子窗體的容器,在該窗體中可以有菜單欄、工具欄、狀態(tài)欄等,但不可以有文本框等控件。菜單欄、工具欄的建立我們在后面幾節(jié)中介紹。2創(chuàng)立MDI應(yīng)用程序注意,一個應(yīng)用程序只能有一個MDI73〔2〕如果要創(chuàng)立子窗體,首先在“工程〞菜單中單擊“添加窗體〞菜單項,創(chuàng)立一個普通的窗體,然后將該窗體的MDIChild屬性設(shè)為True。一個應(yīng)用程序可以包含許多相似或者不同樣式的MDI子窗體,假設(shè)要建立多個子窗體,那么重復(fù)上述操作就可以了。2創(chuàng)立MDI應(yīng)用程序〔2〕如果要創(chuàng)立子窗體,首先在“工程〞菜單中單擊“添加窗體〞74創(chuàng)立以文檔為中心的應(yīng)用程序,一般要求在運(yùn)行時能提供假設(shè)干子窗體以存取不同的文檔,而在設(shè)計時事先創(chuàng)立好假設(shè)干個子窗體的方法是不可取的。一般是先創(chuàng)立一個子窗體作為這個應(yīng)用程序文檔的模板,然后通過對象變量來實現(xiàn)。2創(chuàng)立MDI應(yīng)用程序創(chuàng)立以文檔為中心的應(yīng)用程序,一般要求在運(yùn)行75例假設(shè)已經(jīng)建立了一個名稱為“frmMDIChild〞的子窗體模板,那么使用下面的語句:DimNewDocAsNewfrmMDIChild就會為“frmMDIChild〞建立一個新的實例NewDoc,新實例具有與“frmMDIChild〞窗體一樣的屬性、控件和代碼。2創(chuàng)立MDI應(yīng)用程序例假設(shè)已經(jīng)建立了一個名稱為“frmMDIChild〞的76在運(yùn)行時,子窗體顯示在MDI父窗體工作空間之內(nèi)〔其區(qū)域在父窗體邊框以內(nèi)及標(biāo)題與菜單欄之下〕。在設(shè)計時,子窗體不是限制在MDI窗體區(qū)域之內(nèi),可以添加控件、設(shè)置屬性、編寫代碼以及設(shè)計子窗體功能,就像在其它VisualBasic窗體中做的那樣。2創(chuàng)立MDI應(yīng)用程序在運(yùn)行時,子窗體顯示在MDI父窗77通過查看MDIChild屬性或者檢查工程資源管理器,可以確定窗體是否是一個MDI子窗體。VisualBasic在“工程資源管理器〞中為MDI窗體與MDI子窗體顯示了特定的圖標(biāo),如以下圖所示。2創(chuàng)立MDI應(yīng)用程序通過查看MDIChild屬性或者檢查工程資源管理器,可以78“工程資源管理器〞中的MDI窗體、MDI子窗體和標(biāo)準(zhǔn)窗體“工程資源管理器〞中的MDI窗體、MDI子窗體和標(biāo)準(zhǔn)窗體79例例803MDI窗體及子窗體〔1〕加載MDI窗體及子窗體加載子窗體時,其父窗體〔MDI窗體〕會自動加載并顯示。而加載MDI窗體時,其子窗體并不會自動加載。子窗體是缺省的啟動窗體,因而在程序運(yùn)行時,子窗體和MDI窗體兩者都會加載。3MDI窗體及子窗體〔1〕加載MDI窗體及子窗體81MDI窗體有AutoShowChildren屬性,決定是否自動顯示子窗體。如果該屬性被設(shè)置為True,那么當(dāng)改變子窗體的屬性〔如Caption等〕后,會自動顯示該子窗體,不再需要使用Show方法;3MDI窗體及子窗體MDI窗體有AutoShowChildren82如果設(shè)置該屬性為False,那么改變子窗體的屬性值后,不會自動顯示該子窗體,子窗體處于隱藏狀態(tài),直至用Show方法把它們顯示出來。這就允許在子窗體變成可見之前更新標(biāo)題、位置和菜單等各種細(xì)節(jié)。3MDI窗體及子窗體如果設(shè)置該屬性為False,那么改變子窗體的屬性值后,83〔2〕設(shè)置子窗體的大小和位置如果MDI子窗體具有大小可變的邊框〔即BorderStyle=2〕,在其加載時,Windows將決定其初始的高度、寬度和位置。邊框大小可變的子窗體,其初始大小與位置取決于MDI窗體的大小,而不是設(shè)計時子窗體的大小。當(dāng)MDI子窗體的邊框大小不可變〔即BorderStyle=0、1或3〕時,那么它將用設(shè)計時的Height和Width屬性被載入。3MDI窗體及子窗體〔2〕設(shè)置子窗體的大小和位置3MDI窗體及子窗體84〔2〕設(shè)置子窗體的大小和位置如果設(shè)置AutoShowChildren為False,那么在MDI子窗體載入以后,把它設(shè)為可見狀態(tài)之前,可以改變其大小和位置。3MDI窗體及子窗體〔2〕設(shè)置子窗體的大小和位置3MDI窗體及子窗體85定位窗體的代碼最好放在窗體的Load過程中,這樣會在窗體實際出現(xiàn)在屏幕上之前將窗體位置確定。要將窗體居中,需要在窗體的Load過程中簡單地添加代碼來計算并指定窗體左上角的位置3MDI窗體及子窗體定位窗體的代碼最好放在窗體的Load過程中,86如以下代碼所示:Me.Left=(Screen.Width-Me.Width)/2Me.Top=(Screen.Height-Me.Height)/2利用坐標(biāo)系統(tǒng)可以將窗體定位于屏幕或MDI窗體的任意位置。3MDI窗體及子窗體如以下代碼所示:3MDI窗體及子窗體87〔3〕MDI窗體程序子窗體的排列順序和方式在MDI應(yīng)用程序中,缺省狀態(tài)下子窗體是按照窗口翻開的順序排列的:當(dāng)前活動窗體排在最前端,最先翻開的窗體排在最底端。我們可以借助ZOrder方法動態(tài)地改變子窗體的排列順序。3MDI窗體及子窗體〔3〕MDI窗體程序子窗體的排列順序和方式3MDI窗體及88〔3〕MDI窗體程序子窗體的排列順序和方式ZOrder方法的語法為:窗體名稱.ZOrder[Position]其中,Position取值為0時表示對象移至最前端,為1時表示對象移至最底端,缺省時值為0。3MDI窗體及子窗體〔3〕MDI窗體程序子窗體的排列順序和方式3MDI窗體及89〔3〕MDI窗體程序子窗體的排列順序和方式例如,某一MDI應(yīng)用程序有三個子窗體:Form1、Form2和Form3,假設(shè)要將Form3移至最底端,那么可在設(shè)計代碼時加上Form3.Zorder1即可。3MDI窗體及子窗體〔3〕MDI窗體程序子窗體的排列順序和方式3MDI窗體及90利用Zorder方法我們也可以創(chuàng)立浮動窗體,浮動窗體總是浮動到外表,也就是說它可以被其他窗體覆蓋,但馬上自動變成當(dāng)前窗口并顯示在所有窗體的最上層。3MDI窗體及子窗體利用Zorder方法我們也可以創(chuàng)立浮動窗體,91要創(chuàng)立浮動窗體,需要在窗體上添加一個定時器控件,并將它的Interval屬性設(shè)置為想讓窗體浮現(xiàn)的時間,如500毫秒。在Timer1_Timer事件過程中編寫如下代碼,便可以使用Zorder方法使窗體浮動到頂部:PrivateSubTimer1_Timer()ZorderEndSub3MDI窗體及子窗體要創(chuàng)立浮動窗體,需要在窗體上添加一個定時器92使用過Word的用戶都知道,Word可同時翻開多個文檔,并能以不同方式對文檔窗口進(jìn)展排列,如平鋪、層疊等。這種重新排列子窗體的功能,在MDI應(yīng)用程序中是可以通過編程來實現(xiàn)的。具體方法就是在相應(yīng)的菜單控件的Click事件中調(diào)用Arrange方法,使用Arrange方法可以重新對齊子窗體,可以層疊、水平平鋪或者沿著MDI窗體的下部排列子窗體圖標(biāo)等方式來顯示子窗體。3MDI窗體及子窗體使用過Word的用戶都知道,Word可同時93Arrange方法的語法為:MDI窗體對象.ArrangeArrangement其中,Arrangement用來指定如何排列MDI應(yīng)用程序的子窗體,其值可以是常數(shù)或是數(shù)值,Arrangement的取值如下表所示。3MDI窗體及子窗體Arrange方法的語法為:3MDI窗體及子窗體94表Arrangement的取值常數(shù)值描述vbCascade0層疊所有非最小化MDI子窗體vbTileHorizontal1水平平鋪所有非最小化MDI子窗體vbTileVertical2垂直平鋪所有非最小化MDI子窗體vbArrangeIcons3重排最小化MDI子窗體的圖標(biāo)3MDI窗體及子窗體表Arrangement的取值常數(shù)值描述vbCascade95例如:假設(shè)“平鋪〞菜單項名為mnuHorizon,可編寫如下代碼,實現(xiàn)子窗體的平鋪:PrivateSubmnuHorizon_Click()MDIForm1.ArrangevbTileHorizontal'MDIForm1為MDI窗體名稱EndSub3MDI窗體及子窗體例如:假設(shè)“平鋪〞菜單項名為mnuHori96當(dāng)平鋪或者層疊有著固定邊框類型的子窗體時,每個子窗體都像具有可變尺寸邊框那樣被定位,這使得子窗體可能重疊。即使MDI窗體被最小化,仍可以重新排列窗口和圖標(biāo),當(dāng)MDI窗體最大化時,可以看到重排的結(jié)果。3MDI窗體及子窗體當(dāng)平鋪或者層疊有著固定邊框類型的子窗體時,97〔4〕維護(hù)子窗體的狀態(tài)信息當(dāng)子窗體被卸載時,其中的內(nèi)容也會隨之消失,所以在用戶決定退出MDI應(yīng)用程序時,必須有保存信息的時機(jī),讓用戶執(zhí)行存盤操作,這樣才能確保數(shù)據(jù)不會喪失。當(dāng)數(shù)據(jù)沒有改變而去存盤是沒有意義的,因此,應(yīng)用程序必須隨時都能確定自上次保存以來子窗體中的數(shù)據(jù)是否有改變。〔4〕維護(hù)子窗體的狀態(tài)信息當(dāng)子窗體被98〔4〕維護(hù)子窗體的狀態(tài)信息可以通過在每個子窗體中聲明一個公用變量來實現(xiàn)此功能,例如:PublicDataChangeedAsBoolean當(dāng)子窗體中的內(nèi)容改變時,可將此變量設(shè)為True。在保存完數(shù)據(jù)后,再設(shè)為False。〔4〕維護(hù)子窗體的狀態(tài)信息可以通過在每個子窗99在MDI應(yīng)用程序中,在關(guān)閉應(yīng)用程序時,VisualBasic將試圖卸載MDI窗體,當(dāng)MDI窗體被卸載時,QueryUnload事件首先為MDI窗體調(diào)用,然后再為每一個翻開的子窗體調(diào)用。如果在這些QueryUnload事件過程中沒有代碼,那么取消Unload事件,然后,每一個子窗體被卸載,最后MDI窗體被卸載。〔4〕維護(hù)子窗體的狀態(tài)信息在MDI應(yīng)用程序中,在關(guān)閉應(yīng)用程序時,Vis100由于QueryUnload事件在窗體卸載之前被調(diào)用,因此在窗體卸載前可以給用戶一個保存窗體、文件和一些數(shù)據(jù)的時機(jī)。我們可以在該事件過程中,判斷前面聲明的那個公用變量標(biāo)志,然后提示用戶是否執(zhí)行保存操作,也可以在窗體的卸載事件〔Unload〕中判斷此變量標(biāo)志,這樣,在MDI應(yīng)用程序退出時就不會喪失數(shù)據(jù)了。〔4〕維護(hù)子窗體的狀態(tài)信息由于QueryUnload事件在窗體卸1014MDI窗體的菜單MDI應(yīng)用程序的菜單設(shè)計與一般應(yīng)用程序的菜單設(shè)計方法一致,可利用【菜單編輯器】來完成,但MDI應(yīng)用程序的菜單還有其特殊性。在MDI應(yīng)用程序中,每一個子窗體的菜單都顯示在MDI窗體上,而不是在子窗體本身。當(dāng)子窗體有焦點時,該子窗體的菜單〔如果有的話〕就代替菜單欄上的MDI窗體的菜單。如果沒有可見的子窗體,或者帶有焦點的子窗體沒有菜單,那么顯示MDI窗體的菜單。4MDI窗體的菜單MDI應(yīng)用程序的菜單設(shè)計1024MDI窗體的菜單MDI應(yīng)用程序使用幾套菜單的情況很普遍。當(dāng)翻開一個文檔時,應(yīng)用程序顯示與該類文檔相關(guān)的菜單。通常,當(dāng)沒有可見子窗體時,會顯示一個不同的菜單。例如,當(dāng)沒有文件翻開時,MicrosoftExcel只顯示“文件〞與“幫助〞菜單。當(dāng)用戶翻開一個文件時,其他菜單就會顯示出來,如“文件〞、“編輯〞、“視圖〞、“插入〞、“格式〞、“工具〞和“窗口〞等。4MDI窗體的菜單MDI應(yīng)用程序使用幾套菜103管理MDI應(yīng)用程序中菜單的一個方法是把希望在任何時候都顯示的菜單控件放在MDI窗體上,當(dāng)運(yùn)行該應(yīng)用程序時,如果沒有可見的子窗體,會自動顯示MDI窗體菜單。把應(yīng)用于子窗體的菜單控件放置到子窗體中,在運(yùn)行時,只要有一個子窗體可見,這些菜單標(biāo)題就會顯示在MDI窗體的菜單欄中。4MDI窗體的菜單管理MDI應(yīng)用程序中菜單的一個方法是把104雖然子窗體的菜單可替代主窗體的菜單,但在編寫菜單命令的響應(yīng)事件的處理時卻不一樣。在VisualBasic中,只能在本窗體內(nèi)響應(yīng)菜單命令,因此主菜單的命令處理只能在主窗體模塊中進(jìn)展,而子窗體的命令處理只能在子窗體模塊中進(jìn)展。即使子窗體的菜單顯示在主窗體的菜單位置,但它還是子窗體的菜單。4MDI窗體的菜單雖然子窗體的菜單可替代主窗體的菜單,但在105有些應(yīng)用程序支持多種類型的文檔。例如,在MicrosoftAccess中,可以翻開表格、查詢、窗體和其它文檔類型。要在VisualBasic中創(chuàng)立這樣的應(yīng)用程序,應(yīng)使用兩個子窗體。設(shè)計一個帶有執(zhí)行工作單任務(wù)菜單的子窗體和另一個帶有完成圖表任務(wù)菜單的子窗體。在運(yùn)行時,當(dāng)工作單窗體的實例有焦點時,那么顯示工作單菜單,而中選取圖表時,那么顯示圖表窗體的菜單。如果所有的工作單和圖表都關(guān)閉,那么顯示MDI窗體的菜單。4MDI窗體的菜單有些應(yīng)用程序支持多種類型的文檔。例如,在M106大多數(shù)MDI應(yīng)用程序的菜單欄中都有“窗口〞這一特殊菜單項,這是一個顯示所有翻開的子窗體標(biāo)題的特殊菜單,如以下圖所示。另外,有些應(yīng)用程序?qū)⒉倏v子窗體的命令,比方“層疊〞、“平鋪〞與“排列圖標(biāo)〞,也放在這個菜單中。4MDI窗體的菜單大多數(shù)MDI應(yīng)用程序的菜單欄中都有“窗口〞這一特殊菜單項1074MDI窗體的菜單4MDI窗體的菜單108ThankYou世界觸手可及攜手共進(jìn),齊創(chuàng)精品工程ThankYou世界觸手可及攜手共進(jìn),齊創(chuàng)精品工程109VB對話框與菜單程序設(shè)計VB對話框與菜單程序設(shè)計VB對話框與菜單程序設(shè)計對話框是一種特殊的“窗體〞,只有一個“關(guān)閉〞按鈕,不能最大化和最小化,大小一般不能改變。一些應(yīng)用程序中常常需要進(jìn)展翻開和保存文件、選擇顏色和字體、打印等操作,這就需要應(yīng)用程序提供相應(yīng)的對話框以方便使用。這些對話框作為Windows資源,在VB中已被做成“公共對話框〞(CommonDialog)控件。VB對話框與菜單程序設(shè)計VB對話框與菜單程序設(shè)計VB對話框與110對話框是一種特殊的“窗體〞,只有一個“關(guān)閉〞按鈕,不能最大化和最小化,大小一般不能改變。一些應(yīng)用程序中常常需要進(jìn)展翻開和保存文件、選擇顏色和字體、打印等操作,這就需要應(yīng)用程序提供相應(yīng)的對話框以方便使用。這些對話框作為Windows資源,在VB中已被做成“公共對話框〞(CommonDialog)控件。8.1對話框設(shè)計對話框是一種特殊的“窗體〞,只有一個“關(guān)閉〞按鈕,不能最大化111通用對話框通用對話框是一種ActiveX控件,位于“MicrosoftCommonDialogControl6.0〞部件中。8.1對話框設(shè)計工程→部件→

通用對話框通用對話框是一種ActiveX控件,位于“M112VB對話框與菜單程序設(shè)計課件113設(shè)計時,通用對話框在窗體上顯示成一個圖標(biāo),可以在“屬性頁〞里中進(jìn)展屬性設(shè)置,將其設(shè)置為不同類型,可以通過代碼,使用Action屬性或Show方法,將通用對話框設(shè)置成不同的具體對話框。8.1對話框設(shè)計設(shè)計時,通用對話框在窗體上顯示成一個圖標(biāo),可1148.1對話框設(shè)計通過在代碼中設(shè)置不同的Action值可以產(chǎn)生不同的對話框。如果沒有設(shè)置該屬性〔默認(rèn)值為0〕,運(yùn)行時通用對話框不會產(chǎn)生任何信息,直到設(shè)置了該屬性后才會出現(xiàn)相應(yīng)的對話框。8.1對話框設(shè)計通過在代碼中設(shè)置不同的Action值可以產(chǎn)1158.1對話框設(shè)計Action屬性返回或設(shè)置被顯示的對話框的類型:

CommonDialogName.Action[=Value]其中CommonDialogName為通用對話框控件的名字,Value值可以取1~6的整數(shù),其含義如表示。8.1對話框設(shè)計Action屬性返回或設(shè)置被顯示的對話框的116VB對話框與菜單程序設(shè)計課件1178.1對話框設(shè)計注意:使用該控件所產(chǎn)生的對話框僅提供了人機(jī)信息交互的界面,并不能實現(xiàn)真正的操作〔如翻開、另存、打印等〕,要想實現(xiàn)這些具體的操作必須進(jìn)展相應(yīng)的編程。8.1對話框設(shè)計注意:使用該控件所產(chǎn)生的對話框僅提供了人-118ShowX方法設(shè)置被顯示的對話框的類型,其語法格式為:其中CommonDialogName為通用對話框控件的名字。ShowX方法參考表8-1。ShowX方法設(shè)置被顯示的對話框的類型,其語法格式為1198.1對話框設(shè)計DialogTitle屬性:產(chǎn)生的對話框的標(biāo)題文字,如不進(jìn)展設(shè)置那么會使用默認(rèn)的標(biāo)題。CancelError屬性:在每個所產(chǎn)生的對話框上都有“取消〞按鈕,該屬性決定程序運(yùn)行時,用戶單擊了“取消〞按鈕后是否會產(chǎn)生出錯信息。8.1對話框設(shè)計DialogTitle屬性:產(chǎn)生的對話框的1208.1對話框設(shè)計該屬性取True時,單擊“取消〞按鈕會產(chǎn)生一個錯誤信息,同時自動將Err對象的Number屬性值設(shè)置為32755。程序中可以通過代碼來訪問這個屬性以判斷是否按下了“取消〞按鈕,以決定程序的走向。如果該屬性值置為False〔默認(rèn)〕,那么當(dāng)單擊“取消〞按鈕時,不會產(chǎn)生任何出錯信息。8.1對話框設(shè)計該屬性取True時,單擊“取消〞按鈕會產(chǎn)生121“翻開〞對話框充分利用了操作系統(tǒng)的功能,它可以遍歷整個的磁盤目錄構(gòu)造,找到所需要的文件,并以“列表〞或“詳細(xì)資料〞的方式顯示出來。文件對話框具有兩種模式,即Open和Save(SaveAs),其中Open模式可以使用戶指定翻開的文件,Save模式可以使用戶指定保存的文件。1.文件對話框“翻開〞對話框充分利用了操作系統(tǒng)的功能,它可以遍歷整122Action屬性:對話框類型〔取值1或2〕DefaultExt屬性:對話框默認(rèn)的文件擴(kuò)展名DialogTitle屬性:對話框標(biāo)題欄的字符串

1.文件對話框Action屬性:對話框類型〔取值1或2〕1.文件對話框123FileName屬性:文件名稱

該屬性值為字符串類型,用于設(shè)置或得到用戶所選定的文件名。即當(dāng)程序執(zhí)行時,用戶選定的某個文件名將顯示在“文件名〞文本框中,同時此文件名及相關(guān)路徑將以字符串的形式賦值給FileName屬性。1.文件對話框FileName屬性:文件名稱

該屬性值為字符串類型,用于設(shè)124InitDir屬性:初始路徑

該屬性用來指定“翻開〞對話框中的初始目錄。默認(rèn)設(shè)置顯示當(dāng)前目錄。初始路徑在設(shè)計時或代碼編寫中均可進(jìn)展設(shè)置。例:

Cd1.InitDir=〞E:\教材〞

‘將對話框的初始路徑設(shè)為E盤“教材〞文件夾1.文件對話框InitDir屬性:初始路徑

該屬性用來指定“翻開〞對話框中125Filter屬性:文件類型

通過Filter屬性在“翻開〞對話框中設(shè)置文件的類型。該屬性的值是一個字符串,由一組或多組文件類型表達(dá)式構(gòu)成,每組代表一類文件。構(gòu)成規(guī)那么是:

類型說明字符串|類型通配表達(dá)式[|類型說明字符串|類型通配表達(dá)式]…1.文件對話框Filter屬性:文件類型

通過Filter屬性在“翻開〞對126類型說明字符串為對文件類型的說明,類型通配表達(dá)式表示需顯示的文件類型,各組之間用“|〞符號分開。1.文件對話框Object.Filter[=Description1|Filter1|Description2|Filter2…]類型說明字符串為對文件類型的說明,類型通配表達(dá)式表示需顯示的127FilterIndes屬性:過濾器索引

該屬性用于表示用戶在“文件類型〞列表框中選定的文件類型的序號。例如與圖所示相對應(yīng),Word文檔的該屬性值為1,文本文件的該屬性值為2。1.文件對話框FilterIndes屬性:過濾器索引

該屬性用于表示用戶在128⑴設(shè)置適當(dāng)屬性,使對話框的標(biāo)題為“翻開文件〞,初始目錄為c盤根目錄;⑵設(shè)置適當(dāng)屬性,使對話框的“文件類型〞下拉式組合框中有二行:“Word文檔〞、“所有文件〞,默認(rèn)的是“所有文件〞;⑶編寫命令按鈕的事件過程,使得單擊按鈕可以彈出“翻開文件〞對話框;例:在窗體上畫一個名稱為command1的命令按鈕,標(biāo)題為〞翻開文件“,再畫一個名稱為CD1的通用對話框。程序運(yùn)行后,假設(shè)單擊命令按鈕,那么彈出翻開文件對話框,并按以下要求設(shè)置屬性和代碼:⑴設(shè)置適當(dāng)屬性,使對話框的標(biāo)題為“翻開文件〞,初始目錄129思路:首先,條件⑴、⑵是在對話框?qū)傩源翱谏吓渲脜?shù),可在對話框?qū)傩源翱趦?nèi)填寫“對話框標(biāo)題〞、“初始化路徑〞的相應(yīng)內(nèi)容;其次,過濾器的內(nèi)容為:Word文檔|*.doc|所有文件|*.*;且根據(jù)題意,過濾器索引值設(shè)為2;另,條件⑶是指編寫代碼,調(diào)用通用對話框,可采用如下程序代碼:cd1.action=1或者cd1.showopen均可思路:130書本P232【例8.1】書本P232【例8.1】131建立一個命令按鈕,用于翻開一個Windows應(yīng)用程序,如“計算器〞、“日歷〞等。建立一個命令按鈕,用于翻開一個Windows應(yīng)用程序,如“計132“另存為〞對話框為用戶在存儲文件時提供了一個標(biāo)準(zhǔn)界面,供用戶選擇或鍵入所要存入文件的路徑及文件名。

“另存為〞對話框所涉及的屬性與“翻開〞對話框根本一樣,只是多了一個DefaultExt屬性,該屬性用來表示所存文件的默認(rèn)擴(kuò)展名。2.另存為對話框“另存為〞對話框為用戶在存儲文件時提供了一個標(biāo)準(zhǔn)界面,供用戶1332.顏色對話框“顏色〞對話框中的調(diào)色板除了提供根本顏色外,還提供了自定義顏色,供用戶調(diào)色。對用戶來說,使用該對話框,可以獲得非常直觀的效果。Color屬性:用來返回選定的RGB顏色值。2.顏色對話框1342.顏色對話框例如,用顏色對話框改變窗體的背風(fēng)光PrivateSubCommand2_Click()Commondialog1.CancelError=false CommonDialog1.ShowColorForm1.BackColor=CommonDialog1.ColorEndSub2.顏色對話框PrivateSubComma135“字體〞對話框用來設(shè)置并返回所用字體的名字、字形、大小、效果及顏色。使用字體對話框時,必須首先設(shè)置對話框的Flags屬性,然后才能使用ShowFont方法實際顯示對話框。3.字體對話框

“字體〞對話框用來設(shè)置并返回所用字體的名字、字形、136Flags屬性值可以設(shè)置為如下3種情況:①cdlCFScreenFonts:屏幕字體。②cdlCFPrinterFonts:打印機(jī)字體。③cdlCFBoth:可以是屏幕字體,也可以是打印機(jī)字體。3.字體對話框

Flags屬性值可以設(shè)置為如下3種情況:3.字體對話框137書本P235【例8.4】書本P235【例8.4】138例:例:139Copys:設(shè)置或返回打印份數(shù)FromPage:打印起始頁ToPage:打印終止頁P(yáng)rinterDefault:確定在打印對話框中的選擇是否用于改變系統(tǒng)默認(rèn)的打印機(jī)設(shè)置。4.打印對話框Copys:設(shè)置或返回打印份數(shù)4.打印對話框1408.2.1菜單設(shè)計概述菜單提供了一種構(gòu)造化的方式向使用應(yīng)用程序的用戶提示可用的命令。菜單是Windows應(yīng)用程序中十分關(guān)鍵的要素之一,以分組的形式組織多個命令或操作。8.2菜單設(shè)計8.2.1菜單設(shè)計概述8.2菜單設(shè)計141菜單設(shè)計概述下拉式菜單彈出式菜單8.2菜單設(shè)計菜單設(shè)計概述8.2菜單設(shè)計142下拉式菜單設(shè)計下拉式菜單是用戶在任何時候都可以在頂端菜單條上選擇后拉出的菜單。下拉式菜單設(shè)計下拉式菜單是用戶在任何時候都可以在頂端菜單條1438.1菜單設(shè)計下拉式菜單設(shè)計在VisualBasic中,把每個菜單項看成是一個控件。菜單控件只包含一個事件,即Click事件。8.1菜單設(shè)計下拉式菜單設(shè)計144下拉式菜單設(shè)計主菜單名快捷鍵熱鍵子菜單標(biāo)記主菜單條分隔線菜單項子菜單名下拉式菜單設(shè)計主菜單條分隔線菜單項1458.2菜單設(shè)計8.2.2下拉式菜單設(shè)計下拉式菜單的設(shè)計通過菜單編輯器來完成。翻開菜單編輯器的方法:①“工具〞菜單→菜單編輯器②組合鍵“Ctrl+E〞③工具欄上的“菜單編輯器〞按鈕④鼠標(biāo)右鍵→菜單編輯器8.2菜單設(shè)計8.2.2下拉式菜單設(shè)計146下拉式菜單設(shè)計翻開“菜單編輯器〞:“Tools〞菜單在“工具欄〞上選擇“菜單編輯器按鈕〞下拉式菜單設(shè)計翻開“菜單編輯器〞:“Tools〞菜單147下拉式菜單設(shè)計“菜單編輯器〞的使用:菜單列表框菜單項屬性

操作按鈕下拉式菜單設(shè)計“菜單編輯器〞的使用:菜單列表框菜單項屬性148下拉式菜單設(shè)計關(guān)于下拉式菜單的說明1.Caption:菜單項標(biāo)題。2.Name:菜單項名稱。當(dāng)通過代碼處理菜單項時需要使用Name屬性。3.熱鍵:在菜單的Caption屬性中在某個字母前加上“&〞符號就可以將該字母變?yōu)闊徭I。當(dāng)文件菜單展開時,同時按下Alt和O就可以選擇“翻開〞菜單命令。4.ShortCut:快捷鍵,不用翻開“文件〞菜單就可以通過Ctrl+O快捷鍵來選擇“翻開〞菜單命令。“翻開〞菜單項的快捷鍵為Ctrl+O。下拉式菜單設(shè)計關(guān)于下拉式菜單的說明1495.分隔條:將菜單按功能進(jìn)展分組。通過將Caption屬性設(shè)置為“-〞〔減號、連字符〕可以將菜單項設(shè)置為分隔條。6.有效(Enabled)檢查框:當(dāng)某個菜單項的顏色變?yōu)榛疑珪r表示該菜單項的功能被禁用。將菜單項的Enabled屬性設(shè)置為False就可以禁用該菜單項。7.可見(Visible)檢查框:通過將菜單項的Visible屬性設(shè)置為False可以隱藏該菜單項,而要重新顯示該菜單項僅需將Visible屬性重新設(shè)置為True。8.復(fù)選(Checked)檢查框:通過將菜單項的Checked屬性設(shè)置為True可以在菜單項前顯示復(fù)選標(biāo)志。5.分隔條:將菜單按功能進(jìn)展分組。通過將Caption屬性設(shè)1501.利用菜單編輯器定義菜單項

例:為電子標(biāo)題板增加一個下拉式菜單,利用菜單控制標(biāo)題板的內(nèi)容、字號、字體風(fēng)格等。1.利用菜單編輯器定義菜單項例:為電子標(biāo)題板增加一個下拉151設(shè)計菜單項:設(shè)計菜單項:152例:使用菜單控件數(shù)組:簡化編程,用一段代碼處理多個菜單項例:使用菜單控件數(shù)組:153彈出式菜單獨立于菜單欄而顯示在窗體的浮動菜單,操作時使用右鍵。在彈出式菜單上顯示的內(nèi)容與鼠標(biāo)位置有關(guān)。8.2.3彈出式菜單設(shè)計彈出式菜單獨立于菜單欄而顯示在窗體的浮動菜單,操作時使用右鍵154與一般菜單的設(shè)計相似,彈出式菜單通過菜單編輯器建立。不同的是菜單名的Visible屬性設(shè)置為False,或者在菜單編輯器中不選中“可見〞復(fù)選框。8.2.3彈出式菜單設(shè)計與一般菜單的設(shè)計相似,彈出式菜單通過菜單編155語法格式:[窗體名.]PopupMenu菜單名,flags,x,y說明:省略窗體名,將翻開當(dāng)前窗體的菜單;菜單名是通過菜單編輯器設(shè)計的菜單的名稱Flags參數(shù)為一些常量數(shù)值的設(shè)置,包含位置常數(shù)和行為常數(shù),表示彈出的位置和觸發(fā)的鍵位置。8.2.3彈出式菜單設(shè)計語法格式:8.2.3彈出式菜單設(shè)計156內(nèi)部常數(shù)位置常數(shù)說明vbPopupMenuLeftAlign0(默認(rèn))彈出菜單的左上角位于XvbPopupMenuCenterAlign4彈出菜單上框中央位于XvbPopupMenuRightAlign8彈出菜單的右上角位于X8.2.3彈出式菜單設(shè)計內(nèi)部常數(shù)位置常數(shù)說明vbPopupMenuLeftAlign157內(nèi)部常數(shù)行為常數(shù)說明vbPopupMenuLeftButton0(默認(rèn))菜單只接受右鍵單擊vbPopupMenuRightButton2菜單接受左、右鍵單擊兩個常數(shù)可以相加或者以or相連

8.2.3彈出式菜單設(shè)計內(nèi)部常數(shù)行為常數(shù)說明vbPopupMenuLeftButto158例為窗體設(shè)計一個彈出式菜單,用于設(shè)置窗體背景顏色。實例159例為窗體設(shè)計一個彈出式菜單,用于設(shè)置窗體背景顏色。實例5例

在窗體上添加一個文本框,通過下拉菜單實現(xiàn)復(fù)制、粘貼功能

實例160例在窗體上添加一個文本框,通過下拉菜單實現(xiàn)復(fù)制、粘貼功能實點擊“右鍵〞顯示菜單項的時候,應(yīng)先判斷文本框中是否有文本被選中,確定哪些菜單項可用。IfText1.SelLength>0ThenmnuEditCut.Enabled=TruemnuEditCopy.Enabled=TrueElsemnuEditCut.Enabled=FalsemnuEditCopy.Enabled=False點擊“右鍵〞顯示菜單項的時候,應(yīng)先判斷161〔1〕剪貼板對象Clipboard①剪貼板是內(nèi)存的一局部區(qū)域,所有應(yīng)用程序都能使用剪貼板中的信息。在VB中,所有與剪貼板有關(guān)的操作是通過剪貼板對象實現(xiàn)的。剪貼板對象是用于暫時保存圖形和文本的一種特殊的控件,它是VB中預(yù)先定義好的控件組。②剪貼板對象沒有任何屬性和事件,但通過它的一些方法可以提供對系統(tǒng)剪貼板的訪問〔即發(fā)送和接收數(shù)據(jù)〕。〔1〕剪貼板對象Clipboard162③剪貼板對象的方法Clipboard.Clear

將剪貼板清空

將選中的字符串復(fù)制到剪貼板Clipboard.SetDataData[,Format]

將非文本數(shù)據(jù)復(fù)制到剪貼板上Clipboard.GetText

將剪貼板上的字符串發(fā)送到光標(biāo)所在位置Clipboard.GetData

將剪貼板上的非文本數(shù)據(jù)發(fā)送到光標(biāo)所在位置③剪貼板對象的方法163PrivateSubmnuEditCut_Click()IfText1.SelLength>0Then

Text1.SelText=""'同時要讓粘貼菜單項有效

mnuEditPaste.Enabled=TrueEndIfEndSub表示文本框中選定的文本‘表示文本框中選定文本的長度PrivateSubmnuEditCut_Click()164PrivateSubmnuEditCopy_Click()IfText1.SelLength>0ThenmnuEditPaste.Enabled=TrueEndIfEndSub'復(fù)制與剪切的區(qū)別是Text1.SelText=""'同時要讓粘貼菜單項有效PrivateSubmnuEditCopy_Click(165PrivateSubmnuEditPaste_Click()IfLen(Clipboard.GetText)>0ThenEndIfEndSub注意:Text1.SelText=Clipboard.GetText和Text1.Text=Clipboard.GetText的區(qū)別〔在光標(biāo)所在位置處插入剪貼板上的數(shù)據(jù)〕PrivateSubmnuEditPaste_Click166PrivateSubmnuEditSel_Click()IfmnuEditSel.Checked=FalseThenmnuEditSel.Checked=TrueText1.SelStart=0Text1.SelLength=Len(Text1.Text)ElsemnuEditSel.Checked=FalseText1.SelLength=0EndIfEndSubPrivateSubmnuEditSel_Click()167Text1.Text:表示文本框中的文本Text1.SelText:表示文本框中選定的文本Text1.SelLength:表示文本框中選定文本的長度Text1.SelStart:表示文本框中選定文本的開場位置Text1.Text:表示文本框中的文本168綜合實例:參照WINDOWS的記事本程序,建立一個有菜單功能的文本編輯器綜合實例:參照WINDOWS的記事本程序,建立一個有菜單功能1698.3MDI窗體多重窗體是指一個應(yīng)用程序中有多個并列的普通窗體,每個窗體都是一個對象,可以有屬于自己的對象、屬性和事件過程,完成不同的功能。MDI窗體,是指一個應(yīng)用程序〔父窗體〕中包含多個文檔〔子窗體〕,絕大多數(shù)基于Windows的大型應(yīng)用程序都是MDI窗體,如MicrosoftExcel和MicrosoftWord等應(yīng)用程序都是MDI窗體程序。MDI窗體可以同時翻開多個文檔,它簡化了文檔之間的信息交換。8.3MDI窗體多重窗體是指一個應(yīng)用程序170MDI窗體允許創(chuàng)立在單個容器窗體中包含多個窗體的應(yīng)用程序,允許用戶同時顯示多個文檔,每個文檔顯示在它自己的窗體中。MDI窗體是有父子關(guān)系的窗體,可以根據(jù)窗體作用的不同,來確定窗體是父窗體還是子窗體。文檔或子窗體被包含在父窗體中,父窗體為應(yīng)用程序中所有的子窗體提供工作空間,用戶在父窗體完成幾乎所有的工作。8.3MDI窗體MDI窗體允許創(chuàng)立在單個容器窗體中包含多171例:MicrosoftExcel允許創(chuàng)立并顯示不同樣式的多文檔窗體,每個子窗體都被限制在Excel父窗體的區(qū)域之內(nèi)。當(dāng)最小化Excel父窗體時,所有的文檔窗體都被最小化,只有父窗體的圖標(biāo)顯示在任務(wù)欄中。當(dāng)關(guān)閉Excel父窗體時,所有的文檔窗體都被關(guān)閉,但關(guān)閉某個文檔窗口時,Excel父窗體不會被關(guān)閉。8.3MDI窗體例:8.3MDI窗體172具體什么時候選用單窗體程序,什么時候使用多重窗體或MDI窗體呢?這需要根據(jù)應(yīng)用程序的目的,來決定使用哪種界面樣式最好。例:日歷程序最好設(shè)成單窗體程序,因為沒有必要同時翻開一個以上日歷;8.3MDI窗體具體什么時候選用單窗體程序,什么時候使用多173一個處理保險索賠的應(yīng)用程序可能要設(shè)計成MDI窗體,使用多文檔界面樣式,因為一個職員很可能會同時處理一個以上索賠,或者需要對兩個索賠進(jìn)展比較;一個管理信息系統(tǒng)〔MIS系統(tǒng)〕,需要完成的功能比較多,比方最根本的功能添加、修改、刪除和查詢記錄等,這些功能的實現(xiàn)都需要窗體界面,而這些窗體一般都是并列使用,所以像學(xué)生成績管理系統(tǒng)這樣的應(yīng)用程序,一般設(shè)計成多重窗體程序。8.3MDI窗體一個處理保險索賠的應(yīng)用程序可能要設(shè)計成MD1748.3MDI窗體程序設(shè)計1MDI窗體特性2創(chuàng)立MDI應(yīng)用程序3MDI窗體及子窗體4MDI窗體的菜單8.3MDI窗體程序設(shè)計1MDI窗體特性175MDI窗體程序由父窗口和子窗口組成,父窗口又稱為MDI窗體,它被作為子窗口的容器。子窗口又稱為文檔窗口,它用于顯示各個文檔,所有的子窗口都具有一樣的功能。MDI窗體程序由父窗口和子窗口組成,父1761MDI窗體特性在運(yùn)行時,MDI窗體及其所有的子窗體都呈現(xiàn)特定的性質(zhì):〔1〕所有子窗體均顯示在MDI窗體的工作空間內(nèi)。像其它的窗體一樣,用戶能移動子窗體和改變子窗體的大小,不過,它們被限制于這一工作空間內(nèi)。1MDI窗體特性在運(yùn)行時,MDI1771MDI窗體特性在運(yùn)行時,MDI窗體及其所有的子窗體都呈現(xiàn)特定的性質(zhì):〔2〕當(dāng)最小化一個子窗體時,它的圖標(biāo)將顯示于MDI窗體上而不是在任務(wù)欄中。當(dāng)最小化MDI窗體時,此MDI窗體及其所有子窗體將由一個圖標(biāo)來代表。當(dāng)復(fù)原MDI窗體時,MDI窗體及其所有子窗體將按最小化之前的狀態(tài)顯示出來。1MDI窗體特性在運(yùn)行時,MDI178〔3〕當(dāng)最大化一個子窗體時,它的標(biāo)題會與MDI窗體的標(biāo)題組合在一起并顯示于MDI

溫馨提示

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

評論

0/150

提交評論