版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第9章菜單與對話框第9章菜單與對話框9.1使用菜單菜單是Windows應(yīng)用程序中十分關(guān)鍵的要素之一,它以分組的形式組織多個命令或操作,為用戶靈活操作應(yīng)用程序提供了便捷的手段。在實際的應(yīng)用中,菜單可分為兩種基本類型:下拉式菜單和彈出式菜單。下拉式菜單一般通過單擊菜單欄中菜單標(biāo)題(如“文件”、“編輯”、“視圖”等)的方式打開,彈出式菜單則通過用鼠標(biāo)右鍵單擊某一區(qū)域的方式打開。9.1.1下拉式菜單在下拉式菜單系統(tǒng)中,一般有一個主菜單,稱為菜單欄。其中包括一個或多個選擇項,稱為菜單標(biāo)題。當(dāng)單擊一個菜單標(biāo)題時,包含菜單項的列表(菜單)即被打開。菜單由若干個命令、分隔條、子菜單標(biāo)題(其右邊含有三角的菜單項)等菜單項組成。當(dāng)選擇子菜單標(biāo)題時又會“下拉”出下一級菜單項列表,稱為子菜單。VB的菜單系統(tǒng)最多可達(dá)6層。1.菜單控件在VB中,菜單也是一個圖形對象,即控件。與其它控件一樣,它具有定義其外觀與行為的屬性。在設(shè)計或運行時可以設(shè)置Caption屬性、Enabled和Visible屬性、Checked屬性以及其它屬性。菜單控件只包含一個事件,即Click事件,當(dāng)用鼠標(biāo)或鍵盤選中該菜單控件時,將調(diào)用該事件。與一般控件不同的是,菜單控件不在VB的工具箱中,需要在VB的“菜單編輯器”中進(jìn)行菜單的設(shè)計。2.菜單編輯器用菜單編輯器可以創(chuàng)建新的菜單和菜單項、在已有的菜單上增加新命令、編輯已有的菜單命令、以及修改和刪除已有的菜單和菜單項。在VB系統(tǒng)的“工具”菜單中選擇“菜單編輯器”,或在“工具欄”上單擊“菜單編輯器”按鈕都可以打開菜單編輯器,如圖9-2所示。圖9-2菜單編輯器菜單編輯器分為三個部分:1)菜單控件屬性區(qū)。用于設(shè)置菜單項的各個屬性,表9-1列出其中的主要屬性:表9-1菜單控件的主要屬性其他屬性可參見VB的聯(lián)機幫助。屬性說明標(biāo)題(Caption)設(shè)置菜單項的標(biāo)題,相當(dāng)于控件的Caption屬性,也是顯示在菜單中的字符。可以在標(biāo)題中設(shè)置熱鍵??梢杂梅指罹€將某些菜單項歸為一類并與其他項隔開。名稱(Name)設(shè)置菜單項的名稱,相當(dāng)于控件的Name屬性。菜單項的命名規(guī)則與控件的命名規(guī)則相同。索引(Index)設(shè)置菜單控件數(shù)組的下標(biāo),相當(dāng)于控件數(shù)組的Index屬性??旖萱I(Shortcut)可設(shè)置與菜單項等價的快捷鍵。在程序運行時,按下快捷鍵會立刻運行一個菜單項。快捷鍵的賦值包括功能鍵與控制鍵的組合,如〈Ctrl〉+〈F1〉鍵或〈Ctrl〉+〈A〉鍵。它們出現(xiàn)在菜單中相應(yīng)菜單項的右邊。復(fù)選(Checked)“復(fù)選”屬性設(shè)置為True時,可以在相應(yīng)的菜單項旁加上記號“√”。表明該菜單項當(dāng)前處于活動狀態(tài)。有效(Enabled)用來設(shè)置菜單項的操作狀態(tài)。如果該屬性被設(shè)置為False,則相應(yīng)的菜單項會變“灰”,不響應(yīng)用戶事件??梢姡╒isible)設(shè)置該菜單項是否可見。如果該屬性被設(shè)置為False,則相應(yīng)的菜單項將被暫時從菜單中去掉,直到該屬性重新被設(shè)置為True。2)編輯區(qū)。編輯區(qū)共有7個按鈕,用來對輸入的菜單項進(jìn)行簡單的編輯。3)菜單控件列表框。菜單控件列表框位于菜單編輯器的下部,輸入的菜單項在這里顯示出來,并通過內(nèi)縮符號表明菜單項的層次,如圖9-3所示。圖9-3菜單控件列表框與對應(yīng)的菜單項
3.下拉式菜單的設(shè)計下面通過一個例子來說明菜單程序設(shè)計的基本方法和步驟,這個方法具有通用性,無論多復(fù)雜的菜單都可以通過這個方法設(shè)計出來?!纠?-1】為例4-13中的電子標(biāo)題板增加一個菜單,利用菜單來控制標(biāo)題板的內(nèi)容、字體、字體風(fēng)格等,如圖9-4所示。圖9-4利用菜單控制標(biāo)題板
只需在例4-13的基礎(chǔ)上作如下修改:①打開菜單編輯器,按照表9-3設(shè)計菜單項:表9-3菜單項的設(shè)置標(biāo)題(Caption)名稱(Name)說明標(biāo)題板(&F)menu主菜單項1….文本內(nèi)容(&T)txt子菜單項11….文本字體(&N)nam子菜單項12….….宋體song子菜單項121….….隸書li子菜單項122….….楷體kai子菜單項123….….黑體hei子菜單項124….文本風(fēng)格(&S)styl子菜單項13….….粗體bld子菜單項131….….斜體itl子菜單項132….….下劃線undrln子菜單項133②編寫菜單項代碼。編寫“文本內(nèi)容”項Txt的Click事件代碼: PrivateSubTxt_Click() temp=InputBox("請輸入標(biāo)題板的新內(nèi)容","輸入",Label1.Caption) Iftemp<>""Then Label1.Caption=temp EndIf EndSub
編寫“文本字體”中4個菜單選項的Click事件代碼: PrivateSubsong_Click() Label1.FontName="宋體" EndSub PrivateSubli_Click() Label1.FontName="隸書" EndSub PrivateSubkai_Click() Label1.FontName="楷體_GB2312" EndSub PrivateSubhei_Click() Label1.FontName="黑體" EndSub編寫“文本風(fēng)格”中3個菜單選項的Click事件代碼: PrivateSubbld_Click() bld.Checked=Notbld.Checked Label1.FontBold=bld.Checked EndSub PrivateSubItl_Click() Itl.Checked=NotItl.Checked Label1.FontItalic=Itl.Checked EndSub PrivateSubUndrln_Click() Undrln.Checked=NotUndrln.Checked Label1.FontUnderline=Undrln.Checked EndSub4.菜單控件數(shù)組既然VB將菜單項視為控件,因此就能運用控件數(shù)組的概念。菜單控件數(shù)組的作用主要有兩個:1)用于動態(tài)地增刪菜單項。2)簡化編程,用一段代碼處理多個菜單項。【例9-2】在例9-1中使用菜單控件數(shù)組。只需在例9-1的基礎(chǔ)上作如下修改:1)打開菜單編輯器,按照表9-4修改菜單項:表9-4菜單項的修改標(biāo)題(Caption)名稱(Name)索引(Index)說明標(biāo)題板(&F)Menu主菜單項1….文本內(nèi)容(&T)txt子菜單項11….文本字體(&N)txtFont子菜單項12….….宋體fname1子菜單項121….….隸書fname2子菜單項122….….楷體fname3子菜單項123….….黑體fname4子菜單項124….文本風(fēng)格(&S)Styl子菜單項13….….粗體Styly1子菜單項131….….斜體Styly2子菜單項132….….下劃線Styly3子菜單項1332)修改菜單項代碼。刪除原“文本字體”中4個菜單選項的Click事件代碼,編寫“文本字體”菜單中的菜單控件數(shù)組fname的Click事件代碼:
PrivateSubfname_Click(IndexAsInteger) SelectCaseIndex Case1 Label1.Fontname="宋體" Case2 Label1.Fontname="隸書" Case3 Label1.Fontname="楷體_GB2312" Case4 Label1.Fontname="黑體" EndSelect EndSub刪除原“文本風(fēng)格”中3個菜單選項的Click事件代碼,編寫“文本風(fēng)格”菜單中的菜單控件數(shù)組Styly的Click事件代碼: PrivateSubStyly_Click(IndexAsInteger) Styly(Index).Checked=NotStyly(Index).Checked SelectCaseIndex Case1 Label1.FontBold=Styly(Index).Checked Case2 Label1.FontItalic=Styly(Index).Checked Case3 Label1.FontUnderline=Styly(Index).Checked EndSelect EndSub5.菜單項的可用與不可用VB設(shè)計的菜單可以根據(jù)程序的運行狀態(tài)動態(tài)地進(jìn)行調(diào)整。當(dāng)菜單項所指示的操作不適合當(dāng)前的環(huán)境時,可以暫時將其關(guān)閉,不讓用戶選擇該菜單項,也可以干脆把它隱藏起來,就像根本沒有這個菜單項一樣,等到條件成熟時,再重新顯示被隱藏的菜單項。【例9-3】在例9-2中,當(dāng)前文本的字體在菜單中被關(guān)閉——菜單項呈灰色,可以選擇未被選擇的字體。如圖9-5所示。只需在例9-2的基礎(chǔ)上修改“文本字體”菜單中的菜單控件數(shù)組fname的Click事件代碼:
PrivateSubfname_Click(IndexAsInteger) SelectCaseIndex Case1 Label1.Fontname="宋體" Case2 Label1.Fontname="隸書" Case3 Label1.Fontname="楷體_GB2312" Case4 Label1.Fontname="黑體" EndSelect ForEachxInfname x.Enabled=IIf(x.Index=Index,False,True) Next EndSub 圖9-5菜單項的可用與不可用隱藏一個菜單項的辦法也是很簡單的。在上例中,修改“文本字體”菜單中的菜單控件數(shù)組Fontname的Click事件代碼如下,即可隱藏或重現(xiàn)菜單項(如圖9-6)。 PrivateSubfname_Click(IndexAsInteger) SelectCaseIndex Case1 Label1.FontName="宋體" Case2 Label1.FontName="隸書" Case3 Label1.FontName="楷體_GB2312" Case4 Label1.FontName="黑體" EndSelect ForEachxInfname x.Visible=IIf(x.Index=Index,False,True) Next EndSub 9.1.2彈出式菜單彈出式菜單能以靈活的方式為用戶提供更加便利的操作,它可以根據(jù)用戶單擊鼠標(biāo)右鍵時的位置,動態(tài)地調(diào)整菜單項的顯示位置,同時也改變菜單項顯示內(nèi)容,因此彈出式菜單又稱為“上下文菜單”或“快捷菜單”。為了顯示“彈出式菜單”,可以使用PopupMenu方法,語法為:[〈窗體名〉.]PopupMenu〈菜單名〉[,flags[,x[,y[,boldcommand]]]]Flags參數(shù)為一些常量數(shù)值的設(shè)置,包含位置常數(shù)及行為常數(shù)兩個指定值,見表9-5和表9-6。表9-5位置常數(shù)表9-6行為常數(shù)位置常數(shù)說明0(默認(rèn))菜單左上角位于X4菜單上框中央位于X8菜單右上角位于X行為常數(shù)說明0(默認(rèn))菜單命令只接受右鍵單擊2菜單命令可接受左、右鍵單擊Boldcommand參數(shù)可以指定在顯示的彈出式菜單中想以粗體字體出現(xiàn)的菜單項的名稱。在彈出式菜單中只能有一個菜單項被加粗。為創(chuàng)建一個不顯示在菜單欄里的菜單,可在設(shè)計時使頂級菜單項目為不可見(保證在菜單編輯器里的“Visible”復(fù)選框沒有被選上)。當(dāng)VB顯示一個彈出式菜單時,指定的頂級菜單的Visible屬性會被忽略?!纠?-4】在例9-1中實現(xiàn)彈出式菜單(如圖9-7)。圖9-7自定義的彈出式菜單
只需增加標(biāo)簽和窗體的MouseDown事件代碼:
PrivateSubLabel1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle) IfButton=2Then PopupMenuStyl,6 EndIf EndSub PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle) IfButton=2Then PopupMenutxtfont,6 EndIf EndSub注意:在VB的文本框中,即使不編程也可以得到一個彈出式菜單。9.2公共對話框“公共對話框”(CommonDialog)控件為用戶提供了一組標(biāo)準(zhǔn)的系統(tǒng)對話框,可以使用它進(jìn)行打開或保存文件、設(shè)置打印選項、選擇各種顏色以及選擇字體等的操作。另外還可以通過調(diào)用Windows幫助引擎來顯示應(yīng)用程序的幫助。9.2.1添加“公共對話框”控件“公共對話框”控件屬于VB專業(yè)版和企業(yè)版所特有的ActiveX控件,位于文件C:\Windows\System\Comdlg32.ocx中,名稱為“MicrosoftCommonDialogControl6.0”。用鼠標(biāo)右鍵單擊控件工具箱,在彈出菜單中選擇“部件”,打開部件對話框(如圖9-9左)。在“部件”對話框中,選定所需的文件,按“確定”按鈕即可將“公共對話框”控件添加到控件工具箱中(圖9-9右)。圖9-9添加“公共對話框”控件
9.2.2使用“公共對話框”在應(yīng)用程序中使用“公共對話框”控件,需要將它添加到窗體中。由于在程序運行時看不見“公共對話框”控件,因此可以將它放置在窗體的任何位置。在程序運行時,“公共對話框”可以顯示一個對話框或是執(zhí)行幫助的引擎,所顯示的對話框由控件的“方法”決定。共有6種方法來指定相應(yīng)的對話框,見表9-7。表9-7通用對話框控件的方法列表名稱功能ShowOpen顯示文件打開對話框ShowSave顯示文件存儲對話框ShowColor顯示顏色對話框ShowFont顯示字體對話框ShowPrinter顯示打印對話框ShowHelp顯示W(wǎng)indows幫助對話框每種對話框都有自己特殊的屬性,這些屬性既可以在屬性窗口中設(shè)置,也可以在代碼中設(shè)置,還可以在“屬性頁”對話框中設(shè)置。在屬性窗口中選擇“(自定義)”,再單擊右側(cè)的“…”按鈕,就會出現(xiàn)“屬性頁”對話框,如圖9-10所示。圖9-10“屬性頁”對話框1.使用“打開”對話框打開文件是Windows應(yīng)用程序(例如Office)中的常用操作?!按蜷_”對話框可以用來指定文件所在的驅(qū)動器、文件夾以及文件名、文件擴展名,如圖9-11所示。圖9-11“打開”對話框運行時選定文件并關(guān)閉對話框后,可用FileName屬性得到文件所在的驅(qū)動器、文件夾以及文件名、文件擴展名。使用“打開”對話框的步驟如下:1)首先在窗體中增加“公共對話框”控件。2)然后在“屬性頁”對話框中設(shè)置屬性。3)最后使用CommonDialog控件的ShowOpen方法來顯示“打開”對話框: 控件名.ShowOpen2.使用“另存為”對話框“另存為”對話框可以用來指定文件所要保存的驅(qū)動器、文件夾以及文件名、文件擴展名,如圖9-12所示。使用“另存為”對話框的步驟同上,首先應(yīng)在窗體中增加“公共對話框”控件,然后在“屬性頁”對話框中設(shè)置屬性,其中屬性頁的設(shè)置同上。最后使用CommonDialog控件的ShowSave方法來顯示“另存為”對話框: 控件名.ShowSave3.使用“顏色”對話框“顏色”對話框用來在調(diào)色盤中選擇顏色,或者創(chuàng)建自定義顏色,如圖9-13所示。運行時選定顏色并關(guān)閉對話框后,可用Color屬性得到所選的顏色。使用“顏色”對話框的步驟如下:1)首先在窗體中增加“公共對話框”控件。2)然后在“屬性頁”對話框中設(shè)置屬性。3)最后使用CommonDialog控件的ShowColor方法來顯示“顏色”對話框: 控件名.ShowColor4.使用“字體”對話框“字體”對話框設(shè)置并返回所用字體的名字、樣式、大小、效果及顏色,如圖9-14。使用“字體”對話框的步驟如下:1)首先在窗體中增加“公共對話框”控件。2)然后在“屬性頁”對話框中設(shè)置屬性。注意:必須將Flags屬性設(shè)為下列常數(shù)之一與其他選項之和:cdlCFScreenFonts或1(屏幕字體)cdkCFPrinterFonts或2(打印機字體)cdlCFBoth或3(=1+2兩種字體皆有)例如:設(shè)為259(=256+3是cdlCFEffects常數(shù)與3之和,在對話框中將出現(xiàn)顏色、效果等選項)。3)最后使用CommnnDialog控件的ShowFont方法來顯示“字體”對話框: 控件名.ShowFont5.使用“打印”對話框“打印”對話框可以設(shè)置打印輸出的方法,如打印范圍、打印份數(shù)、打印質(zhì)量等其他打印屬性。此外,對話框還顯示當(dāng)前安裝的打印機的信息,允許用戶重新設(shè)置缺省打印機。如圖9-15所示。使用“打印”對話框的步驟如下:1)首先在窗體中增加“公共對話框”控件。2)然后在“屬性頁”對話框中設(shè)置屬性,如圖9-16所示。3)最后使用CommonDialog控件的ShowPrinter方法來顯示“打印”對話框: 控件名.ShowPrinter【例9-5】使用公共對話框控件的例子(圖9-17)。圖9-17使用“公共對話框”控件編寫命令按鈕數(shù)組Command()的Click事件代碼: PrivateSubCommand1_Click(IndexAsInteger) n=Index SelectCasen Case0 CommonDialog1.Filter="所有文件(*.*)|*.*|文本文件(*.TXT)|*.txt" CommonDialog1.
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘭州資源環(huán)境職業(yè)技術(shù)大學(xué)《液壓流體力學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 濟寧職業(yè)技術(shù)學(xué)院《傳播效果監(jiān)測》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南幼兒師范高等??茖W(xué)?!督Y(jié)構(gòu)耐久性理論》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南工業(yè)大學(xué)科技學(xué)院《嬰幼兒藝術(shù)發(fā)展與教育》2023-2024學(xué)年第一學(xué)期期末試卷
- 衡陽科技職業(yè)學(xué)院《地理信息系統(tǒng)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南交通職業(yè)技術(shù)學(xué)院《生物醫(yī)藥文獻(xiàn)檢索和專業(yè)英語》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江師范大學(xué)《發(fā)酵工程制造技術(shù)及應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州體育職業(yè)學(xué)院《工業(yè)設(shè)計專業(yè)導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江工貿(mào)職業(yè)技術(shù)學(xué)院《短視頻策劃與運營》2023-2024學(xué)年第一學(xué)期期末試卷
- 食品中重金屬殘留的控制手段
- 2024-2025學(xué)年成都高新區(qū)七上數(shù)學(xué)期末考試試卷【含答案】
- 定額〔2025〕1號文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價格水平調(diào)整的通知
- 2025年浙江杭州市西湖區(qū)專職社區(qū)招聘85人歷年高頻重點提升(共500題)附帶答案詳解
- 《數(shù)學(xué)廣角-優(yōu)化》說課稿-2024-2025學(xué)年四年級上冊數(shù)學(xué)人教版
- “懂你”(原題+解題+范文+話題+技巧+閱讀類素材)-2025年中考語文一輪復(fù)習(xí)之寫作
- 2025年景觀照明項目可行性分析報告
- 2025年江蘇南京地鐵集團招聘筆試參考題庫含答案解析
- 2025年度愛讀書學(xué)長參與的讀書項目投資合同
- 電力系統(tǒng)分析答案(吳俊勇)(已修訂)
- 化學(xué)-河北省金太陽質(zhì)檢聯(lián)盟2024-2025學(xué)年高三上學(xué)期12月第三次聯(lián)考試題和答案
- 期末復(fù)習(xí)試題(試題)-2024-2025學(xué)年四年級上冊數(shù)學(xué) 北師大版
評論
0/150
提交評論