《菜單程序設(shè)計》word版_第1頁
《菜單程序設(shè)計》word版_第2頁
《菜單程序設(shè)計》word版_第3頁
《菜單程序設(shè)計》word版_第4頁
《菜單程序設(shè)計》word版_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.菜單程序設(shè)計菜單程序設(shè)計2010年12月05日星期日下午09:52菜單程序設(shè)計一、菜單菜單的基本作用:菜單的基本類型:幾個常用術(shù)語:-菜單條出現(xiàn)在窗體標(biāo)題的下面,包含每個菜單的標(biāo)題。-菜單包含命令列表或子菜單名。-菜單中列出的每一項。-從某個菜單項分支出來的另外的一個菜單。具有子菜單的菜單項右邊帶有一個三角符號標(biāo)志。-分隔條是在菜單項之間的一條水平直線,用于修飾菜單。-彈出式菜單是另一種形式的菜單,在按下鼠標(biāo)右鍵時出現(xiàn),它是一個上下文相關(guān)的菜單。使用菜單編輯器可以為應(yīng)用程序創(chuàng)建自定義菜單并定義其屬性,利用這個編輯器,可以建立下拉式菜單,最多可達(dá)6層。啟動菜單編輯器的方法有4種(先選中一個窗體

2、,使之為活動窗體):使用菜單工具/菜單編輯器;啟動后,彈出菜單設(shè)計窗口。菜單編輯器窗口分為三個部分:數(shù)據(jù)區(qū)、編輯區(qū)和菜單項顯示區(qū)。1、數(shù)據(jù)區(qū)用來輸入或修改菜單項、設(shè)置屬性。其中:隔線??稍谠撐谋究蛑休斎霐?shù)值,這個值用來在幫助文件(用HelpFile屬性設(shè)置)中查找相應(yīng)的幫助主題。用來確定菜單或菜單項是否出現(xiàn)或在什么位置出現(xiàn)。該列表有4個選項:0-None菜單項不顯示2、編輯區(qū)共有7個按鈕。3、菜單項顯示區(qū)(菜單列表)位于菜單設(shè)計窗口的下部,輸入的菜單項在這里顯示出來,并通過內(nèi)縮符號()表明菜單項的層次。條形光標(biāo)所在的菜單項是當(dāng)前菜單項。說明:菜單項是一個總的名稱,包括4個方面的內(nèi)容:菜單名(菜

3、單標(biāo)題)、菜單命令、分隔線和子菜單。內(nèi)縮符號由4個點組成,它表明菜單項所在的層次,一個內(nèi)縮符號(4個點)表示一層,兩個內(nèi)縮符號(8個點)表示兩層最多20個點,即5個內(nèi)縮符號,它后面的菜單項為第六層。如果一個菜單項前面沒有內(nèi)縮符號,則該菜單為菜單名,即菜單的第一層。隔線。下面通過一個簡單的例子說明菜單程序設(shè)計的基本方法和步驟。例1根據(jù)題意,可以將菜單分為3個主菜單項,分別為計算加、減、計算乘、除和清除與退出,它們各有兩個子菜單,即:計算加、減的子菜單項:加、減計算乘、除的子菜單項:乘、除清除與退出的子菜單項:清除、退出另外,為了輸入和顯示,再建立兩個文本框(輸入數(shù)據(jù))和四個標(biāo)簽。1、界面:其中L

4、able4的BorderStyle屬性設(shè)置為1。2、菜單項屬性:3、設(shè)計菜單:步驟:其它兩個主菜單的建立與前面步驟類似,不再重復(fù)。設(shè)計完成后的窗口如下圖。確定后結(jié)束。設(shè)計完成后,窗體頂行顯示主菜單項,單擊某個主菜單項,即可下拉顯示其子菜單。4、程序代碼:每個菜單項都可以接收Click事件。每個菜單項都有一個名字(Name屬性),將這個名字與Click放在一起,組成Click事件過程。Option Explicit Private Sub Add_Click()x=Val(Text1.Text)+Val(Text2.Text)End Sub Private Sub Min_Click()x=Va

5、l(Text1.Text)-Val(Text2.Text)Private Sub Mul_Click()x=Val(Text1.Text)*Val(Text2.Text)Private Sub Div_Click()If Text2.Text=0Or Text2.Text=Then End Sub Private Sub Clean_Click()Text1.Text=End Sub Private Sub Quit_Click()5、運行程序:在兩個文本框中輸入數(shù)字后,分別單擊各菜單項或熱鍵,看一看執(zhí)行結(jié)果。本例中的有效屬性和可見屬性采用默認(rèn)的True,只有在必要時才設(shè)置其它屬性。下面將討論

6、這些情況。在使用Windows或VB菜單時,已見過與眾不同的菜單項,如有的呈灰色,單擊這類菜單項不執(zhí)行任何操作;有的菜單項前有號,或菜單項的某個字母下面有下劃線等等。下面將介紹如何在菜單中增加這些屬性。1、菜單項的有效屬性(有效性控制)為了使程序正常運行,有時需要使某些菜單項失效,以防止出現(xiàn)誤操作。例如前面的例子中,只有在文本框中輸入數(shù)字后才能進(jìn)行運算,否則運算沒有意義。因此,如果尚未輸入數(shù)據(jù),則應(yīng)使執(zhí)行加、減、乘、除的菜單項失效,在輸入數(shù)據(jù)后才生效。為此,可增加下面兩個事件過程:Private Sub Text1_Change()If Text1.Text=Then End Sub Priv

7、ate Sub Text2_Change()If Text2.Text=Then End Sub除增加上述兩個事件過程外,還要方法:打開菜單編輯器窗口,把對應(yīng)于這4個菜單項的數(shù)據(jù)區(qū)中的有效屬性復(fù)選框中的去掉即可。2、菜單項的復(fù)選屬性(菜單項的標(biāo)記)所謂菜單項標(biāo)記,就是在菜單項前加上一個。它有兩個作用:增加方法:一般來說,菜單項標(biāo)記通常是動態(tài)的加上或取消的,所以,程序代碼中根據(jù)執(zhí)行情況設(shè)置。例2界面:一個文本框、6個標(biāo)簽。菜單屬性:設(shè)計菜單:編寫代碼:Option Explicit Private Sub octv_Click()answer=Val(Text1.Text)Private Sub

8、 Hexv_Click()answer=Val(Text1.Text)Private Sub dec_Click()answer=Val(Text1.Text)End Sub Private Sub Clean_Click()Text1.Text=End Sub Private Sub Quit_Click()End End Sub例3在窗體上添加一個文本框,用來輸入要顯示的文本。菜單屬性:菜單設(shè)置見教材P244。代碼如下:Private Sub Form_Load()Private Sub mnunew_Click()菜單項的單擊事件Private Sub mnuopen_Click()Pr

9、ivate Sub mnuclose_Click()Private Sub mnuexit_Click()Private Sub mnubold_Click()Private Sub mnuitalic_Click()3、菜單的可見屬性同有效屬性相似,可以利用可見屬性來取消用戶對某些特定菜單項的訪問權(quán)限。若關(guān)閉某個特定的菜單項的可見屬性,該菜單項將從菜單中被移走。用戶將不知道該菜單項的存在。例4打開菜單編輯器,在菜單列表中選擇退出菜單項,單擊插入按鈕,在退出菜單項之前插入一個菜單項。4、設(shè)置鍵盤選擇菜單項在一般情況下,菜單項通過鼠標(biāo)選擇,即單擊某個菜單項,執(zhí)行相應(yīng)的操作。在VB中,也可以通過鍵

10、盤選擇所需的菜單項。用鍵盤選擇有兩種方法:前面已介紹過熱鍵的設(shè)置方法。用熱鍵可以直接執(zhí)行菜單命令,不必一級一級地下拉菜單,速度較快,適合熟悉鍵盤的用戶使用。所謂訪問鍵,就是菜單項中加了下劃線的字母,只要按Alt和加了下劃線的字母,就可以選擇相應(yīng)的菜單項。用訪問鍵選擇菜單項時,必須一級一級地選擇。也就是只有在下拉顯示下一級菜單后,才能用Alt和加了下劃線的字母鍵選擇。訪問鍵的設(shè)置說明:任何5、創(chuàng)建菜單控件數(shù)組菜單控件數(shù)組就是在同一菜單上共享相同名稱和事件過程的菜單工程的集合。菜單控件數(shù)組用于:在運行時要創(chuàng)建一個新菜單項,它必須是菜單控件數(shù)組中的成員每個菜單控件數(shù)組元素都由惟一的索引值來標(biāo)識,該值

11、在菜單編輯器上Index屬性框中指定。當(dāng)一個控件數(shù)組成員識別一個事件時,VB將其Index屬性作為一個附加的參數(shù)傳遞給事件過程。事件過程必須包含有核對Index屬性的代碼,因而可以判斷出正在使用的是哪一個控件。例5:菜單項名稱索引快捷鍵mnuFont.粗體粗體mnuBold Ctrl+B.斜體斜體mnuItalic Ctrl+I.大小大小mnuSize 10mnuFS 20mnuFS 30mnuFS通過菜單編輯器中創(chuàng)建菜單控件數(shù)組的步驟:同樣,所有的控件也可以用這種方法創(chuàng)建控件數(shù)組。通常把OptionButton和CheckBox控件設(shè)置為控件數(shù)組。使用菜單數(shù)組和控件數(shù)組有下述優(yōu)點:可以用Fo

12、r循環(huán)方便的訪問每一個對象菜單控件數(shù)組mnuFS的Click事件響應(yīng)代碼如下:Private Sub mnuFS_Click(Index as Integer)Select Case Index end sub 6、菜單項的增減(動態(tài)菜單)動態(tài)菜單是指隨著應(yīng)用程序的運行而不斷改變的一種菜單,在運行時菜單可以增長。Word軟件的文件菜單是一個典型的動態(tài)菜單,菜單中列出了最近使用過的文件名,這部分內(nèi)容隨著應(yīng)用程序的運行而不斷改變的。而用前面的方法建立的菜單是固定的,菜單項不能增減。為了增加或減少菜單項,必須在菜單編輯器窗口中,對原來的菜單進(jìn)行增刪。使用動態(tài)菜單在應(yīng)用程序中一個控件數(shù)組含有若干個控件

13、,這些控件的名稱相同,所使用的事件過程相同,但其中的每個元素可以有自己的屬性。和普通數(shù)組一樣,通過下標(biāo)(Index)訪問控件數(shù)組中的元素??丶?shù)組可以在設(shè)計階段建立(見添加控件一節(jié)),也可以在程序運行階段建立。菜單項的增減是通過菜單控件數(shù)組實現(xiàn)的。菜單控件數(shù)組和普通數(shù)組一樣,也是通過下標(biāo)來訪問數(shù)組中的元素(這里為菜單項)的。菜單控件數(shù)組也一樣可以設(shè)計時建立、可以在運行時建立。具體操作:如設(shè)計時對名稱為mnuRecentFile的分隔條菜單控件的Index屬性進(jìn)行了賦值,它自動地成為控件數(shù)組的一個元素,當(dāng)創(chuàng)建mnuRecentFile(0)時,實際上創(chuàng)建了一個在運行時不可見的分隔符條。當(dāng)運行時用

14、戶第一次存儲一個文件,這個分隔條就會變得可見,且第一個文件名被加到該菜單上。運行時每存儲一個文件,則會再裝入一個菜單項到該數(shù)組中,從而使該菜單增長(當(dāng)然,菜單也不能無限增長)。運行時創(chuàng)建的控件可以使用Hide方法或者設(shè)置該控件的Visible屬性為False來隱藏。當(dāng)用戶選取一個菜單控件時,一個Click事件則出現(xiàn)。需要在代碼中為每個菜單控件編寫一個Click事件過程(除分隔符條以外的所有菜單控件都能識別Click事件)。在菜單事件過程中編寫的代碼與在控件任何其它過程中編寫的代碼完全相同。一旦菜單標(biāo)題被選取,VB將自動地顯示一個菜單。例5在字體不可見后插入一個菜單項,標(biāo)題-,名稱:mnuRec

15、entFile,可見屬性值為:在新建文件的程序代碼中作如下修改(藍(lán)色部分是增加的內(nèi)容):Private Sub Form_Load()End Sub Private Sub mnuopen_Click()關(guān)于函數(shù)Mid$、Len:中部截取函數(shù)Mid$功能:用來截取字符串中間的一比部分。格式:Mid$(字符串,p,n)a$=abcdefghijkcdef Mid$函數(shù)的第三個自變量可以省略,在這種情況下,將從第二個自變量指定的位置向后截取到字符串的末尾。字符串長度測試函數(shù)Len功能:測試字符串的長度,也可以測試變量的存儲空間,它的自變量可以是字符串,也可以是變量名。Len(變量名)例如:a$=a

16、bcdefghijk11 a=Len(textvar#)8 42例5設(shè)有一個剛剛建立的菜單,它有一個主菜單應(yīng)用程序,其下有兩個子菜單增加應(yīng)用程序、減少應(yīng)用程序及分隔線。要求單擊增加應(yīng)用程序時在分隔條下增加一個新的菜單項,單擊減少應(yīng)用程序時刪除分隔線下面一個指定的菜單項,如果單擊新增加的菜單項,則可以執(zhí)行這一指定的應(yīng)用程序。原來菜單:接下來,按以下步驟操作:(1)打開菜單編輯器(2)設(shè)置菜單屬性如下:最后一項是新輸入的,它是一個子菜單,但暫時看不見。輸入索引值0以使AppName菜單項成為菜單控件數(shù)組,AppName(0)是控件數(shù)組的第一個元素。(3)編寫添加菜單項代碼:單擊增加應(yīng)用程序菜單項,

17、在程序中添加代碼:Dim menucounter As Integer msg=Enter file path:End Sub以上僅是一個練習(xí),在實際應(yīng)用時,可以通過通用對話框打開文件,然后再將打開的文件名作為菜單項顯示,這樣代碼可改為(窗體上已添加了通用對話框控件):Private Sub AddAp_Click()With CommonDialog1 menucounter=menucounter+1 End Sub(4)編寫刪除菜單項代碼:在運行時用load語句增加的菜單項可以使用Unload語句刪除,但不能刪除設(shè)計時建立的菜單項。單擊減少應(yīng)用程序菜單項,在程序中添加代碼:Private

18、 Sub DelAp_Click()Dim n,i As Integer End Sub說明:從過程中可以看出,刪除指定菜單項的操作并不是直接進(jìn)行的,而是從被刪除的菜單項開始,用后面的菜單項覆蓋前面的菜單項,然后再刪除最后一個菜單項。功能:設(shè)計分為兩步:首先用菜單編輯器建立菜單,這一步與前面介紹的基本相同,唯一的區(qū)別是,必須把菜單名(即主菜單項)的可見屬性設(shè)置為False(子菜單項不要設(shè)置為False);第二步用PopupMenu方法彈出顯示。PopupMenu方法用來顯示彈出菜單,object.PopupMenu menuname,flags,x,y,boldcommand其中:Object

19、(對象)-窗體名。Menuname(菜單名)-指在菜單編輯器中定義的X、Y-彈出式菜單在窗體上的顯示位置的X、Y坐標(biāo)(與Flags參數(shù)配合使用)。Boldcommand-指定彈出式菜中的彈出式菜單控件的名字,用以顯示為黑體正文標(biāo)題。Flags-該參數(shù)是一個數(shù)值或符號常量,指定彈出式菜單的位置和行為,其取值分為兩組,一組用來指定菜單位置,另一組用來定義特殊的菜單行為,如下表:指定菜單位置定義菜單行為說明:PopupMenu方法的6個參數(shù)中,除菜單名外,其余參數(shù)都是可選的。當(dāng)省略了對象時,彈出式菜單只能在當(dāng)前窗體中顯示。如果需要在其它窗體中顯示彈出菜單,則必須加上窗體名。Flags的兩組參數(shù)可以單

20、獨使用,也可以聯(lián)合使用。當(dāng)聯(lián)合使用時,每組中取一個值,兩個值相加;如果使用符號常量,則兩個值用Or連接。X、Y分別用來指定彈出式菜單顯示位置的橫、縱坐標(biāo),如果省略,則彈出菜單在鼠標(biāo)光標(biāo)的當(dāng)前位置顯示。彈出式菜單的位置由X、Y、Flags參數(shù)共同指定。如果省略這幾個參數(shù),則在單擊鼠標(biāo)右鍵彈出菜單時,鼠標(biāo)光標(biāo)所在位置為彈出式菜單左上角的坐標(biāo)。在默認(rèn)情況下,以窗體的左上角為坐標(biāo)原點。如果只省略Flags參數(shù),不省略X、Y參數(shù),則X、Y為彈出式菜單左上角的坐標(biāo);如果同時使用X、Y及Flags參數(shù),則彈出菜單的位置分為一下幾種情況:Flags=0 X、Y為彈出式菜單左上角的坐標(biāo)Flags=4 X、Y為彈

21、出式菜單頂邊中間的坐標(biāo)Flags=8 X、Y為彈出式菜單右上角的坐標(biāo)PopupMenu方法放在MouseDown事件中,該事件響應(yīng)所有的鼠標(biāo)單擊操作。按照慣例,一般通過單擊鼠標(biāo)右鍵顯示彈出菜單,這可以用Button參數(shù)來實現(xiàn)。對于兩個鍵的鼠標(biāo)來說,左鍵的Button參數(shù)值為1,右鍵的Button參數(shù)值為2。因此可以強制使用右鍵來響應(yīng)MouseDown事件而顯示彈出菜單:If Button=2 Then PopupMenu菜單名下面舉例說明建立彈出式菜單的一般過程。例6步驟如下:Private Sub Form_MouseDown(Button As Integer,Shift As Integ

22、er,X As Single,Y As Single)If Button=2 Then End Sub Private Sub Form_Load()Text1.Text=可視化高級程序語言End Sub因為主菜單不可見,所以不能直接下拉主菜單而單擊子菜單進(jìn)入代碼窗口,必須先進(jìn)入代碼窗口(按F7鍵或雙擊窗體或執(zhí)行視圖菜單下的代碼窗口命令),然后分別從對象名稱框和事件名稱框中選擇對應(yīng)項,然后分別編寫代碼。Private Sub popBold_Click()Private Sub Quit_Click()運行結(jié)果:工具欄(也稱為發(fā)條或者控制欄)已經(jīng)成為許多基于Windows的應(yīng)用程序的標(biāo)準(zhǔn)功能。

23、工具欄提供了對于應(yīng)用程序中最常用的菜單命令的快速訪問??梢允褂肨oolBar控件來輕松的創(chuàng)建工具欄,也可以使用應(yīng)用程序向?qū)韯?chuàng)建工具欄,方法更加簡便。1、利用應(yīng)用程序向?qū)?chuàng)建工具欄應(yīng)用程序向?qū)荲B6.0為用戶提供的一項功能,通過應(yīng)用程序向?qū)в脩艨梢院芸煸O(shè)計出一個標(biāo)準(zhǔn)Windows程序的框架,其中包括窗體、菜單、工具欄、多文檔、狀態(tài)欄、對話框、滾動條等等。設(shè)計過程是在對話中完成,設(shè)計完成后形成應(yīng)用程序的界面和框架。創(chuàng)建一個標(biāo)準(zhǔn)的應(yīng)用程序框架步驟如下:2、使用ToolBar控件創(chuàng)建工具欄使用ToolBar控件創(chuàng)建工具欄也是非常簡單的工作,基本的屬性設(shè)置可以通過對話框完成。給示例Mymenu設(shè)計一

24、個具有四個工具按鈕的工具欄,分別對應(yīng)菜單中的新建、打開、粗體、斜體等四個菜單項,并完成相應(yīng)的功能。關(guān)于樣式的說明:Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Index End Sub Private Sub mnuBold_Click()mnuBold.Checked=Not mnuBold.Checked End Sub Private Sub mnufotesize_Click(Index As Integer)Select Case Index End Sub Private Sub mnuItalic_Click()mnuI

溫馨提示

  • 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

提交評論