版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、YCF正版可修改PPT(中職)可視化編程應(yīng)用Visual Basic模塊6 菜單、工具欄與狀態(tài)欄電子課件模塊6 菜單、工具欄與狀態(tài)欄任務(wù)1 多文檔界面MDI任務(wù)2 菜單的規(guī)劃與設(shè)計任務(wù)3 工具欄 任務(wù)1 多文檔界面MDI6. 1. 1多窗體 可以通過工程菜單上的添加窗體命令或工具欄上的添加窗體按鈕來創(chuàng)建一個新的窗體,或者把一個屬于其他工程的窗體添加到當(dāng)前工程中,這是因為每一個窗體都是以獨立的Form1文件保存的。圖6-1所示的是“添加工程”對話框,打開“新建”選項卡,可以建立一個新的窗體,打開“現(xiàn)存”選項卡,可以添加一個已有的窗體。 在擁有多個窗體的程序中,要有一個開始窗體。系統(tǒng)默認原窗體名稱
2、為Form 1的窗體為開始窗體,如果要指定其他窗體為開始窗體,應(yīng)選擇“工程”菜單中的“屬性”命令,在打開的對話框中通過修改“通用”選項卡的“啟動對象”來實現(xiàn)。下一頁返回任務(wù)1 多文檔界面MDI 例6一1通過一個使用多窗體的例子來統(tǒng)計一個學(xué)生操作系統(tǒng)、VB、高等數(shù)學(xué)和英語4門課的平均成績和總成績。 根據(jù)題目要求,在本例中設(shè)計3個窗體和一個標(biāo)準(zhǔn)模塊。其中一個窗體是主窗體,另兩個是子窗體,分別用于輸入一個學(xué)生的成績和計算他的平均成績和總成績。在標(biāo)準(zhǔn)模塊module1. bas中對所用到的全局變量進行說明: Public sos,svb,smath,senglish as single 操作步驟介紹如
3、下。 (1)新建窗體Form 1,此窗體是本應(yīng)用程序的主窗體,如圖6-2所示。在此窗體中有3個命令按鈕,它們的屬性如表6-1所示。上一頁下一頁返回任務(wù)1 多文檔界面MDI 在程序執(zhí)行時首先進入主窗體Fortnl ,當(dāng)單擊主窗體上的“輸入成績”按鈕時彈出子窗體Form2,主窗體本身消失;單擊主窗體上的“計算成績”按鈕時,彈出子窗體Forma,主窗體本身消失;單擊主窗體上的“結(jié)束”按鈕時結(jié)束程序運行。程序代碼如下: Private Sub Commandinput-Click() Form1. Hide Form2. Show End Sub Private Sub Commandoutput-C
4、lick() Firm 1 .Hide Form3. Show End Sub Private Sub Commandend-Click() End End Sub上一頁下一頁返回任務(wù)1 多文檔界面MDI (2)選擇“工具”菜單下的“添加窗體”命令,新建窗體Form2,此窗體是在主窗體中單擊了“輸入成績”按鈕時彈出的,如圖6 -3所示。 該窗體上有4個用于輸入學(xué)生成績的文本框,名稱分別為textos 、 textvb、 textmath和textenglish ,有一個“返回”按鈕,單擊此按鈕時,先把4門課程的成績分別賦給相應(yīng)的變量,然后隱含自身,回到主窗體,代碼如下: Private Sub
5、 Command1-Click() sos = Val( textos. Text) svb = Val( textvb. Text) smath = Vat( textmath. Text) senglish = Val( textenglish. Text) Form2. Hide Form1 .Show End Sub上一頁下一頁返回任務(wù)1 多文檔界面MDI (3)添加窗體Fortn3,在主窗體中單擊了“計算成績”按鈕時彈出,如圖6-4所示。 該窗體中有兩個用于顯示學(xué)生平均成績和總成績的文本框,名稱分別為TextAverage和TextTotal,有一個“返回”按鈕。該窗體有兩個事件過程
6、,代碼如下: Private Sub Form-Activale() Dim stotal As Single stotal=sos +svb+smath+senglish Textaverage. Text=stotal/4 TextTotal.Text= stotal End Sub Private Sub Command1 Click() Form3. Hide Forml. Show End Sub 上一頁下一頁返回任務(wù)1 多文檔界面MDI 下面介紹多重窗體的語句和語法。 (1)Load語句。 該語句把一個窗體存入內(nèi)存。執(zhí)行l(wèi)oad語句后,可以引用窗體中的控件及各種屬性,但此時窗體沒有
7、顯現(xiàn)出來。 格式:load窗體名稱 其中,“窗體名稱”是窗體的Name屬性。 (2) Unload語句。 該語句與load語句的功能相反,它從內(nèi)存中刪除指定的窗體。 格式:Unload窗體名稱 其中,“窗體名稱”是窗體的name屬性。上一頁下一頁返回任務(wù)1 多文檔界面MDI (3) show方法。 該方法用來顯示一個窗體,它兼有裝入和顯示窗體兩種功能。也就是說,在執(zhí)行show時,如果窗體不在內(nèi)存中,則*how自動把窗體裝入內(nèi)存,然后再顯示出來。 格式:窗體名稱. Show模式 其中: “窗體名稱”是窗體的name屬性,默認是指當(dāng)前窗體。 “模式”用來確定窗體的狀態(tài),有0和1兩個值。若“模式”為
8、1,表示窗 體是“模式型” ( Modal)。在這種情況下,用戶無法將鼠標(biāo)移到其他窗口,也就是說,只有在關(guān)閉該窗體后才能對其他窗體進行操作,若“模式”為。,表示窗體是“非模式型” ( Modalless,可以對其他窗體進行操作?!澳J健钡哪J值為0)。 (4) Hide方法。 該方法用來將窗體暫時隱藏起來,并非從內(nèi)存中刪除。 格式:窗體名稱. Hide 其中,“窗體名稱”是窗體的name屬性,默認是 指當(dāng)前窗體。上一頁下一頁返回任務(wù)1 多文檔界面MDI6. 1. 2多文檔界面 Windows應(yīng)用程序主要有兩種界面:一種是單文檔界面,英文縮寫是SDI;另一種是多文檔界面,(Multiple Do
9、cument Interface ,MDI) 。 Windows中的計算器、記事本和畫圖等應(yīng)用程序都屬于單文檔界面。這種單文檔界面的應(yīng)用程序,其工作界面在任何時刻都只能夠打開一個文檔,要打開另一個文檔,必須先關(guān)閉原來打開的文檔。絕大多數(shù)基于Windows的大型應(yīng)用程序都是多文檔界面,如Microsoft Excel和Microsoft Word等。多文檔界面允許同時打開多個文檔,多文檔界面由父窗體和子窗體組成。 多文檔界面(MDI)與多重窗體不是一個概念。多重窗體應(yīng)用程序中的各個窗體是彼此獨立的,不具有父子關(guān)系。MDI雖然也有多個窗體,但這些窗體中只有一個MDI父窗體,其他窗體屬于MDI子窗體
10、,子窗體都被限制在MDI父窗體的區(qū)域內(nèi),每個文檔顯示在自己的MDI子窗體中,子窗體只能在父窗體的工作區(qū)中打開,最小化后將以圖標(biāo)形式出現(xiàn)在父窗體中(如圖6-5所示),而不會出現(xiàn)在Windows XP的任務(wù)欄中。當(dāng)最小化父窗體時,所有的子窗體也被最小化,只有父窗體的圖標(biāo)出現(xiàn)在任務(wù)欄中。上一頁下一頁返回任務(wù)1 多文檔界面MDI 一個MDI應(yīng)用程序可以含有3類窗體,即普通窗體(也稱標(biāo)準(zhǔn)窗體)、MDI父窗體和MDI子窗體,通常把MDI父窗體簡稱為父窗體或MDI窗體,而把MDI子窗體簡稱為子窗體。 普通窗體和MDI窗體沒有直接的從屬關(guān)系,可以從MDI窗體中將普通窗體移出去。在VB中,父窗體就是MDI窗體,
11、子窗體是指MDIChild屬性為True的普通窗體。 下面通過例題來了解如何建立多文檔界面的應(yīng)用程序。上一頁下一頁返回任務(wù)1 多文檔界面MDI 【例6 -2】已經(jīng)創(chuàng)建了一個窗體Form 1,在運行時,如果用戶需要一個新文檔,就使用應(yīng)用程序“文件”菜單中的“打開”命令,應(yīng)用程序會打開一個文本編輯窗體;如果使用應(yīng)用程序“文件”菜單中的“新建”命令,就可把前面已建好的窗體Form 1作為子窗體打開。操作步驟介紹如下。 (1)在“工程”菜單中選擇“添加MDI窗體”命令,彈出如圖6-6所示的“添加MDI窗體”對話框,選擇“MDI窗體”選項,再單擊“打開”按鈕,建立新的MDI窗體;或把鼠標(biāo)指向Micros
12、oft Visual Bali。窗口右側(cè)“工程”窗口中的工程名,右擊,彈出快捷菜單,從中選擇“添加”命令,再從下一級菜單中選擇“添加MDI窗體”命令。這時,添加了一個MDI窗體,即MDI父窗體。從圖6-7所示的工程中能看到這個新添加的窗體。上一頁下一頁返回任務(wù)1 多文檔界面MDI (2)設(shè)置MDI窗體的子窗體。子窗體既可以是已經(jīng)存在的窗體,也可以是新建的窗體。在設(shè)計階段,子窗體原本就與MDI窗體沒有什么關(guān)系,可以單獨添加控件、設(shè)置屬性、編寫代碼。在這個例子中,要把在講述菜單設(shè)計時建好的Form1設(shè)置為子窗體,只需將Forml的MDIChild屬性設(shè)置為“True”,如圖6-8所示。另外,在這個
13、例子中,還要新建一個子窗體Form2,在Form2上創(chuàng)建一個文本框Text1。 3個窗體和文本框的屬性如表6-2所示。 (3)使用菜單編輯器參照表6-3在窗體MDIform 1中創(chuàng)建一個“文件”菜單。 (4)編寫MDI窗口中的事件過程代碼。在此例中,要實現(xiàn)單擊MDI窗體中的“新建”命令時彈出Form1子窗體,單擊MDI窗體中“打開”命令時彈出Form2子窗體,代碼如下:上一頁下一頁返回任務(wù)1 多文檔界面MDI Private Sub new-Click() Dim newdoc As New Form1 newdoc.Show End Sub Private Sub open- Click()
14、 Dim newdoc As New Fortn2 newdoc. Show End Sub Private Sub exit - Click() End End Sub 上一頁下一頁返回任務(wù)1 多文檔界面MDI 給Form2窗體的Form Resize過程添加以下代碼,可以保證當(dāng)子窗體 Form2的大小改變時(即發(fā)生Resize事件時),文本框的大小做相同的改變。 Private Sub Form Resize() text1 .Height=ScaleHeight text1 .Width=ScaleWidth End Sub (5)把窗體MDIForml設(shè)置為啟動窗體。 (6)運行應(yīng)用程
15、序。從運行結(jié)果可以看到,當(dāng)只裝載MDI窗體而未裝載子窗體時,顯示在MDI窗體上的菜單是原來定義在這個窗體上的菜單,如圖6 -9所示。在“文件”菜單中選擇“新建”命令時,建立一個子窗體Form 1,這時這個子窗體是當(dāng)前窗體,子窗體上沒有菜單,原來MDI窗體上的菜單被子窗體上的菜單取代,如圖6-10所示。這是MDI應(yīng)用程序中菜單的特點,靈活利用這一特點,可以使MDI窗體和子窗體具有不同的菜單,使得程序在運行時有不同的特點。上一頁下一頁返回任務(wù)1 多文檔界面MDI 下面繼續(xù)討淪MDI特點。 MDI子窗體可以使用的屬性、方法和語句并沒有改變。MDI窗體可以使用的屬性、方法和語句與普通窗體基本一樣。新增
16、組合的屬性、方法和語句如下。 (1)AutoShowChildren屬性。 MDI窗體的AutoShowChildren屬性用來決定是否自動顯示子窗體。它的兩個值分別是: True當(dāng)改變子窗體屬性(如Ca間ion)后,會自動顯示它的子窗體; False改變子窗體的屬性值后,不會自動顯示它的子窗體,子窗體處于隱藏狀態(tài),只有使用Show方法才可以把子窗體顯示出來。 在顯示子窗體時,如果MDI窗體具有大小可變的邊框,即BorderStyle =2,則其初始化大小與位置取決于MDI窗體的大小,而不是設(shè)計時子窗體的大小。當(dāng)MDI子窗體的邊框大小不可變(即BorderStyle = 0 ,1或3)時,則它
17、的大小由設(shè)計時的Height和Width屬性決定。上一頁下一頁返回任務(wù)1 多文檔界面MDI ( 2 ) Arrange方法。 MDI應(yīng)用程序中可以包含多個子窗體。當(dāng)打開多個子窗體時,用MDIform的Arrange方法能夠使子窗體或其圖標(biāo)按一定的規(guī)律排列。 格式:Arrange “參數(shù)”是一個整數(shù),表示所使用的排列方式,其含義如表6-4所示。 ( 3 ) Dim語句。 格式:Dimas New 功能:用來聲明圖形對象、子窗體和控件對象,以及對象數(shù)組或子窗體數(shù)組的名稱,數(shù)組對象應(yīng)有括號和括號內(nèi)的下標(biāo)值,格式與一般數(shù)組的定義格式一樣。 “對象類型”:以前未指定的新對象。上一頁下一頁返回任務(wù)1 多文
18、檔界面MDI 如果使用New來聲明對象變量,則在第一次使用該變量時將新建該對象的實例,因此不必使用Set語句來給變量賦值。如果省略它,則在使用該變量之前,必須使用Set語句將該引用對象的變量賦值為一個已有對象。在該變量賦值之前,所聲明的對象變量有一個特定值Nothing這個值表示該變量沒有指向任何一個對象。 例如,聲明一個列表框?qū)ο笞兞縪bjLisl的語句應(yīng)為: Dim object as listbox 不能為: Dim object as list1 也不能為: Dim object as new listbox 如果要聲明一個指定的列表框lisp的控件變量,應(yīng)如下述格式定義: Dim o
19、bject as listbox Set objlist=list1上一頁下一頁返回任務(wù)1 多文檔界面MDI 上述語句的作用是聲明一個對象變量objList為objBox類型,再用Set語句把一個已經(jīng)定義的列表框?qū)ο驦ist1賦值給objList。這樣objList就代表List1 , objList. Name就是List1 .Name 其中, Set語句用于為對象變量賦值。 格式: Set = (4 ) QueryUnload和Unload事件。 當(dāng)窗體將要關(guān)閉或結(jié)束應(yīng)用程序之前,QueryUnload事件被觸發(fā)。當(dāng)關(guān)閉一個窗體時,首先在MDI窗體中產(chǎn)生QueryUnload事件,然后在所
20、有子窗體中產(chǎn)生該事件MDI當(dāng)窗體被關(guān)掉或使用Unload語句卸載窗體或MDI子窗體隨MDI窗體一同被關(guān)閉時,就會產(chǎn)生Unload事件。上一頁下一頁返回任務(wù)1 多文檔界面MDI ( 5 ) Screen對象和Screen. ActiveForm屬性。 在Windows環(huán)境中,可以同時打開多個窗體,每個窗體往往有多個控件。要想獲得屏幕上當(dāng)前窗體及當(dāng)前控件的信息,一般要引用一個對象的屬性值,應(yīng)該知道對象的名及所需的屬性。Screen對象能提供當(dāng)前窗體或控件的詳細特性。Screen有多個屬性,如ActiveControl、ActiveForm、ActiveReport等。 如果屏幕上有多個窗體,通過S
21、creen對象的ActiveForm屬性就能夠引用當(dāng)前屏幕上激活窗體的各個屬性,無需知道當(dāng)前窗體的具體名稱。 下面利用一個多文檔界面關(guān)閉的例子來看如何應(yīng)用UneryUnload事件。上一頁下一頁返回任務(wù)1 多文檔界面MDI 【例6 -3】創(chuàng)建一個MDI窗體和其子窗體,單擊MDI子窗體標(biāo)題右邊的“x”按鈕,關(guān)閉該子窗體,會彈出一個提示框,如圖6-11所示。單擊提示框中的“否”按鈕,就會回到如圖6-12所示的開始狀態(tài),即不關(guān)閉子窗體。單擊MDI窗體中的“x”按鈕,或“退出程序”按鈕,會彈出一個提示框,如圖6-13所示。單擊提示框中的“否”按鈕,回到圖6-11所示的狀態(tài),單擊“是”按鈕,可再彈出一提
22、示框,如圖6-14所示。單擊“否”按鈕則不關(guān)閉,單擊“是”按鈕則彈出另一提示框,如圖6-15所示。繼續(xù)選擇,在這個提示框中,單擊“否”按鈕不關(guān)閉。單擊“是”按鈕則關(guān)閉所有窗體,退出應(yīng)用程序。上一頁下一頁返回任務(wù)1 多文檔界面MDI 操作步驟介紹如下。 (1)創(chuàng)建一個名為MDI的窗體,然后創(chuàng)建一個名為Form 1的MDI子窗體。 (2)在MDI窗體上創(chuàng)建一個工作區(qū)。需要注意的是,MDI窗體上可以創(chuàng)建圖片框(Picture)和計時器(Timer)控件對象、菜單和具有Align屬性的自定義控件,但不可以直接創(chuàng)建其他的控件。如果要創(chuàng)建其他控件,要先在MDI窗體上創(chuàng)建一個圖片框,然后把其他控件建在圖片框
23、內(nèi)??梢栽贛DI窗體的圖片框內(nèi)使用Print方法顯示文本,但不能在MDI窗體上顯示文本。所以可在MDI窗體上加入一個圖片框,然后在其內(nèi)創(chuàng)建一個名為Command 1的按鈕對象。這樣,圖片框下即為MDI窗體的工作區(qū),即子窗體顯示區(qū)。 (3)把Form1子窗體的Caption屬性設(shè)置為“子窗體1,按鈕對象的Caption屬性設(shè)置為“退出程序”。 (4)把MDIForml設(shè)置為啟動對象,F(xiàn)orm1子窗體的MDIChild屬性設(shè)置為True上一頁下一頁返回任務(wù)1 多文檔界面MDI (5)編寫代碼如下: Private Sub Fortn_QueryUnload(Cancel As Integer, U
24、nloadMode As Integer) Dim msg If UnloadMode0 Then msg =您真想關(guān)閉該子程序,再退出應(yīng)用程序嗎? Else msg = 您真想關(guān)閉子程序嗎? End If Rem If MsgBox( msg,vbQuestion+vbYesNo,Me. Caption)=vbNo Then Cancel=True End If End Sub上一頁返回任務(wù)2 菜單的規(guī)劃與設(shè)計 菜單在各種Windows應(yīng)用軟件中經(jīng)常用到,圖6-16是Windows應(yīng)用程序的記事本菜單。 在窗口環(huán)境下,應(yīng)用程序使用菜單可以進行各種操作。菜單可分為下拉式菜單和彈出式菜單兩種基本
25、類型。菜單條上顯示的是主菜單,如圖6-16中所示的“文件”、“編輯”、“格式”、“查看”和“幫助”即為主菜單名,當(dāng)程序執(zhí)行時用鼠標(biāo)或鍵盤選擇某菜單項時會彈出下拉菜單。右擊窗體時彈出的菜單為彈出式菜單。彈出式菜單沒有主菜單名,是顯示于窗體之上、獨立于菜單欄的浮動式菜單,只有使用時才顯示出來。圖6-17顯示的是Windows桌面上的彈出式菜單。下一頁返回任務(wù)2 菜單的規(guī)劃與設(shè)計 另外,在菜單項中還有分隔條,利用它可以把具有相似功能的菜單項進行分隔。菜單項還可以有快捷鍵和熱鍵,而主菜單名只設(shè)置熱鍵。 菜單附屬于一個窗體,菜單的屬性也可以像其他控件一樣在“屬性”窗口和程序中進行設(shè)置。VB為用戶提供了設(shè)
26、計菜單的工具。在設(shè)計菜單時,到VB主窗口的工具欄中選擇“工具”菜單項,從其下拉菜單中選擇“菜單編輯器”命令;或者在需要建立菜單的窗體上右擊,在彈出的快捷菜單中選擇“菜單編輯器”命令,這時屏幕上會彈出一個“菜單編輯器”對話框,如圖6-18所示。 利用這個菜單編輯器,可以對所要設(shè)計的菜單的每一項的屬性進行設(shè)置??梢钥吹剑藛尉庉嬈鞯拇翱诜譃樯?、中、下3個部分。用來對輸入的菜單項進行簡單編輯。下面部分是菜單項顯示區(qū),輸入的菜單項在此處顯示出來。上一頁下一頁返回任務(wù)2 菜單的規(guī)劃與設(shè)計6. 2. 1下拉菜單設(shè)計 例6 -4設(shè)計一個窗體,布局如圖6-19所示。在該窗體上設(shè)計菜單,包括“文件”和“編輯”兩
27、項。其中的“文件”菜單提供Windows常用的“新建”、“打開”、“保存”、“另存為”、“發(fā)送”和“退出”功能。“編輯”包括“剪切”、“復(fù)制”和“粘貼”功能。要求實現(xiàn)菜單所指定的功能。 窗體上的菜單項設(shè)置如表6-5所示。上一頁下一頁返回任務(wù)2 菜單的規(guī)劃與設(shè)計 下面來討淪如何建立菜單以及編寫相應(yīng)的應(yīng)用程序。 1.建立菜單 在菜單編輯器的屬性設(shè)置區(qū),分別設(shè)置菜單的標(biāo)題、名稱等項,下面說明一下這幾項的含義。 (1)“標(biāo)題”讓用戶輸入顯示在窗體上的菜單標(biāo)題,相當(dāng)于普通控件的Caption屬性。這個屬性的內(nèi)容是提供給用戶看的,即標(biāo)題內(nèi)容會出現(xiàn)在菜單欄或菜單之中。分隔符的標(biāo)題為一個連字符“-”。 (2)
28、“名稱”為菜單項的標(biāo)識符,相當(dāng)于空間的名字屬性,僅用于訪問代碼中的菜單項,它不會在菜單中顯示出來。分隔符也要有對應(yīng)的名稱。 (3)“索引”可以通過輸入一個數(shù)字來確定菜單標(biāo)題或菜單項在某菜單空間數(shù)組中的位置或次序,該位置與菜單的屏幕位置無關(guān)??梢圆惠斎肴魏蝺?nèi)容。上一頁下一頁返回任務(wù)2 菜單的規(guī)劃與設(shè)計 (4)如果需要為菜單項設(shè)置快捷鍵,則應(yīng)從“快捷鍵”的下拉列表框中選擇系統(tǒng)提供的、可用的快捷鍵組合。菜單項的快捷鍵可以不要,但如果選擇了快捷鍵,則會顯示在菜單標(biāo)題的右邊。在程序運行時,用戶可以通過鍵盤來選擇菜單項并執(zhí)行相應(yīng)命令的操作。 (5)“幫助上下文ID”用來輸入一個數(shù)字,為一個對象返回或設(shè)置一
29、個關(guān)聯(lián)上下文的編號。它被用來為應(yīng)用程序提供與上下文有關(guān)的幫助,在HelpFile屬性指定的幫助文件中查找相應(yīng)的幫助主題。 (6)“協(xié)調(diào)位置”是單擊列表框右側(cè)的下拉箭頭,可以選擇是否顯示菜單和如何顯示菜單。該屬性不可以在程序中進行設(shè)置?!皡f(xié)調(diào)位置”下拉列表框中有4個選項,作用如下。 0 - None:菜單項不顯示。 1 - Left:菜單項左顯示。 2 - Middle:菜單項中間顯示。 3 - Right:菜單項右顯示。上一頁下一頁返回任務(wù)2 菜單的規(guī)劃與設(shè)計 操作步驟如下。 (1)打開需要設(shè)計的菜單窗口。 (2)選擇“工具”菜單下的“菜單編輯器”命令,進入“菜單編輯器”對話框后,光標(biāo)在“標(biāo)題
30、”文本框中閃爍,下面列表框(菜單項顯示區(qū))的頂部有高亮顯示的空行。 (3)在“標(biāo)題”文本框中輸入“文件(&F) ,此時在菜單項顯示區(qū)顯示出輸入的內(nèi)容。 (4)將光標(biāo)移至“名稱”文本框,在框內(nèi)輸入“mnuFile,在“快捷鍵”下拉列表框中選擇None。 (5)單擊“下一個”按鈕,菜單項顯示區(qū)的光標(biāo)下移,同時,菜單編輯器屬性設(shè)置清空。在“標(biāo)題”文本框中輸入“新建(&N) ,在“名稱”文本框內(nèi)輸入“mnuFileNew ,在“快捷鍵”下拉列表框中選擇“Ctrl+N (6)單擊編輯區(qū)的向右箭頭按鈕,在菜單顯示區(qū)的“新建(&N)”左邊出現(xiàn)符號“”,表明“新建”是“文件”的下一級子菜單。 上一頁下一頁返回
31、任務(wù)2 菜單的規(guī)劃與設(shè)計 參照上面的步驟,建立所有的菜單項。對于有文本框的菜單項,在“標(biāo)題”文本框中輸入菜單名時,在所輸入的文本右邊輸入省略號“”,表示選擇該菜單項可以打開一個對話框。 所有菜單項設(shè)置完成后的菜單編輯器如圖6-20所示。 菜單全部設(shè)置完畢后,單擊“確定”按鈕即可完成菜單設(shè)計。如果用戶要修改一個已設(shè)置好的菜單,可再次進入“菜單編輯器”對話框進行修改。上一頁下一頁返回任務(wù)2 菜單的規(guī)劃與設(shè)計 2.編寫代碼 菜單構(gòu)造好后,要為每個菜單項編寫代碼才能真正做到通過菜單項實現(xiàn)某項操作功能。下面給前面設(shè)計好的窗體中再加入一個Textbook(文本框)和一個CommonDialog(公共對話框
32、),分別以默認方式命名,為“新建”和“打開”菜單編寫的代碼如下: Private sub mnfileopen-click() Dim filename as siring Filename=“” Commondialog1. showopen Commondialog1. filler= Text(*.txt|*.txt|picture(*.bmp;.ico)|*.bmp;.ico) Filename=commondialog1.filename Iffilename= then Msgbox no file open,vbexclaimation+vbokonly,system End i
33、f End sub 上一頁下一頁返回任務(wù)2 菜單的規(guī)劃與設(shè)計 Private sub mnufilenew clock() Commondialogl. showsave Text1.lext= Fortm1. caption= 新建文本 End sub 運行結(jié)果如圖6-21所示。6. 2. 2彈出式菜單設(shè)計 設(shè)計彈出式菜單仍然使用VB提供的菜單編輯器,只要把某個菜單設(shè)置成隱藏屬性就可以了。 例如,可以在前面添加一個快捷的編輯菜單,單擊窗體時彈出這個快捷菜單。 操作步驟如下。 上一頁下一頁返回任務(wù)2 菜單的規(guī)劃與設(shè)計(1)在菜單編輯器中建立1個頂層菜單項(沒有縮進符號),標(biāo)題可以任意設(shè)定,因為
34、它在菜單彈出的時候不顯示,這里將其設(shè)置為“edit (2)將頂層菜單的Visble屬性設(shè)置為False。這樣程序運行時就不顯示這個菜單項。(3)單擊“下一個”命令按鈕,依次輸入彈出式菜單中要顯示的各菜單項,并將其都設(shè)置為頂層菜單的子菜單(單擊“一”按鈕添加內(nèi)縮符號)。完成設(shè)計的菜單如圖6-22所示。(4)編寫代碼程序如下:Private Sub form MouseUp(button as integer, shift as integer, x as single,y as single)If butten=2 thenPopupMenu editEnd ifEnd sub彈出式菜單設(shè)計完成
35、后顯示情況如圖6-23所示。上一頁下一頁返回任務(wù)2 菜單的規(guī)劃與設(shè)計 在VB中,使用PopupMenu方法來顯示彈出式菜單。 格式:對象.PopupMenu菜單名,標(biāo)志,X,Y 其中,對象為可選項,默認為帶有焦點的Form對象;菜單名是必須的,是要顯示的彈出式菜單名,指定的菜單必須含有至少一個子菜單;標(biāo)志參數(shù)及X,Y的值能夠詳細定義彈出式菜單的位置,當(dāng)標(biāo)志等于0時,為系統(tǒng)的默認狀態(tài),此時,標(biāo)志后面的X的位置是彈出菜單的左邊界;當(dāng)標(biāo)志等于4時,X的位置是彈出菜單的中心位置;當(dāng)標(biāo)志等于8時,X的位置是彈出菜單的右邊界。 當(dāng)右擊窗體時,執(zhí)行form-mouseup事件過程,彈出快捷菜單。程序的but
36、ton表示按下鼠標(biāo)鍵,Button = 2表示按下鼠標(biāo)右鍵。當(dāng)按下鼠標(biāo)右鍵時,用PopupMenu方法顯示彈出式菜單。 程序運行時,每次只能顯示一個彈出式菜單。若已經(jīng)顯示了一個彈出式菜單,則不再執(zhí)行其他的PopupMenu事件,直到彈出菜單中的一個命令被選中或這個菜單被取消。上一頁下一頁返回任務(wù)2 菜單的規(guī)劃與設(shè)計6. 2. 3菜單項的修改 前面提過,想修改一個已設(shè)計好的菜單項,要再次進入菜單編輯器中進行。在菜單編輯器中,編輯區(qū)由以下7個按鈕組成。 (1)“ ”按鈕可以把選頂?shù)牟藛雾椣蜃笠苿右粋€等級,移到頂層時即成為主菜單。 (2)“ ”按鈕可以把選頂?shù)牟藛雾椣蛴乙苿右粋€等級,即成為子菜單。
37、(3)“ ”和“ ”按鈕可以把選頂?shù)牟藛雾椛弦苹蛳乱埔恍小?(4)“下一個”按鈕被單擊將開始一個新的菜單項。 (5)“插入”按鈕被單擊時可在某個菜單項前插入一個新的同級空白菜單項。 (6)“刪除”按鈕可刪除選定的菜單項。上一頁下一頁返回任務(wù)2 菜單的規(guī)劃與設(shè)計 菜單編輯器屬性設(shè)置區(qū)中的選項含義如下。 (1)“有效”復(fù)選框用來設(shè)置某一菜單項在程序運行期間是否可用,即是否響應(yīng)相應(yīng)的事件。當(dāng)該屬性的復(fù)選框中的“ ”被取消時,相應(yīng)的菜單項呈灰色,表明不會響應(yīng)用戶事件。 (2)“可見”復(fù)選框用來設(shè)置菜單是否顯示在屏幕上。 (3)“復(fù)選”復(fù)選框用來設(shè)計菜單是否帶有復(fù)選標(biāo)記。選擇該項后,相應(yīng)的菜單項的左邊加
38、上“ ”表明該菜單項處于活動狀態(tài)。 (4)“顯示窗口列表”復(fù)選框用來設(shè)置在多文檔應(yīng)用程序的菜單中是否包含一個已打開的各個文檔的列表。菜單中將顯示一個已打開的各個文檔的列表,每個文檔對應(yīng)一個窗口,帶有“ ”標(biāo)記的文檔為前文檔。 注意:對于某一特定窗體,只能有一個菜單的“顯示窗口列表”被選中。上一頁返回任務(wù)3 工具欄6. 3. 1手工創(chuàng)建工具欄 在窗體或MDI窗體上手工創(chuàng)建工具欄,通常用圖片(PictureBox)控件對象創(chuàng)建工具欄,用來放置各種工具按鈕;用命令按鈕(CommandButton)和圖像(Image)控件作為工具欄的按鈕。如果想要制作一個比較完美的工具欄,就要為工具欄上的每一個按鈕設(shè)
39、置3種狀態(tài)的圖像和提示文字。這樣,當(dāng)按鈕處于正常、按下和無效狀態(tài)時,就會顯示不同的圖像;當(dāng)鼠標(biāo)指針移動到按鈕上時,就會自動顯示按鈕名稱。 下面介紹手工創(chuàng)建工具欄的過程。下一頁返回任務(wù)3 工具欄 下面介紹手工創(chuàng)建工具欄的過程。 (1)在窗體中放置一個圖片框。 在普通窗體或MDI窗體上放置一個圖片框。如果是普通窗體,則要將它的Align屬性設(shè)置為1,圖片框才會自動伸展寬度,直到填滿窗體工作空間。如果是MDI窗體,就不需要做這一屬性設(shè)置,它會自動伸展。需要注意的是,在MDI窗體上只能用圖片框作為工具欄按鈕的容器,因為只有那些直接支持Align屬性的控件才能放置在MDI窗體上,而圖片框是支持這一屬性的
40、唯一標(biāo)準(zhǔn)控件。 (2)在圖片框中放置控件。 在圖片框中,可以放置命令按鈕或圖像等控件對象。放置控件時,不能使用雙擊工具箱上控件按鈕的方法,而應(yīng)單擊工具箱中的控件,然后用出現(xiàn)的“+”指針在圖片框中添加控件。上一頁下一頁返回任務(wù)3 工具欄 (3)設(shè)置屬性。 為工具欄中的每個控件Picture屬性設(shè)置一幅圖像,這決定了按鈕正常顯示時的圖像。如果需要的話,還可以給DisablePicture屬性設(shè)置一幅圖像,以決定按鈕無效時的圖像;給DownPicture屬性設(shè)置一幅圖像,以決定按鈕按下時的圖像。另外,還可以用ToolTipText屬性來設(shè)置工具按鈕的提示信息。 (4)編寫代碼。 因為通常都是通過單擊
41、工具欄中的按鈕來實現(xiàn)某種操作的,所以需要為按鈕控件對象或圖像控件對象的Click事件過程編寫響應(yīng)程序,以完成一個指定的操作。 如果要調(diào)整工具欄中各按鈕的位置,可以選中這些控件,然后選擇“格式”菜單下“水平間距”子菜單中的“相同間距”等命令。上一頁下一頁返回任務(wù)3 工具欄 例6 -5在窗體上建立一個工具欄,工具欄上只有兩個按鈕:新建和打開,如圖6-24所示。 操作步驟介紹如下。 (1在窗體上建立1個圖片框(PictureBox),將其Align屬性設(shè)置為to (2)在窗體上添加兩個圖像框,它們的名稱分別為Imagel.Image和Image2.Image (3)在Imagel.Image和Ima
42、ge2. Image中分別裝載入圖片 和 ,它們的TooTipText屬性分別設(shè)置為“新建文件”和“打開文件”。 (4)兩個按鈕的Click事件過程比較簡單,這里不再敘述。上一頁下一頁返回任務(wù)3 工具欄6. 3. 2使用工具枉控件制作工具框 下面介紹用工具欄控件制作工具欄的方法。 (1)在工具箱中添加工具欄控件。 因為工具欄控件不在VB 6. 0的常規(guī)標(biāo)準(zhǔn)控件之中,所以首先要把工具欄添加到工具箱中。添加工具欄控件用如下方法: 選擇“工程”菜單下的“部件”命令,彈出“部件”對話框,如圖6-25所示。在此對話框的“控件”選項卡中選中Microsoft Windows Common Control
43、6. 0復(fù)選框,然后單擊“確定”按鈕,工具欄控件和另外一些控件將被添加到工具箱中。 在工具箱中右擊,在彈出的快捷菜單中選擇“部件”命令,也可彈出如圖6-25所示的對話框。上一頁下一頁返回任務(wù)3 工具欄 (2)在窗體中添加工具欄控件。 當(dāng)把工具欄控件添加到工具箱中之后,可以雙擊工具箱中的工具欄控件,工具欄會自動加入窗體并放置在窗體的頂部。如果想改變工具欄放置的位置,可以通過改變工具欄的Align屬性來實現(xiàn)。工具欄的Align屬性值及其含義如表6-6所示。 (3)調(diào)出“屬性頁”對話框。 在窗體的工具欄中右擊,在彈出的快捷菜單中選擇“屬性”命令,就可以彈出工具欄的“屬性頁”對話框,如圖6-26所示。
44、利用此對話框來設(shè)計工具欄的一些非常規(guī)屬性。 (4)在工具欄中添加工具按鈕。 打開“屬性頁”對話框中的“按鈕”選項,可以看到有“插入按鈕”和“刪除按鈕”兩個按鈕,它們分別用來在工具欄中添加和刪除按鈕。工具欄中的所有按鈕構(gòu)成一個按鈕集合,稱為Buttons。創(chuàng)建Button控件和Buttons集合的方法,就是單擊“插入按鈕”按鈕,設(shè)置一些屬性即可。上一頁下一頁返回任務(wù)3 工具欄 (5)按鈕屬性的設(shè)置。 在“屬性頁”對話框中的“按鈕”選項卡下,可以為在工具欄中添加的按鈕設(shè)置屬性。下面先介紹各文本框的含義。 “索引”(對應(yīng)Index屬性)文本框:取值為整數(shù),相當(dāng)于按鈕的序號。單擊文本框右側(cè)的箭頭,可以
45、依次選擇Button按鈕集合中的按鈕。 “關(guān)鍵字”(對應(yīng)Key屬性)文本框:取值為字符型,類似于對象的名字。該屬性是可選項,其值可以為空。在程序中設(shè)置Key屬性時,其字符串值必須用雙引號括起來。 “標(biāo)題”(對應(yīng)Caption屬性)文本框:用來設(shè)置或返回按鈕的標(biāo)題。 “工具提示文本”(對應(yīng)ToolTipText屬性)文本框:返回或設(shè)置按鈕的描述信息。在其內(nèi)輸入提示信息,程序運行中,將鼠標(biāo)指針移動到按鈕上時,就會顯示該文本框中的文字信息。 上一頁下一頁返回任務(wù)3 工具欄 “描述”(對應(yīng)Description屬性)文本框:返回或設(shè)置按鈕的描述屬性,取值為字符型。如果按鈕設(shè)置了該屬性,在程序運行時,如
46、果雙擊工具欄,可以調(diào)出“自定義工具欄”對話框,如圖6-27所示。該對話框會顯示出所有按鈕的描述內(nèi)容,可以調(diào)整按鈕的位置,還可以重新設(shè)置按鈕和刪除按鈕以及加入分隔符。 “樣式”(對應(yīng)Style屬性)列表框:用來設(shè)置按鈕樣式,取值為整型。取值及含義如表6-7所示。 “值”(對應(yīng)Value屬性)列表框:返回或設(shè)置按鈕的按下和松開狀態(tài)。一般用來對開關(guān)按鈕和編輯按鈕的初狀態(tài)進行設(shè)置。0-tbrunpressed表示松開狀態(tài),1-tbrunpressed表示按下狀態(tài)。 “寬度”(對應(yīng)Width屬性)文本框:設(shè)置占位按鈕的寬度。取值為整型。 “圖像”(對應(yīng)Image屬性)文本框:在按鈕上加載圖像。上一頁下一頁返回任務(wù)3 工具欄 (6)為工具欄按鈕加載圖像。 在工具欄中添加好工具按鈕后,就可以給按鈕加載圖像了。因為工具按鈕沒有Picture屬性,所以只能借助圖像列表控件來給工具欄按鈕加載圖像。 操作步驟如下。 雙擊工具箱中的圖像列表控件,圖像列表將被自動加入到窗體中。 在ImageList控件對象中加載圖像.將鼠標(biāo)移到圖像列表控件對象上,右擊,彈出一個快捷菜單,再選擇該菜單中的“屬性”命令,調(diào)出圖像列表控件的“屬性頁”對話框。打開該對話框中的“圖像”選項,此時的“屬性頁”對
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【2021屆備考】2021屆全國名校數(shù)學(xué)試題分類解析匯編(12月第三期):L單元-算法初步與復(fù)數(shù)
- 【名師一號】2020-2021學(xué)年高中英語選修六-雙基限時練14
- 【名師一號】2020-2021學(xué)年高中英語北師大版必修4-雙基限時練9
- 教師學(xué)習(xí)師德師風(fēng)工作總結(jié)4篇
- 【名師伴你行】2021屆高考化學(xué)二輪復(fù)習(xí)專題突破高考真題1-11-非金屬及其化合物
- 《灰色預(yù)測法》課件
- 2021高考英語單項選擇定時訓(xùn)練題(13)及答案
- 二年級數(shù)學(xué)計算題專項練習(xí)1000題匯編集錦
- 四年級數(shù)學(xué)(四則混合運算)計算題專項練習(xí)與答案匯編
- 【師說】2022高考語文大一輪全程復(fù)習(xí)構(gòu)想:課時訓(xùn)練22-第七章-語言文字運用
- 高低壓供配電設(shè)備檢查和檢修保養(yǎng)合同3篇
- 投資可行性分析財務(wù)數(shù)據(jù)全套表格
- 2023-2024學(xué)年福建省廈門市八年級(上)期末物理試卷
- 易查云全球智能貿(mào)易信息查詢平臺商業(yè)計劃書
- 招標(biāo)文件的保密措施
- 2024小米在線測評題
- 霧化吸入療法合理用藥專家共識(2024版)解讀
- GA/T 804-2024機動車號牌專用固封裝置
- 國有資本投資、運營公司改革初探 20240927 -遠東資信
- 公務(wù)車輛定點洗車協(xié)議書2024年
- 學(xué)??照{(diào)維修合同模板
評論
0/150
提交評論