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

下載本文檔

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

文檔簡(jiǎn)介

1、第第8章用戶界面設(shè)計(jì)章用戶界面設(shè)計(jì) 8.1對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)8.2菜單設(shè)計(jì)菜單設(shè)計(jì)8.3多文檔界面應(yīng)用程序多文檔界面應(yīng)用程序?qū)υ捒蚴且环N特殊的對(duì)話框是一種特殊的“窗體窗體”,只有一個(gè),只有一個(gè)“關(guān)閉關(guān)閉”按鈕,按鈕,不能最大化和最小化,大小一般不能改變。不能最大化和最小化,大小一般不能改變。一些應(yīng)用程序中常常需要進(jìn)行打開和保存文件、選擇顏色一些應(yīng)用程序中常常需要進(jìn)行打開和保存文件、選擇顏色和字體、打印等操作,這就需要應(yīng)用程序提供相應(yīng)的對(duì)和字體、打印等操作,這就需要應(yīng)用程序提供相應(yīng)的對(duì)話框以方便使用。這些對(duì)話框作為話框以方便使用。這些對(duì)話框作為windows資源,資源,在在vb中已被做成中已被

2、做成“公共對(duì)話框公共對(duì)話框”(common dialog)控件??丶?。8.1對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)8.1.1通用對(duì)話框通用對(duì)話框通用對(duì)話框是一種通用對(duì)話框是一種activex控件控件 ,位于,位于 “microsoft common dialog control 6.0”部件中。部件中。8.1對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)工程工程部件部件 common dialog control 6.0 設(shè)計(jì)時(shí),通用對(duì)話框在窗體上顯示成一個(gè)圖設(shè)計(jì)時(shí),通用對(duì)話框在窗體上顯示成一個(gè)圖標(biāo),可以在標(biāo),可以在“屬性頁(yè)屬性頁(yè)”里中進(jìn)行屬性設(shè)置,將其里中進(jìn)行屬性設(shè)置,將其設(shè)置為不同類型,設(shè)置為不同類型,可以通過(guò)可以通過(guò)代碼代碼,使用

3、,使用action屬性或?qū)傩曰騭how方法方法,將,將通用對(duì)話框設(shè)置成不同的通用對(duì)話框設(shè)置成不同的具體對(duì)話框具體對(duì)話框。8.1對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)8.1對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)通過(guò)在代碼中設(shè)置不同的通過(guò)在代碼中設(shè)置不同的action值可以產(chǎn)生不同的對(duì)話值可以產(chǎn)生不同的對(duì)話框。如果沒(méi)有設(shè)置該屬性(默認(rèn)值為框。如果沒(méi)有設(shè)置該屬性(默認(rèn)值為0),運(yùn)行時(shí)通用),運(yùn)行時(shí)通用對(duì)話框不會(huì)產(chǎn)生任何信息,直到設(shè)置了該屬性后才會(huì)出對(duì)話框不會(huì)產(chǎn)生任何信息,直到設(shè)置了該屬性后才會(huì)出現(xiàn)相應(yīng)的對(duì)話框。現(xiàn)相應(yīng)的對(duì)話框。8.1對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)action屬性返回或設(shè)置被顯示的對(duì)話框的類型:屬性返回或設(shè)置被顯示的對(duì)話框的類型:

4、commondialogname.action value其中其中commondialogname為通用對(duì)話框控件的名字,為通用對(duì)話框控件的名字,value值可以取值可以取16的整數(shù),的整數(shù), 其含義如表示。其含義如表示。 8.1對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)注意:注意:使用該控件所產(chǎn)生的對(duì)話框僅提供了人使用該控件所產(chǎn)生的對(duì)話框僅提供了人-機(jī)信息機(jī)信息交互的交互的界面界面,并不能實(shí)現(xiàn)真正的操作(如打開、另存、,并不能實(shí)現(xiàn)真正的操作(如打開、另存、打印等),要想實(shí)現(xiàn)這些具體的操作必須進(jìn)行打印等),要想實(shí)現(xiàn)這些具體的操作必須進(jìn)行相應(yīng)的編相應(yīng)的編程程。 showx方法設(shè)置被顯示的對(duì)話框的類型,其語(yǔ)方法設(shè)置被顯

5、示的對(duì)話框的類型,其語(yǔ)法格式為:法格式為: 其中其中commondialogname為通用對(duì)話框控件的為通用對(duì)話框控件的名字。名字。showx方法參考表方法參考表8-1。 commondialogname.showx8.1對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)dialogtitle屬性:屬性:產(chǎn)生的對(duì)話框的標(biāo)題文字,如不產(chǎn)生的對(duì)話框的標(biāo)題文字,如不進(jìn)行設(shè)置則會(huì)使用默認(rèn)的標(biāo)題。進(jìn)行設(shè)置則會(huì)使用默認(rèn)的標(biāo)題。cancelerror屬性:屬性:在每個(gè)所產(chǎn)生的對(duì)話框上都有在每個(gè)所產(chǎn)生的對(duì)話框上都有“取消取消”按鈕,該屬性決定程序運(yùn)行時(shí),用戶單擊按鈕,該屬性決定程序運(yùn)行時(shí),用戶單擊了了“取消取消”按鈕后是否會(huì)產(chǎn)生出錯(cuò)信息。

6、按鈕后是否會(huì)產(chǎn)生出錯(cuò)信息。8.1對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)該屬性取該屬性取true時(shí),單擊時(shí),單擊“取消取消”按鈕會(huì)產(chǎn)生一個(gè)錯(cuò)按鈕會(huì)產(chǎn)生一個(gè)錯(cuò)誤信息,同時(shí)自動(dòng)將誤信息,同時(shí)自動(dòng)將err對(duì)象的對(duì)象的number屬性值設(shè)置屬性值設(shè)置為為32755。程序中可以通過(guò)代碼來(lái)訪問(wèn)這個(gè)屬性以判。程序中可以通過(guò)代碼來(lái)訪問(wèn)這個(gè)屬性以判斷是否按下了斷是否按下了“取消取消”按鈕,以決定程序的走向。按鈕,以決定程序的走向。如果該屬性值置為如果該屬性值置為false(默認(rèn)),則當(dāng)單擊(默認(rèn)),則當(dāng)單擊“取消取消”按鈕時(shí),不會(huì)產(chǎn)生任何出錯(cuò)信息。按鈕時(shí),不會(huì)產(chǎn)生任何出錯(cuò)信息。 “打開打開”對(duì)話框充分利用了操作系統(tǒng)的功能,它對(duì)話框

7、充分利用了操作系統(tǒng)的功能,它可以遍歷整個(gè)的磁盤目錄結(jié)構(gòu),找到所需要的文可以遍歷整個(gè)的磁盤目錄結(jié)構(gòu),找到所需要的文件,并以件,并以“列表列表”或或“詳細(xì)資料詳細(xì)資料”的方式顯示出的方式顯示出來(lái)。文件對(duì)話框具有兩種模式,即來(lái)。文件對(duì)話框具有兩種模式,即open和和save (save as),其中,其中open模式可以模式可以使用戶指定打開使用戶指定打開的文件的文件,save模式可以模式可以使用戶指定保存的文件使用戶指定保存的文件。1. 文件對(duì)話框文件對(duì)話框 action屬性:對(duì)話框類型(取值屬性:對(duì)話框類型(取值1或或2)defaultext屬性:對(duì)話框默認(rèn)的文件擴(kuò)展名屬性:對(duì)話框默認(rèn)的文件擴(kuò)展

8、名dialogtitle屬性:對(duì)話框標(biāo)題欄的字符串屬性:對(duì)話框標(biāo)題欄的字符串1. 文件對(duì)話框文件對(duì)話框 filename屬性:屬性:文件名稱該屬性值為字符串類型,用于設(shè)置或得到用戶所選定的文件名。即當(dāng)程序執(zhí)行時(shí),用戶選定的某個(gè)文件名將顯示在“文件名”文本框中,同時(shí)此文件名及相關(guān)路徑將以字符串的形式賦值給filename屬性。1. 文件對(duì)話框文件對(duì)話框 initdir屬性:屬性:初始路徑該屬性用來(lái)指定“打開”對(duì)話框中的初始目錄。默認(rèn)設(shè)置顯示當(dāng)前目錄。初始路徑在設(shè)計(jì)時(shí)或代碼編寫中均可進(jìn)行設(shè)置。例:cd1.initdir=”e:教材”將對(duì)話框的初始路徑設(shè)為e盤“教材”文件夾1. 文件對(duì)話框文件對(duì)話框

9、 filter屬性:屬性:文件類型通過(guò)filter屬性在“打開”對(duì)話框中設(shè)置文件的類型。該屬性的值是一個(gè)字符串,由一組或多組文件類型表達(dá)式構(gòu)成,每組代表一類文件。構(gòu)成規(guī)則是:類型說(shuō)明字符串|類型通配表達(dá)式|類型說(shuō)明字符串|類型通配表達(dá)式1. 文件對(duì)話框文件對(duì)話框 類型說(shuō)明字符串為對(duì)文件類型的說(shuō)明,類型通配表達(dá)式表示需顯示的文件類型,各組之間用“|”符號(hào)分開。1. 文件對(duì)話框文件對(duì)話框 object.filterdescription1|filter1|description2|filter2 filterindes屬性:屬性:過(guò)濾器索引該屬性用于表示用戶在“文件類型”列表框中選定的文件類型的序

10、號(hào)。例如與圖所示相對(duì)應(yīng),word文檔的該屬性值為1,文本文件的該屬性值為2。1. 文件對(duì)話框文件對(duì)話框 設(shè)置適當(dāng)屬性,使對(duì)話框的標(biāo)題為設(shè)置適當(dāng)屬性,使對(duì)話框的標(biāo)題為“打開文件打開文件”,初始,初始目錄為目錄為c c盤盤根目錄;根目錄; 設(shè)置適當(dāng)屬性,使對(duì)話框的設(shè)置適當(dāng)屬性,使對(duì)話框的“文件類型文件類型”下拉式組合框下拉式組合框中有二行:中有二行:“wordword文檔文檔”、“所有文件所有文件”,默認(rèn)的默認(rèn)的是是“所有所有文件文件”; 編寫命令按鈕的事件過(guò)程,使得單擊按鈕可以彈出編寫命令按鈕的事件過(guò)程,使得單擊按鈕可以彈出“打打開文件開文件”對(duì)話框?qū)υ捒?;例例:在窗體上畫一個(gè)名稱為:在窗體上畫

11、一個(gè)名稱為command1command1的命令按鈕,標(biāo)題為的命令按鈕,標(biāo)題為”打開文件打開文件“,再畫一個(gè)名稱為,再畫一個(gè)名稱為cd1cd1的通用對(duì)話框。程序運(yùn)行的通用對(duì)話框。程序運(yùn)行后,若單擊命令按鈕,則彈出打開文件對(duì)話框,并按下列要后,若單擊命令按鈕,則彈出打開文件對(duì)話框,并按下列要求設(shè)置屬性和代碼:求設(shè)置屬性和代碼:思路: 首先,條件、是在對(duì)話框?qū)傩源翱谏吓渲脜?shù),可在對(duì)話框?qū)傩源翱趦?nèi)填寫“對(duì)話框標(biāo)題”、“初始化路徑”的相應(yīng)內(nèi)容; 其次,過(guò)濾器的內(nèi)容為:wordword文檔文檔| |* *.doc|.doc|所有文件所有文件| |* *. .* *;且根據(jù)題意,過(guò)濾器索引值設(shè)為2 2;

12、 另,條件是指編寫代碼,調(diào)用通用對(duì)話框,可采用如下程序代碼: cd1.action=1cd1.action=1 或者 cd1.showopencd1.showopen 均可書本p232【例8.1】u建立一個(gè)命令按鈕,用于打開一個(gè)建立一個(gè)命令按鈕,用于打開一個(gè)windows應(yīng)用程序,如應(yīng)用程序,如“計(jì)計(jì)算器算器”、“日歷日歷”等。等?!傲泶鏋榱泶鏋椤睂?duì)話框?yàn)橛脩粼诖鎯?chǔ)文件時(shí)提供了一對(duì)話框?yàn)橛脩粼诖鎯?chǔ)文件時(shí)提供了一個(gè)標(biāo)準(zhǔn)界面,供用戶選擇或鍵入所要存入文件的個(gè)標(biāo)準(zhǔn)界面,供用戶選擇或鍵入所要存入文件的路徑及文件名。路徑及文件名?!傲泶鏋榱泶鏋椤睂?duì)話框所涉及的屬性與對(duì)話框所涉及的屬性與“打開打開”對(duì)話對(duì)

13、話框基本相同,只是多了一個(gè)框基本相同,只是多了一個(gè)defaultext屬性,屬性,該屬性用來(lái)表示所存文件的默認(rèn)擴(kuò)展名。該屬性用來(lái)表示所存文件的默認(rèn)擴(kuò)展名。2.另存為對(duì)話框另存為對(duì)話框 2. 顏色對(duì)話框顏色對(duì)話框 “顏色顏色”對(duì)話框中的調(diào)色板除了提供基本顏色外,還對(duì)話框中的調(diào)色板除了提供基本顏色外,還提供了自定義顏色,供用戶調(diào)色。對(duì)用戶來(lái)說(shuō),使提供了自定義顏色,供用戶調(diào)色。對(duì)用戶來(lái)說(shuō),使用該對(duì)話框,可以獲得非常直觀的效果。用該對(duì)話框,可以獲得非常直觀的效果。ucolor屬性屬性:用來(lái)返回選定的用來(lái)返回選定的rgb顏色值。顏色值。 2. 顏色對(duì)話框顏色對(duì)話框 例如,用例如,用顏色對(duì)話框改變窗體的背

14、景色顏色對(duì)話框改變窗體的背景色privatesubcommand2_click()commondialog1.cancelerror=falsecommondialog1.showcolorform1.backcolor=commondialog1.colorendsub “字體字體”對(duì)話框用來(lái)設(shè)置并返回所用字體的名字、對(duì)話框用來(lái)設(shè)置并返回所用字體的名字、字形、大小、效果及顏色。使用字體對(duì)話框時(shí),字形、大小、效果及顏色。使用字體對(duì)話框時(shí),必須必須首先設(shè)置對(duì)話框的首先設(shè)置對(duì)話框的flags屬性屬性,然后才能使用,然后才能使用showfont方法實(shí)際顯示對(duì)話框。方法實(shí)際顯示對(duì)話框。3. 字體對(duì)話框

15、字體對(duì)話框 flags屬性值可以設(shè)置為如下屬性值可以設(shè)置為如下3種情況:種情況: cdlcfscreenfonts:屏幕字體。:屏幕字體。 cdlcfprinterfonts:打印機(jī)字體。:打印機(jī)字體。 cdlcfboth:可以是屏幕字體,也可以是打?。嚎梢允瞧聊蛔煮w,也可以是打印機(jī)字體。機(jī)字體。 3. 字體對(duì)話框字體對(duì)話框 書本p235【例8.4】例:例:copys:設(shè)置或返回打印份數(shù):設(shè)置或返回打印份數(shù)frompage:打印起始頁(yè):打印起始頁(yè)topage:打印終止頁(yè):打印終止頁(yè)printerdefault :確定在打印對(duì)話框中的選擇:確定在打印對(duì)話框中的選擇是否用于改變系統(tǒng)默認(rèn)的打印機(jī)設(shè)置

16、。是否用于改變系統(tǒng)默認(rèn)的打印機(jī)設(shè)置。4. 打印對(duì)話框打印對(duì)話框8.2.1菜單設(shè)計(jì)概述菜單設(shè)計(jì)概述菜單提供了一種結(jié)構(gòu)化的方式向使用應(yīng)用程序菜單提供了一種結(jié)構(gòu)化的方式向使用應(yīng)用程序的用戶提示可用的命令。的用戶提示可用的命令。菜單是菜單是windows應(yīng)用程序中十分關(guān)鍵的要素之應(yīng)用程序中十分關(guān)鍵的要素之一,以一,以分組的形式分組的形式組織多個(gè)命令或操作組織多個(gè)命令或操作。8.2菜單設(shè)計(jì)菜單設(shè)計(jì)8.2.1菜單設(shè)計(jì)概述菜單設(shè)計(jì)概述下拉式菜單下拉式菜單彈出式菜單彈出式菜單8.2菜單設(shè)計(jì)菜單設(shè)計(jì)8.2.2下拉式菜單設(shè)計(jì)下拉式菜單設(shè)計(jì)u下拉式菜單是用戶在任下拉式菜單是用戶在任何時(shí)候都可以在頂端菜單何時(shí)候都可以

17、在頂端菜單條上選擇后拉出的菜單。條上選擇后拉出的菜單。8.1菜單設(shè)計(jì)菜單設(shè)計(jì)8.2.2下拉式菜單設(shè)計(jì)下拉式菜單設(shè)計(jì)在在visual basic中,把每個(gè)菜單項(xiàng)看成是一個(gè)中,把每個(gè)菜單項(xiàng)看成是一個(gè)控件。菜單控件只包含一個(gè)事件,即控件。菜單控件只包含一個(gè)事件,即click事件。事件。8.2.2下拉式菜單設(shè)計(jì)下拉式菜單設(shè)計(jì)主菜單名主菜單名快捷鍵快捷鍵熱鍵熱鍵子菜單標(biāo)記子菜單標(biāo)記主菜單條主菜單條分隔線分隔線菜單項(xiàng)菜單項(xiàng)子菜單名子菜單名8.2菜單設(shè)計(jì)菜單設(shè)計(jì)8.2.2下拉式菜單設(shè)計(jì)下拉式菜單設(shè)計(jì)下拉式菜單的設(shè)計(jì)通過(guò)下拉式菜單的設(shè)計(jì)通過(guò)菜單編輯器菜單編輯器來(lái)完成。打來(lái)完成。打開菜單編輯器的方法:開菜單編輯

18、器的方法: “工具工具”菜單菜單菜單編輯器菜單編輯器 組合鍵組合鍵“ctrl+e”ctrl+e” 工具欄上的工具欄上的“菜單編輯器菜單編輯器”按鈕按鈕 鼠標(biāo)右鍵鼠標(biāo)右鍵菜單編輯器菜單編輯器8.2.2下拉式菜單設(shè)計(jì)下拉式菜單設(shè)計(jì)打開打開“菜單編輯器菜單編輯器”:“tools”菜單菜單 在在“工具欄工具欄”上選擇上選擇“菜單編輯器按鈕菜單編輯器按鈕”8.2.2下拉式菜單設(shè)計(jì)下拉式菜單設(shè)計(jì)“菜單編輯器菜單編輯器”的使用:的使用:菜單列表框菜單列表框菜單項(xiàng)屬性菜單項(xiàng)屬性 操作按鈕操作按鈕8.2.2下拉式菜單設(shè)計(jì)下拉式菜單設(shè)計(jì)關(guān)于下拉式菜單的說(shuō)明關(guān)于下拉式菜單的說(shuō)明1caption:菜單項(xiàng)標(biāo)題。菜單項(xiàng)標(biāo)

19、題。2name:菜單項(xiàng)名稱。當(dāng)通過(guò)代碼處理菜單項(xiàng)時(shí)需菜單項(xiàng)名稱。當(dāng)通過(guò)代碼處理菜單項(xiàng)時(shí)需要使用要使用name屬性。屬性。3熱鍵:熱鍵: 在菜單的在菜單的caption屬性中在某個(gè)字母前加上屬性中在某個(gè)字母前加上“&”符號(hào)就可以將該字母變?yōu)闊徭I。當(dāng)文件菜單展開符號(hào)就可以將該字母變?yōu)闊徭I。當(dāng)文件菜單展開時(shí),同時(shí)按下時(shí),同時(shí)按下alt和和o就可以選擇就可以選擇“打開打開”菜單命令。菜單命令。4shortcut:快捷鍵,快捷鍵, 不用打開不用打開“文件文件”菜單就可菜單就可以通過(guò)以通過(guò)ctrl+o快捷鍵來(lái)選擇快捷鍵來(lái)選擇“打開打開”菜單命令。菜單命令?!按虼蜷_開”菜單項(xiàng)的快捷鍵為菜單項(xiàng)的快捷鍵

20、為ctrl+o。5分隔條分隔條:將菜單按功能進(jìn)行分組。通過(guò)將:將菜單按功能進(jìn)行分組。通過(guò)將caption屬性設(shè)置為屬性設(shè)置為“-”(減號(hào)、連字符)可以將菜單項(xiàng)設(shè)置為(減號(hào)、連字符)可以將菜單項(xiàng)設(shè)置為分隔條。分隔條。6有效有效(enabled)檢查框檢查框:當(dāng)某個(gè)菜單項(xiàng)的顏色變?yōu)椋寒?dāng)某個(gè)菜單項(xiàng)的顏色變?yōu)榛疑珪r(shí)表示該菜單項(xiàng)的功能被禁用。將菜單項(xiàng)的灰色時(shí)表示該菜單項(xiàng)的功能被禁用。將菜單項(xiàng)的enabled屬性設(shè)置為屬性設(shè)置為false就可以禁用該菜單項(xiàng)。就可以禁用該菜單項(xiàng)。7可見可見(visible)檢查框檢查框:通過(guò)將菜單項(xiàng)的:通過(guò)將菜單項(xiàng)的visible屬屬性設(shè)置為性設(shè)置為false可以隱藏該菜單

21、項(xiàng),而要重新顯示該菜可以隱藏該菜單項(xiàng),而要重新顯示該菜單項(xiàng)僅需將單項(xiàng)僅需將visible屬性重新設(shè)置為屬性重新設(shè)置為true。8復(fù)選復(fù)選(checked)檢查框檢查框:通過(guò)將菜單項(xiàng)的:通過(guò)將菜單項(xiàng)的checked屬性設(shè)置為屬性設(shè)置為true可以在菜單項(xiàng)前顯示復(fù)選標(biāo)可以在菜單項(xiàng)前顯示復(fù)選標(biāo)志。志。1. 利用菜單編輯器定義菜單項(xiàng)利用菜單編輯器定義菜單項(xiàng) 例:為電子標(biāo)題板增加一個(gè)下拉式菜單,利用菜單控制標(biāo)題板的內(nèi)容、字號(hào)、字體風(fēng)格等。設(shè)計(jì)菜單項(xiàng):例:使用菜單控件數(shù)組:n簡(jiǎn)化編程,用一段代碼處理多個(gè)菜單項(xiàng)彈出式菜單獨(dú)立于菜單欄而顯示在窗體的浮動(dòng)菜單彈出式菜單獨(dú)立于菜單欄而顯示在窗體的浮動(dòng)菜單,操作時(shí)使

22、用右鍵。,操作時(shí)使用右鍵。在彈出式菜單上顯示的在彈出式菜單上顯示的內(nèi)容與鼠標(biāo)位置有關(guān)內(nèi)容與鼠標(biāo)位置有關(guān)。8.2.3彈出式菜單設(shè)計(jì)彈出式菜單設(shè)計(jì) 與一般菜單的設(shè)計(jì)相似,彈出式菜單通過(guò)菜與一般菜單的設(shè)計(jì)相似,彈出式菜單通過(guò)菜單編輯器建立。不同的是菜單名的單編輯器建立。不同的是菜單名的 visible屬性設(shè)屬性設(shè)置為置為false,或者在菜單編輯器中不選中,或者在菜單編輯器中不選中“可見可見”復(fù)選框。復(fù)選框。8.2.3彈出式菜單設(shè)計(jì)彈出式菜單設(shè)計(jì)語(yǔ)法格式:窗體名.popupmenu菜單名菜單名,flags,x,y說(shuō)明:n省略窗體名,將打開當(dāng)前窗體的菜單;n菜單名是通過(guò)菜單編輯器設(shè)計(jì)的菜單的名稱nfl

23、ags參數(shù)為一些常量數(shù)值的設(shè)置,包含位置常數(shù)和行為常數(shù),表示彈出的位置和觸發(fā)的鍵位置。8.2.3彈出式菜單設(shè)計(jì)彈出式菜單設(shè)計(jì)內(nèi)部常數(shù)內(nèi)部常數(shù)位置常數(shù)位置常數(shù)說(shuō)明說(shuō)明vbpopupmenuleftalign0(默認(rèn)默認(rèn))彈出菜單的左上角位于彈出菜單的左上角位于xvbpopupmenucenteralign4彈出菜單上框中央位于彈出菜單上框中央位于xvbpopupmenurightalign8彈出菜單的右上角位于彈出菜單的右上角位于x8.2.3彈出式菜單設(shè)計(jì)彈出式菜單設(shè)計(jì)內(nèi)部常數(shù)內(nèi)部常數(shù)行為常數(shù)行為常數(shù)說(shuō)明說(shuō)明vbpopupmenuleftbutton0(默認(rèn)默認(rèn))菜單只接受右鍵單擊菜單只接受右鍵

24、單擊vbpopupmenurightbutton2菜單接受左、右鍵單擊菜單接受左、右鍵單擊兩個(gè)常數(shù)可以相加或者以兩個(gè)常數(shù)可以相加或者以or相連相連 8.2.3彈出式菜單設(shè)計(jì)彈出式菜單設(shè)計(jì)50例為窗體設(shè)計(jì)一個(gè)彈出式菜單,用于設(shè)置窗體例為窗體設(shè)計(jì)一個(gè)彈出式菜單,用于設(shè)置窗體背景顏色。背景顏色。 51例例 在窗體上添加一個(gè)文本框,通過(guò)下拉菜單實(shí)在窗體上添加一個(gè)文本框,通過(guò)下拉菜單實(shí)現(xiàn)復(fù)制、粘貼功能現(xiàn)復(fù)制、粘貼功能 點(diǎn)擊“右鍵”顯示菜單項(xiàng)的時(shí)候,應(yīng)先判斷文本框中是否有文本被選中,確定哪些菜單項(xiàng)可用。if text1.sellength 0 then mnueditcut.enabled = true

25、mnueditcopy.enabled = true else mnueditcut.enabled = false mnueditcopy.enabled = false(1)剪貼板對(duì)象clipboard 剪貼板是內(nèi)存的一部分區(qū)域,所有應(yīng)用程序都能使用剪貼板中的信息。在vb中,所有與剪貼板有關(guān)的操作是通過(guò)剪貼板對(duì)象實(shí)現(xiàn)的。 剪貼板對(duì)象是用于暫時(shí)保存圖形和文本的一種特殊的控件,它是vb中預(yù)先定義好的控件組。 剪貼板對(duì)象沒(méi)有任何屬性和事件,但通過(guò)它的一些方法可以提供對(duì)系統(tǒng)剪貼板的訪問(wèn)(即發(fā)送和接收數(shù)據(jù))。 剪貼板對(duì)象的方法clipboard.clear 將剪貼板清空clipboard.sette

26、xt text1.seltext 將選中的字符串復(fù)制到剪貼板clipboard.setdata data,format 將非文本數(shù)據(jù)復(fù)制到剪貼板上clipboard.gettext 將剪貼板上的字符串發(fā)送到光標(biāo)所在位置clipboard.getdata 將剪貼板上的非文本數(shù)據(jù)發(fā)送到光標(biāo)所在位置privatesubmnueditcut_click()iftext1.sellength0thenclipboard.settexttext1.seltexttext1.seltext=同時(shí)要讓粘貼菜單項(xiàng)有效mnueditpaste.enabled=trueendifendsubtext1.seltex

27、t表示文本框中選定的文本text1.sellength表示文本框中選定文本的長(zhǎng)度privatesubmnueditcopy_click()iftext1.sellength0thenclipboard.settexttext1.seltextmnueditpaste.enabled=trueendifendsub復(fù)制與剪切的區(qū)別是text1.seltext=同時(shí)要讓粘貼菜單項(xiàng)有效privatesubmnueditpaste_click()iflen(clipboard.gettext)0thentext1.seltext=clipboard.gettextendifendsub注意:text1

28、.seltext=clipboard.gettext 和 text1.text=clipboard.gettext的區(qū)別 (在光標(biāo)所在位置處插入剪貼板上的數(shù)據(jù))privatesubmnueditsel_click()ifmnueditsel.checked=falsethenmnueditsel.checked=truetext1.selstart=0text1.selstart表示文本框中選定文本的開始位置text1.sellength=len(text1.text)elsemnueditsel.checked=falsetext1.sellength=0endifendsubtext1.t

29、ext:表示文本框中的文本text1.seltext:表示文本框中選定的文本text1.sellength:表示文本框中選定文本的長(zhǎng)度text1.selstart:表示文本框中選定文本的開始位置綜合實(shí)例:綜合實(shí)例:參照參照windows的記事本程序,建立一個(gè)有的記事本程序,建立一個(gè)有菜單功能的文本編輯器菜單功能的文本編輯器8.3mdi窗體 mdi窗體允許創(chuàng)建在單個(gè)容器窗體中包含多個(gè)窗體允許創(chuàng)建在單個(gè)容器窗體中包含多個(gè)窗體的應(yīng)用程序,允許用戶同時(shí)顯示多個(gè)文檔,每個(gè)窗體的應(yīng)用程序,允許用戶同時(shí)顯示多個(gè)文檔,每個(gè)文檔顯示在它自己的窗體中。文檔顯示在它自己的窗體中。mdi窗體是有父子關(guān)窗體是有父子關(guān)系

30、的窗體,可以根據(jù)窗體作用的不同,來(lái)確定窗體是系的窗體,可以根據(jù)窗體作用的不同,來(lái)確定窗體是父窗體還是子窗體。文檔或子窗體被包含在父窗體中父窗體還是子窗體。文檔或子窗體被包含在父窗體中,父窗體為應(yīng)用程序中所有的子窗體提供工作空間,父窗體為應(yīng)用程序中所有的子窗體提供工作空間,用戶在父窗體完成幾乎所有的工作。用戶在父窗體完成幾乎所有的工作。8.3mdi窗體例:例: microsoft excel 允許創(chuàng)建并顯示不同樣式的多文允許創(chuàng)建并顯示不同樣式的多文檔窗體,每個(gè)子窗體都被限制在檔窗體,每個(gè)子窗體都被限制在 excel 父窗體的區(qū)域父窗體的區(qū)域之內(nèi)。當(dāng)最小化之內(nèi)。當(dāng)最小化 excel父窗體時(shí),所有的

31、文檔窗體都父窗體時(shí),所有的文檔窗體都被最小化,只有父窗體的圖標(biāo)顯示在任務(wù)欄中。當(dāng)關(guān)被最小化,只有父窗體的圖標(biāo)顯示在任務(wù)欄中。當(dāng)關(guān)閉閉excel父窗體時(shí),所有的文檔窗體都被關(guān)閉,但關(guān)父窗體時(shí),所有的文檔窗體都被關(guān)閉,但關(guān)閉某個(gè)文檔窗口時(shí),閉某個(gè)文檔窗口時(shí),excel父窗體不會(huì)被關(guān)閉。父窗體不會(huì)被關(guān)閉。8.3mdi窗體 具體什么時(shí)候選用單窗體程序,什么時(shí)候使用多重窗體具體什么時(shí)候選用單窗體程序,什么時(shí)候使用多重窗體或或mdi窗體呢?這需要根據(jù)應(yīng)用程序的目的,來(lái)決定使用哪窗體呢?這需要根據(jù)應(yīng)用程序的目的,來(lái)決定使用哪種界面樣式最好。種界面樣式最好。例:例: 日歷程序最好設(shè)成單窗體程序,因?yàn)闆](méi)有必要同

32、時(shí)打開一個(gè)日歷程序最好設(shè)成單窗體程序,因?yàn)闆](méi)有必要同時(shí)打開一個(gè)以上日歷;以上日歷;8.3mdi窗體一個(gè)處理保險(xiǎn)索賠的應(yīng)用程序可能要設(shè)計(jì)成mdi窗體,使用多文檔界面樣式,因?yàn)橐粋€(gè)職員很可能會(huì)同時(shí)處理一個(gè)以上索賠,或者需要對(duì)兩個(gè)索賠進(jìn)行比較;一個(gè)管理信息系統(tǒng)(mis系統(tǒng)),需要完成的功能比較多,比如最基本的功能添加、修改、刪除和查詢記錄添加、修改、刪除和查詢記錄等,這些功能的實(shí)現(xiàn)都需要窗體界面,而這些窗體一般都是并列使用,所以像學(xué)生成績(jī)管理系統(tǒng)這樣的應(yīng)用程序,一般設(shè)計(jì)成多重窗體程序多重窗體程序。8.3mdi窗體8.3mdi窗體程序設(shè)計(jì)1mdi窗體特性2創(chuàng)建mdi應(yīng)用程序3mdi窗體及子窗體4mdi

33、窗體的菜單 mdi窗體程序由父窗口和子窗口組成窗體程序由父窗口和子窗口組成,父窗口又稱為,父窗口又稱為mdi窗體,它被作為子窗窗體,它被作為子窗口的容器。子窗口又稱為文檔窗口,它用于口的容器。子窗口又稱為文檔窗口,它用于顯示各個(gè)文檔,所有的子窗口都具有相同的顯示各個(gè)文檔,所有的子窗口都具有相同的功能。功能。1mdi窗體特性在運(yùn)行時(shí),mdi窗體及其所有的子窗體都呈現(xiàn)特定的性質(zhì):(1)所有子窗體均顯示在mdi窗體的工作空間內(nèi)。像其它的窗體一樣,用戶能移動(dòng)子窗體和改變子窗體的大小,不過(guò),它們被限制于這一工作空間內(nèi)。1mdi窗體特性在運(yùn)行時(shí),mdi窗體及其所有的子窗體都呈現(xiàn)特定的性質(zhì):(2)當(dāng)最小化一

34、個(gè)子窗體時(shí),它的圖標(biāo)將顯示于mdi窗體上而不是在任務(wù)欄中。當(dāng)最小化mdi窗體時(shí),此mdi窗體及其所有子窗體將由一個(gè)圖標(biāo)來(lái)代表。當(dāng)還原mdi窗體時(shí),mdi窗體及其所有子窗體將按最小化之前的狀態(tài)顯示出來(lái)。(3)當(dāng)最大化一個(gè)子窗體時(shí),它的標(biāo)題會(huì)與mdi窗體的標(biāo)題組合在一起并顯示于mdi窗體的標(biāo)題欄上。(4)通過(guò)設(shè)定autoshowchildren屬性,子窗體可以在窗體加載時(shí)自動(dòng)顯示(true)或自動(dòng)隱藏(false)。1mdi窗體特性(5)活動(dòng)子窗體的菜單(若有)將顯示在mdi窗體的菜單欄中,而不是顯示在子窗體中。mdi窗體程序在所謂的“以文檔為中心的應(yīng)用”中特別有用,在這種應(yīng)用程序中,通常同時(shí)使用

35、多個(gè)窗口來(lái)顯示或編輯文檔。1mdi窗體特性2創(chuàng)建mdi應(yīng)用程序前面已經(jīng)學(xué)習(xí)過(guò),可以通過(guò)“添加窗體”對(duì)話框添加窗體,但這不是mdi窗體,只是多個(gè)普通窗體而已。如果創(chuàng)建一個(gè)mdi窗體應(yīng)用程序,可以按以下步驟執(zhí)行:(1)在“工程”菜單中單擊“添加mdi窗體”菜單項(xiàng),可以創(chuàng)建mdi應(yīng)用程序的父窗體。2創(chuàng)建mdi應(yīng)用程序注意,一個(gè)應(yīng)用程序只能有一個(gè)一個(gè)mdi窗體,如果工程已經(jīng)有了一個(gè)mdi窗體,則該“工程”菜單上的“添加mdi窗體”命令就不可使用。mdi應(yīng)用程序的父窗體是子窗體的容器子窗體的容器,在該窗體中可以有菜單欄、工具欄、狀態(tài)欄等,但不可以有文本框等控件。菜單欄、工具欄的建立我們?cè)诤竺鎺坠?jié)中介紹。

36、(2)如果要?jiǎng)?chuàng)建子窗體,首先在“工程”菜單中單擊“添加窗體”菜單項(xiàng),創(chuàng)建一個(gè)普通的窗體,然后將該窗體的mdichild 屬性設(shè)為屬性設(shè)為true。一個(gè)應(yīng)用程序可以包含許多相似或者不同樣式的mdi子窗體,若要建立多個(gè)子窗體,則重復(fù)上述操作就可以了。2創(chuàng)建mdi應(yīng)用程序創(chuàng)建以文檔為中心的應(yīng)用程序,一般要求在運(yùn)行時(shí)運(yùn)行時(shí)能提供若干子窗體以存取不同的文檔,而在設(shè)計(jì)時(shí)事先創(chuàng)建好若干個(gè)子窗體的方法是不可取的。一般是先創(chuàng)建一個(gè)子窗體作為這個(gè)應(yīng)用程序文檔的模板,然后通過(guò)對(duì)象變量來(lái)實(shí)現(xiàn)。2創(chuàng)建mdi應(yīng)用程序例假設(shè)已經(jīng)建立了一個(gè)名稱為“frmmdichild”的子窗體模板,則使用下面的語(yǔ)句:dimnewdocas

37、newfrmmdichild就會(huì)為“frmmdichild”建立一個(gè)新的實(shí)例newdoc,新實(shí)例具有與“frmmdichild”窗體相同的屬性、控件和代碼。2創(chuàng)建mdi應(yīng)用程序在運(yùn)行時(shí),子窗體顯示在mdi父窗體工作空間之內(nèi)(其區(qū)域在父窗體邊框以內(nèi)及標(biāo)題與菜單欄之下)。在設(shè)計(jì)時(shí),子窗體不是限制在mdi窗體區(qū)域之內(nèi),可以添加控件、設(shè)置屬性、編寫代碼以及設(shè)計(jì)子窗體功能,就像在其它visualbasic窗體中做的那樣。2創(chuàng)建mdi應(yīng)用程序通過(guò)查看mdichild屬性或者檢查工程資源管理器,可以確定窗體是否是一個(gè)mdi子窗體。visualbasic在“工程資源管理器”中為mdi窗體與mdi子窗體顯示了特

38、定的圖標(biāo),如下圖所示。2創(chuàng)建mdi應(yīng)用程序“工程資源管理器”中的mdi窗體、mdi子窗體和標(biāo)準(zhǔn)窗體例8.73mdi窗體及子窗體(1)加載mdi窗體及子窗體加載子窗體時(shí),其父窗體(mdi窗體)會(huì)自自動(dòng)動(dòng)加載并顯示。而加載mdi窗體時(shí),其子窗體并不會(huì)自動(dòng)加載。子窗體是缺省的啟動(dòng)窗體,因而在程序運(yùn)行時(shí),子窗體和mdi窗體兩者都會(huì)加載。mdi窗體有autoshowchildren屬性,決定是否自動(dòng)顯示子窗體。如果該屬性被設(shè)置為true,則當(dāng)改變子窗體的屬性(如caption等)后,會(huì)自動(dòng)顯示該子窗體,不再需要使用show方法;3mdi窗體及子窗體如果設(shè)置該屬性為false,則改變子窗體的屬性值后,不會(huì)

39、自動(dòng)顯示該子窗體,子窗體處于隱藏狀態(tài),直至用show方法把它們顯示出來(lái)。這就允許在子窗體變成可見之前更新標(biāo)題、位置和菜單等各種細(xì)節(jié)。3mdi窗體及子窗體(2)設(shè)置子窗體的大小和位置如果mdi子窗體具有大小可變的邊框即borderstyle=2,在其加載時(shí),windows將決定其初始的高度、寬度和位置。邊框大小可變的子窗體,其初邊框大小可變的子窗體,其初始大小與位置取決于始大小與位置取決于 mdi 窗體的大小窗體的大小,而不是設(shè)計(jì)時(shí)子窗體的大小。當(dāng)mdi子窗體的邊框大小不可變(即borderstyle=0、1或3)時(shí),則它將用設(shè)計(jì)時(shí)的height和width屬性被載入。3mdi窗體及子窗體(2)

40、設(shè)置子窗體的大小和位置如果設(shè)置autoshowchildren為false,則在mdi子窗體載入以后,把它設(shè)為可見狀態(tài)之前,可以改變其大小和位置。3mdi窗體及子窗體定位窗體的代碼最好放在窗體的窗體的load過(guò)程中,這樣會(huì)在窗體實(shí)際出現(xiàn)在屏幕上之前將窗體位置確定。要將窗體居中,需要在窗體的load過(guò)程中簡(jiǎn)單地添加代碼來(lái)計(jì)算并指定窗體左上角的位置3mdi窗體及子窗體如下列代碼所示:me.left=(screen.width-me.width)/2me.top=(screen.height-me.height)/2利用坐標(biāo)系統(tǒng)可以將窗體定位于屏幕或mdi窗體的任意位置。3mdi窗體及子窗體(3)m

41、di窗體程序子窗體的排列順序和方式在mdi應(yīng)用程序中,缺省狀態(tài)下子窗體是按照窗口打開的打開的順序排列的:當(dāng)前活動(dòng)窗體排在最前端,最先打開的窗體排在最底端。我們可以借助zorder方法動(dòng)態(tài)地改變子窗體的排列順序。3mdi窗體及子窗體(3)mdi窗體程序子窗體的排列順序和方式zorder方法的語(yǔ)法為:窗體名稱.zorderposition其中,position取值為0時(shí)表示對(duì)象移至最前端,為1時(shí)表示對(duì)象移至最底端,缺省時(shí)值為0。3mdi窗體及子窗體(3)mdi窗體程序子窗體的排列順序和方式例如,某一mdi應(yīng)用程序有三個(gè)子窗體:form1、form2和form3,若要將form3移至最底端,則可在設(shè)

42、計(jì)代碼時(shí)加上form3.zorder1即可。3mdi窗體及子窗體利用zorder方法我們也可以創(chuàng)建浮動(dòng)窗體,浮動(dòng)窗體總是浮動(dòng)到表面,也就是說(shuō)它可以被其他窗體覆蓋,但馬上自動(dòng)自動(dòng)變成當(dāng)前窗口并顯示在所有窗體的最上層。3mdi窗體及子窗體要?jiǎng)?chuàng)建浮動(dòng)窗體,需要在窗體上添加一個(gè)定時(shí)器控件,并將它的interval屬性設(shè)置為想讓窗體浮現(xiàn)的時(shí)間,如500毫秒。在timer1_timer事件過(guò)程中編寫如下代碼,便可以使用zorder方法使窗體浮動(dòng)到頂部:privatesubtimer1_timer()zorderendsub3mdi窗體及子窗體使用過(guò)word的用戶都知道,word可同時(shí)打開多個(gè)文檔,并能以不

43、同方式對(duì)文檔窗口進(jìn)行排列,如平鋪、層疊等。這種重新排列子窗體的功能,在mdi應(yīng)用程序中是可以通過(guò)編程來(lái)實(shí)現(xiàn)的。具體方法就是在相應(yīng)的菜單控件的click事件中調(diào)用arrange方法,使用arrange方法可以重新對(duì)齊子窗體,可以層疊、水平平鋪或者沿著mdi窗體的下部排列子窗體圖標(biāo)等方式來(lái)顯示子窗體。3mdi窗體及子窗體arrange方法的語(yǔ)法為:mdi窗體對(duì)象.arrangearrangement其中,arrangement用來(lái)指定如何排列mdi應(yīng)用程序的子窗體,其值可以是常數(shù)或是數(shù)值,arrangement的取值如下表所示。3mdi窗體及子窗體表 arrangement的取值常數(shù)值描述vbca

44、scade0層疊所有非最小化mdi子窗體vbtilehorizontal1水平平鋪所有非最小化mdi子窗體vbtilevertical2垂直平鋪所有非最小化mdi子窗體vbarrangeicons3重排最小化mdi子窗體的圖標(biāo)3mdi窗體及子窗體例如:若“平鋪”菜單項(xiàng)名為mnuhorizon,可編寫如下代碼,實(shí)現(xiàn)子窗體的平鋪:privatesubmnuhorizon_click()mdiform1.arrangevbtilehorizontalmdiform1為mdi窗體名稱endsub3mdi窗體及子窗體當(dāng)平鋪或者層疊有著固定邊框類型的子窗體時(shí),每個(gè)子窗體都像具有可變尺寸邊框那樣被定位,這使得子窗體可能重疊可能重疊。即使mdi窗體被最小化,仍可以重新排列窗口和圖標(biāo),當(dāng)mdi窗體最大化時(shí),可以看到重排的結(jié)果。3mdi窗體及子窗體(4)維護(hù)子窗體的狀態(tài)信息當(dāng)子窗體被卸載時(shí),其中的內(nèi)容也會(huì)隨之消失,所以在用戶決定退出mdi應(yīng)用程序時(shí),必須有保存信息保存信息的機(jī)會(huì),讓用戶執(zhí)行存盤操作,這樣才能確保數(shù)據(jù)不會(huì)丟失。當(dāng)數(shù)據(jù)沒(méi)有改變而去存盤是沒(méi)有

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論