版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第8章應用程序界面設計
8.1菜單8.2工具欄8.3狀態(tài)欄8.4多重窗體和多文檔界面習題8.1菜單前面所講的眾多應用程序都是由一個窗體和幾個控件組成的,屬于簡單的應用程序,此處我們將通過增加菜單來增強VB應用程序的功能?,F(xiàn)代應用軟件既要具備先進合理的內(nèi)核,也要具備良好的用戶界面,因此,屏幕菜單技術在各類應用軟件的編程中得到了廣泛使用。菜單的基本作用有兩個:一是將應用程序的所有功能分類顯示于菜單的選項中,以便用戶選擇;二是管理應用系統(tǒng),控制各種功能模塊的運行。一個高質量的菜單程序,應該使用戶界面美觀、操作方便。在實際應用中,菜單分為下拉式和彈出式兩種。案例1帶下拉式菜單的文本編輯器
1.學習目標設計一個帶有下拉式菜單系統(tǒng)的簡易文本編輯器,布局如圖8.1所示。窗體中包含一個文本框。窗體的菜單系統(tǒng)包括“文件(F)”、“編輯(E)”及“格式(O)”三個主菜單。其中,“文件(F)”包括“打開”、“保存”及“關閉”三個菜單項;“編輯(E)”包括“剪切”、“復制”、“粘貼”及“全選”四個菜單項;“格式(O)”包括一個“字體”菜單項和一個“顏色”的級聯(lián)菜單項。按Alt+F鍵可下拉出“文件”主菜單下的子菜單,按Alt+E鍵可下拉出“編輯”主菜單下的子菜單,按Alt+O鍵可下拉出“格式”主菜單下的子菜單。單擊“文件”下的“關閉”菜單項或按Ctrl+Q鍵可退出程序的運行;單擊“格式”下的“字體”菜單項,文本框中的字體變成隸書;單擊“格式”下的“顏色”菜單項的級聯(lián)菜單項“紅色”,文本框中的字變成紅色;單擊“格式”下的“顏色”菜單項的級聯(lián)菜單項“藍色”,文本框中的字變成藍色。圖8.1簡易編輯器的窗體布局
2.相關知識
1)菜單的結構下拉式菜單系統(tǒng)的結構如圖8.2所示。在下拉式菜單中,一般有一個菜單欄,它是所有主菜單的集合。當用戶選擇了相應的主菜單后,就會下拉出一個子菜單。子菜單由許多菜單項構成,如果某個選項后帶有“…”,則表示選中它將會啟動一個對話框;如果選項后帶有一個三角符號,則表示它是一個“級聯(lián)菜單”,即它下面還有一級下拉菜單。如果把菜單欄也算為一層,則級聯(lián)菜單最多可達6層。在一般應用上很少有人這樣設計,因為6層對用戶而言顯得太復雜了。圖8.2下拉式菜單系統(tǒng)的基本結構
2)菜單編輯器
VB提供了設計菜單的工具——菜單編輯器。使用菜單編輯器,可以輕松、快速地創(chuàng)建、編輯、修改主菜單、子菜單和菜單項,并且可以設定菜單是否包括快捷鍵、快速鍵和復選框,從而建立一個應用程序的菜單系統(tǒng)。在設計菜單時,打開“菜單編輯器”的方法有兩種:一種是選擇“工具”→“菜單編輯器”項,就會在屏幕上彈出一個“菜單編輯器”窗口,如圖8.3所示;另一種是在窗體上點擊右鍵,在彈出的菜單中選“菜單編輯器”項。圖8.3菜單編輯器需要說明的是,雖然菜單系統(tǒng)是一個整體,但實際上每一個菜單選項就是一個控件。也就是說,設計菜單同以往設計控件類似,使用菜單編輯器就是在設計階段對菜單的屬性進行設置。除此之外,在程序運行時,也可以通過代碼改變屬性值。VisualBasic6.0的菜單只有一個單擊事件——Click。菜單編輯器上部各項是用來對菜單項進行屬性設置的,其含義如下:①“標題(P)”(Caption):設置菜單欄、菜單項或子菜單項的文字內(nèi)容。運行程序后,該項可通過設置Caption屬性值加以改變。如果想要設定快速鍵,可利用連字符(&)來設置,即在設置菜單欄、菜單項或子菜單項的文字內(nèi)容后加上連字符(&)及一個英文字母。運行后就可以利用Alt鍵和該英文字母快速地選中此菜單項。如在標題欄僅輸入破折號“-”,則可以新增分隔線,將菜單項加以分類。②“名稱(M)”(Name):菜單控件的名稱,這個名字將在設計程序時使用,是提供給計算機識別菜單控件用的,此項必須設置。③“索引(X)”:當多個菜單項或子菜單項設定為同一名稱時,可以用索引值(0,1,2…)來區(qū)別每一個項目。需要注意的是,索引值一定要遞增排序,即依照所完成的菜單項由左至右,從上到下以遞增的方式來設定索引值。④“快捷鍵(S)”:為菜單項設置快捷鍵,可從“快捷鍵(S)”的下拉列表框中選擇系統(tǒng)提供的、可用的快捷鍵組合。⑤“復選(C)”、“有效(E)”和“可見(V)”:這些選項控制菜單項的狀態(tài)?!皬瓦x”用以控制菜單項是否有選中標志;“有效”表示是否讓使用者選擇該項;“可見”則設置是否顯示該菜單項。菜單編輯器中部有7個按鈕,用來對輸入的菜單項進行簡單的編輯。這7個按鈕的功能如下:①“←”和“→”:每單擊一次向右箭頭“→”就在選定的菜單項前添加4個點,表示該菜單項為前一菜單項的子菜單,即將此項的等級下降一級。如圖8.4所示,“顏色”前有4個點,表示它為“編輯”主菜單的子菜單,而“紅色”、“藍色”前有8個點,表示它們是“顏色”的子菜單,即級聯(lián)菜單。單擊向左箭頭“←”則為相反操作,即將此項的等級提升一級。圖8.4菜單編輯器設置示例②“↑”和“↓”:單擊“↑”按鈕將所選取的菜單項上移,單擊“↓”按鈕將所選取的菜單項下移。③“下一個”:在所選取的菜單項下方新增空白項或選取菜單項。④“插入”:在光標所在位置的上方插入一個新的菜單項。⑤“刪除”:刪除光標所在處的菜單項。菜單編輯器下部是菜單項的顯示區(qū),輸入的菜單項將在此處顯示出來。
3.程序實現(xiàn)設計菜單系統(tǒng)應首先通過菜單編輯器設置各菜單項,然后為菜單項添加相應的事件過程。其具體步驟如下。
1)界面設計與屬性設置
(1)新建窗體,將其Caption屬性設置為“簡易編輯器”。
(2)打開“菜單編輯器”,建立“文件(F)”主菜單:在“標題(P)”項鍵入“文件(&F)”(“&”符號表示對“文件”主菜單設置了一個快速訪問鍵,用戶同時按下Alt鍵和F字母鍵,就能打開文件的“文件”主菜單),在“名稱(M)”項鍵入“mnuFile”。
(3)建立“打開”菜單項:單擊“下一個”及“→”按鈕,在“標題(P)”項鍵入“打開”,在“名稱(M)”項鍵入“mnuFileOpen”,在“快捷鍵(S)”項中選擇“Ctrl+O”,如圖8.5所示。圖8.5建立“打開”菜單項
(4)建立“保存”、“關閉”菜單項的方法同(3)。
(5)建立分隔線:將光標移到“關閉”菜單項,單擊“插入”按鈕,可以看到在“關閉”命令上添加了一行,并自動加入了一個內(nèi)縮符號。在“標題(P)”項中輸入一個減號“-”,在“名稱(M)”項鍵入“sep2”,如圖8.6所示。圖8.6建立分隔線注意:分隔線本身不是菜單項,它僅僅起分隔菜單項的作用,因此不能帶子菜單,不能設置“復選”等屬性,也不能設置快捷鍵。但必須設置“名稱(M)”屬性,否則在運行時會出錯。到目前為止,第一個“文件”主菜單和它的第一級子菜單已經(jīng)全部建立,按照同樣的方法可以建立“編輯”主菜單及其“剪切”、“復制”、“粘貼”和“全選”子菜單,“格式”主菜單及其“字體”和“顏色”子菜單,以及“顏色”的子菜單項“紅色”和“藍色”。具體菜單項屬性設置如表8.1所示。設置完成后的菜單編輯器如圖8.6所示。
(6)設計完菜單后,單擊“確定”按鈕,將菜單編輯器關閉。如果用戶要修改一個已構造好的菜單,可再次進入菜單編輯器窗口進行修改。表8.1菜單項屬性設置
2)編寫代碼構造好菜單后,還要為各個菜單項編寫代碼,才能實現(xiàn)通過選擇菜單項來完成某項操作的功能。“文件”主菜單中的“打開”、“保存”菜單項,“編輯”主菜單中的“剪切”、“復制”、“粘貼”和“全選”等菜單項的事件過程將在后面的章節(jié)分別給出,這里我們僅對其余菜單項的事件過程進行編寫。在“代碼”窗口中輸入如下代碼:①編寫“文件”主菜單中的“關閉”菜單項的事件過程。
PrivateSubmnuFileClose_Click()
End
EndSub②編寫“格式”主菜單中“字體”菜單項的事件過程。
PrivateSubmnuFormatFont_Click()
Text1.FontName="隸書"
EndSub③編寫“顏色”子菜單“紅色”、“藍色”級聯(lián)菜單項的事件過程。
PrivateSubmnuFormatColorRed_Click()'紅色
Text1.ForeColor=vbRed
EndSub
PrivateSubmnuFormatColorBlue_Click()'藍色
Text1.ForeColor=vbBlue
EndSub
3)運行程序運行程序,結果如圖8.1所示。案例2菜單項的控制
1.學習目標在案例1中設計的簡易編輯器的基礎上,實現(xiàn)“編輯”主菜單中“剪切”、“復制”、“粘貼”及“全選”菜單項的功能。按Alt+E鍵可下拉出“編輯”主菜單下的子菜單,按Ctrl+X鍵可執(zhí)行“剪切”操作,按Ctrl+C鍵可執(zhí)行“復制”操作?!凹羟小薄ⅰ皬椭啤?、“粘貼”菜單項的初始狀態(tài)均為無效狀態(tài),當在文本框中選中某段文本時,“剪切”、“復制”菜單項狀態(tài)變?yōu)橛行顟B(tài);剪貼板中有數(shù)據(jù)后,“粘貼”菜單項變成有效狀態(tài),如圖8.7所示。圖8.7簡易編輯器的外觀
2.相關知識
1)剪貼板的應用在文本編輯器中常用到“剪切”或“復制”操作,“剪切”或“復制”是將所選文本存到剪貼板上,便于以后用“粘貼”操作將剪貼板上的內(nèi)容“貼”到光標的指定位置,這幾項操作都是借助剪貼板完成的。剪貼板(Clipboard)是用來暫時保存文本和圖形的一種特殊的控件,它是VisualBasic中預先定義好了的控件組,剪貼板對象不具備任何屬性及事件,但有一些方法可以用來發(fā)送與接收數(shù)據(jù)。其中最有用的兩種方法是SetText和GetText。SetText方法是將選中的文本數(shù)據(jù)復制到剪貼板上,而GetText方法則是將剪貼板上的文本數(shù)據(jù)發(fā)送到光標所在的位置。
(1)在文本編輯器中進行“剪切”操作時,首先判斷Text1是否有文本被選中,只有選中了文本才能進行剪切操作。判斷是否有文本被選中時使用了文本框的SelLength屬性,該屬性返回被選中的文本的字符數(shù)量,它大于零則表示有文本被選中。代碼如下:
IfText1.SelLength>0Then
Clipboard.SetTextText1.SelText
Text1.SelText=""
mnuEditPaste.Enabled=True
EndIf在第二行代碼中利用了文本框的SelText屬性,該屬性表示返回被選中的文本。將Text1中的反白的文本用Clipboard.SetText方法復制到剪貼板上,并利用Text1.SelText=""將Text1.SelText(反白區(qū))中的文本設為空白。剪貼板中有數(shù)據(jù)后,“粘貼”菜單項變成有效狀態(tài)。
(2)在文本編輯器中進行“復制”操作與“剪切”相似,只不過被選中的文本復制到剪貼板上后不被刪除。其代碼如下:
IfText1.SelLength>0Then
Clipboard.SetTextText1.SelText
mnuEditPaste.Enabled=True
EndIf
(3)在文本編輯器中進行“粘貼”操作是把剪貼板上的數(shù)據(jù)傳送到光標所在處,故在進行“粘貼”之前,首先應該確認剪貼板上是否有數(shù)據(jù)。通常用Len(Clipboard.GetText)來測試剪貼板上字符的長度,如果長度值大于零則表示剪貼板上有字符。只有剪貼板上有字符才能將剪貼板上的數(shù)據(jù)發(fā)送給Text1的SelText屬性(注意:不是發(fā)送給Text屬性,若將數(shù)據(jù)賦值給Text屬性,則文本框中原來所有的文本將被剪貼板中的數(shù)據(jù)替代,這與要求不一致)。其代碼如下:
IfLen(Clipboard.GetText)>0Then
Text1.SelText=Clipboard.GetText
EndIf此外,在使用剪貼板之前最好用Clear方法將剪貼板清空,因為剪貼板是Windows的系統(tǒng)資源,它可能已存放其他程序復制的信息,所以在使用之前應先清空剪貼板中的內(nèi)容。
2)動態(tài)改變菜單項的狀態(tài)設計良好的菜單欄可以更精確地引導用戶操作,因此設計者需掌握如何通過設置選項的狀態(tài)來控制菜單。例如,在簡易編輯器中,若未選中某文本,則“剪切”、“復制”、“粘貼”菜單項的狀態(tài)應該為無效狀態(tài),而當選中某段文本時,“剪切”、“復制”菜單項狀態(tài)則變?yōu)橛行顟B(tài)。這些選項的初始狀態(tài)可在“菜單編輯器”中設置,運行時狀態(tài)的改變可以由程序動態(tài)控制。菜單項的“是否有效”可以通過該選項的Enabled屬性來設置。例如,設置“剪切”、“復制”、“粘貼”菜單項的初始狀態(tài)為“無效”,可用“菜單編輯器”完成設置,也可在裝載窗體時執(zhí)行代碼,其代碼如下:
mnuEditCut.Enabled=False
mnuEditCopy.Enabled=False
mnuEditPaste.Enabled=False當在文本框中選中某文本即Text1.SelLength>0時,“剪切”、“復制”命令狀態(tài)應變?yōu)橛行顟B(tài);未選中時,菜單項則為無效的灰色。其狀態(tài)的動態(tài)改變可以由以下代碼完成:
IfText1.SelLength>0Then
mnuEditCut.Enabled=True
mnuEditCopy.Enabled=True
Else
mnuEditCut.Enabled=False
mnuEditCopy.Enabled=False
EndIf有些菜單項狀態(tài)類似一種開關狀態(tài),可在“選中”和“未選中”之間切換。菜單項的“是否選中”可通過Checked屬性來設置。Checked屬性為True,表示“選中”,菜單項前有“√”符號;為False,表示“未選中”,菜單項前無“√”符號。例如,點擊“全選”菜單項后,菜單項前出現(xiàn)“√”符號,所有文本為全部選中的反白狀態(tài),再次點擊后,取消以上現(xiàn)象。相應的代碼如下:
IfmnuEditSel.Checked=FalseThen
mnuEditSel.Checked=True
Text1.SelStart=0
Text1.SelLength=Len(Text1.Text)
Else
mnuEditSel.Checked=False
Text1.SelLength=0
EndIf由于mnuEditSel.Checked是開關變量,只有兩種狀態(tài),因此在程序中應首先判斷mnuEditSel.Checked的值。當它為False時,應設為True,為“√”狀態(tài),同時選中所有文本;當mnuEditSel.Checked的值為True時,則設為False。
3.程序實現(xiàn)
1)界面設計與屬性設置界面設計與屬性設置見案例8.1。
2)編寫代碼在“代碼”窗口中輸入如下代碼:
PrivateSubForm_Load()
Clipboard.Clear
mnuEditCut.Enabled=False
mnuEditCopy.Enabled=False
mnuEditPaste.Enabled=False
EndSub
PrivateSubmnuEdit_Click() '編輯
IfText1.SelLength>0Then
mnuEditCut.Enabled=True
mnuEditCopy.Enabled=True
Else
mnuEditCut.Enabled=False
mnuEditCopy.Enabled=False
EndIf
EndSub
PrivateSubmnuEditCut_Click() '剪切
IfText1.SelLength>0Then
Clipboard.SetTextText1.SelText
Text1.SelText=""
mnuEditPaste.Enabled=True
EndIf
EndSub
PrivateSubmnuEditCopy_Click() '復制
IfText1.SelLength>0Then
Clipboard.SetTextText1.SelText
mnuEditPaste.Enabled=True
EndIf
EndSub
PrivateSubmnuEditPaste_Click() '粘貼
IfLen(Clipboard.GetText)>0Then
Text1.SelText=Clipboard.GetText
EndIf
EndSub
PrivateSubmnuEditSel_Click() '全選
IfmnuEditSel.Checked=FalseThen
mnuEditSel.Checked=True
Text1.SelStart=0
Text1.SelLength=Len(Text1.Text)
Else
mnuEditSel.Checked=False
Text1.SelLength=0
EndIf
EndSub
3)運行程序運行程序,結果如圖8.7所示。案例3彈出式菜單的設計
1.學習目標設計一個帶有彈出式菜單的簡易編輯器,布局如圖8.8所示。窗體中包含一個文本框,窗體的菜單系統(tǒng)包括含“文件(F)”及“格式(O)”2個主菜單的下拉式菜單和一個含編輯功能的彈出式菜單。其中彈出式菜單包括“剪切”、“復制”、“粘貼”及“全選”4項。通過本案例的學習,掌握用菜單編輯器設計彈出式菜單的基本方法。圖8.8簡易編輯器的彈出式菜單
2.相關知識彈出式菜單(PopupMenu)是獨立于菜單欄而顯示在窗體上的浮動菜單,當單擊鼠標右鍵時可以將它調(diào)出來,常被用來快速地在屏幕上顯示若干菜單命令,這些命令一般是當前鼠標所指向的對象的快捷操作命令。它也是通過“菜單編輯器”來設計的。由于用戶看不見這個菜單,因此必須用PopupMenu方法才能將它顯示出來,并指明此菜單的位置與特點,其語法格式為:
[對象.]PopupMenu<主菜單>[,Flags[,X[,Y]]]其中,“主菜單”是指主菜單的名字(Name);“X”、“Y”用來指定顯示的位置,如果省略不用,則直接沿用當時的鼠標坐標;“Flags”用來指明菜單的狀態(tài),共有四種設置值,如表8.2所示。表8.2Flags的值及其含義
3.程序實現(xiàn)
1)界面設計與屬性設置設計步驟如下:
(1)在“菜單編輯器”中建立一個主菜單,名稱可以任意設定(如“編輯”),因為主菜單的名稱在菜單彈出的時候不顯示。
(2)將“編輯”主菜單的“可見”(Visible)屬性設為False。運行程序時,不再顯示這一項,如圖8.9所示。單擊“下一個”命令按鈕,再單擊“→”按鈕,依次輸入彈出式菜單中的各菜單項,設置方法同下拉式菜單。
圖8.9彈出式菜單的屬性設置
2)編寫代碼打開“代碼”窗口,在窗體的MouseDown事件過程中編寫如下程序:
PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2ThenPopupMenumnuEdit
EndSub其中,MouseDown事件表示當在窗體上按下鼠標時,執(zhí)行程序;Button參數(shù)用來返回用戶按下鼠標的哪一個鍵(1表示左鍵,2表示右鍵,3表示中鍵);If語句判斷按下的是否為右鍵,若是右鍵,則調(diào)出彈出式菜單。
3)運行程序運行程序,結果如圖8.8所示。8.2工具欄在Windows的各種應用程序中,除菜單命令外,還可以通過工具欄上的按鈕發(fā)出操作命令。工具欄一般放置在菜單欄的下面,它包含了一組按鈕,按鈕上既能夠顯示文字,也能夠顯示圖像,或者同時顯示文字和圖像。這些按鈕與應用程序的某些菜單項相對應,為用戶訪問應用程序的最常用功能和命令提供了圖形接口和快速訪問途徑。案例4工具欄的設計
1.學習目標設計一個包含“打開”、“粘貼”、“顏色”圖形按鈕的工具欄,其中“顏色”按鈕帶下拉式選項“紅色”和“藍色”。單擊“打開”和“粘貼”按鈕分別彈出一個對話框,單擊“顏色”按鈕的下拉式選項“紅色”或“藍色”,文本框中的文本變成相應的顏色,如圖8.10所示。圖8.10工具欄設計效果
2.相關知識
VB提供了Toolbar(工具欄)控件,可以快速地設計工具欄。當需要在工具欄按鈕上顯示圖像時,還要使用ImageList(圖像列表)控件中已經(jīng)加載的圖像。
Toolbar控件和ImageList控件都是VisualBasic6.0的外部控件(ActiveX控件)。ActiveX控件是VB工具箱的擴充,這些控件能被添加到工具箱中,也能從工具箱中刪除,ActiveX控件可以由系統(tǒng)提供,也可以由第三方廠商提供,還可以由用戶自己開發(fā)。在應用程序使用它們之前必須首先將其加載到工程中。加載方法是:單擊“工程”→“部件”→“控件”,再選中“MicrosoftWindowsCommonControl6.0”選項,單擊“確定”按鈕關閉“部件”對話框,包括Toolbar(工具欄)、ImageList(圖像列表)、StatuBar(狀態(tài)欄)、ProgressBar(進度條)、TreeView(樹狀視圖)、ListView(列表視圖)和Slider(滑塊)等常用的MicrosoftWindows控件被添加到工具箱中,如圖8.11所示。圖8.11加載控件
1)?Toolbar控件
Toolbar控件中的每個按鈕都可以顯示自己的圖形并設置標題,可以設置當鼠標指針移到按鈕上時顯示提示字符,還可以在程序運行時動態(tài)增加、刪除按鈕。Toolbar控件中的按鈕可以按功能分組或加入分隔符。此外,Toolbar還是一個控件容器。
(1)?Toolbar控件的屬性。在設計時,通過設置Toolbar控件的一系列屬性,可以定義工具欄中顯示的按鈕、按鈕上顯示的文字、圖像、按鈕提示等,其屬性窗口如圖8.12所示。圖8.12Toolbar控件的“屬性頁”下面介紹幾個主要屬性。①“通用”選項卡。●鼠標指針:指定當鼠標指針移動到工具欄上后的形狀。讀者既可以選擇該屬性對話框中提供的預選鼠標指針,也可以定義自己的鼠標指針?!駡D像列表:指定工具欄按鈕要顯示的圖像在哪個ImageList控件中保存著。要在這個下拉列表框中指定ImageList控件,必須在設置該屬性之前,先把ImageList控件放置到窗體上。●外觀:指定工具欄的外觀。0—平面工具欄;1—三維工具欄?!駱邮剑褐付ò粹o的外觀。0—平面按鈕;1—三維按鈕?!耧@示提示:指定當鼠標指針移動到工具欄按鈕上時是否顯示該按鈕的提示。選中該復選框時,顯示提示;否則不顯示提示。●有效:指定工具欄是否能夠使用,選中時,工具欄有效;否則無效。②“按鈕”選項卡。●索引:指定按鈕的引用編號,從1開始計數(shù)。●標題:指定顯示在按鈕上的標題?!耜P鍵字(Key):指定引用按鈕的字符串。●樣式:指定按鈕的外觀和狀態(tài)。該欄所提供的按鈕樣式共有6種,如表8.3所示?!窆ぞ咛崾疚谋荆褐付ó斒髽酥羔樢苿拥桨粹o上并稍微停留后,顯示在鼠標指針附近的提示信息?!窨梢姡哼x中該復選框時,顯示當前按鈕;否則不顯示?!裼行В哼x中該復選框時,當前按鈕有效,即用戶能夠操作當前按鈕;否則無效?!癜粹o菜單:該組合框中的選項用于定義按鈕的下拉菜單。表8.3按鈕樣式的值及其功能
(2)?Toolbar控件的事件。一般編寫工具按鈕的事件過程是在Toolbar控件的ButtonClick事件中,當用戶單擊Toolbar控件內(nèi)的Button對象時發(fā)生該事件。代碼通常利用Case語句及Button.Key來判定用戶按下了哪一個按鈕,以便能執(zhí)行相應的程序代碼。
ButtonClick事件過程的語法為:
PrivateSubobject_ButtonClick(ByValbuttonAsButton)其中,object為Toolbar控件的名稱,button參數(shù)為用戶所單擊的按鈕,Button對象有個名稱為Key的屬性(對應于“屬性頁”對話框中的“關鍵字”文本框),應用程序通過Key屬性能夠知道用戶單擊了工具欄中的哪一個按鈕。若該工具按鈕為帶下拉式菜單的按鈕,則在ButtonMenuClick事件中編寫代碼,利用ButtonMenu.Key來判定用戶使用的是哪一個菜單項,其判斷值為Key欄的設置值。
2)?ImageList控件
ImageList控件能夠包含一組圖像,這些圖像可以被其他Windows公共控件使用,例如,在Toolbar控件的按鈕上顯示的所有圖像都可以用ImageList控件來存儲。將ImageList控件作為一個單一的圖像存儲庫能夠加快應用程序的開發(fā)速度。其他控件可以使用ImageList對象中的位圖(.bmp)、光標(.cur)、圖標(.ico)、JPEG(?.jpg)或GIF(.gif)文件。其屬性窗口如圖8.13所示。圖8.13ImageList控件的“屬性頁”開發(fā)人員可以在設計應用程序或運行應用程序時向ImageList控件中添加或刪除圖像。ImageList對象具有通用的集合對象屬性Key和Index,還具有通用的集合方法Add、Remove和Clear。
3.程序實現(xiàn)
1)界面設計與屬性設置工具欄的設計步驟如下:
(1)將Toolbar控件調(diào)入工具箱中。在窗體Form1中,增加一個文本框Text1作為文本輸入?yún)^(qū)。
(2)將工具箱中的Toolbar控件調(diào)入窗體,該控件會自動出現(xiàn)在窗體的上方,若窗體上已有菜單欄,則會固定在其下方。然后,可以利用Toolbar控件添加兩種不同類型的按鈕,即文字按鈕和圖形按鈕。
(3)設計文字按鈕。①用鼠標右鍵單擊窗體上的Toolbar1控件,在彈出的快捷菜單中選擇“屬性”。在“屬性頁”中選擇“按鈕”標簽,然后選擇“插入按鈕”,如圖8.14所示。圖8.14“插入按鈕”設置②在“標題”欄輸入想要顯示的文字標題,在“關鍵字”欄輸入關鍵字,在“工具提示文本”欄輸入提示文字,最后在“樣式”欄選擇合適的按鈕樣式(見圖8.14),建立“打開”Default樣式的工具按鈕。③重復步驟②,建立“粘貼”Check樣式的工具按鈕,如圖8.15所示。圖8.15“粘貼”按鈕設置④重復步驟②,建立“顏色”Dropdown樣式的工具按鈕。然后在“按鈕菜單”區(qū)選擇“插入按鈕菜單”按鈕,建立“顏色”按鈕的下拉式選項,如圖8.16所示。圖8.16“顏色”按鈕設置⑤運行程序,在窗體上可見已建好的工具欄界面,如圖8.17所示。
(4)設計圖形按鈕。制作圖形按鈕前須先準備好圖片,然后利用ImageList控件將按鈕圖片加入,再將Toolbar控件的“ImageList”項指定為ImageList控件,這樣就可以為每一個按鈕設置一個圖片了。圖8.17設計好文字按鈕的工具欄界面給圖8.17中的“打開”、“粘貼”和“顏色”按鈕加上圖片的具體步驟如下:①從工具箱中將ImageList控件調(diào)入窗體,如圖8.18所示。圖8.18調(diào)入ImageList控件②在ImageList1控件上單擊鼠標右鍵,調(diào)出快捷菜單,選擇“屬性”,然后選擇“屬性頁”的“圖像”標簽,再選擇“插入圖片”按鈕。調(diào)出“選擇圖片”對話框,從中將所有合適的圖片文件選中,再選擇“打開”,就可以將圖片調(diào)入ImageList1控件的圖像欄中,如圖8.19所示。圖8.19調(diào)入圖片③在已做好的Toolbar控件上單擊鼠標右鍵,調(diào)出快捷菜單,選擇“屬性”,然后選擇“屬性頁”的“通用”選項卡,在“圖像列表”欄選中ImageList1控件,如圖8.20所示。圖8.20選擇ImageList1控件④選擇Toolbar控件“屬性頁”上的“按鈕”選項卡,在“圖像”欄選擇ImageList1控件上的圖片作為按鈕上的圖片,如圖8.21所示。⑤單擊“確定”按鈕,完成設置。圖8.21選擇圖片
2)編寫代碼上面的步驟只能完成工具欄外觀的設計,如要點擊工具按鈕時執(zhí)行一定的功能,則必須為工具按鈕編寫相應的事件過程。打開“代碼”窗口,在Toolbar1_ButtonClick事件過程中輸入以下代碼:
PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)
SelectCaseButton.Key
Case"open"
MsgBox"選擇“打開”按鈕!"
Case"paste"
MsgBox"選擇“粘貼”按鈕!"
EndSelect
EndSub因為“顏色”按鈕為下拉式工具按鈕,其選項的代碼需由ButtonMenuClick事件激活,故在ButtonMenuClick事件過程中,對“顏色”工具按鈕編寫如下代碼:
PrivateSubToolbar1_ButtonMenuClick(ByValButtonMenuAsMSComctlLib.ButtonMenu)
SelectCaseButtonMenu.Key
Case"red"
Text1.ForeColor=vbRed
Case"blue"
Text1.ForeColor=vbBlue
EndSelect
EndSub
3)運行程序運行程序,結果如圖8.10所示。8.3狀態(tài)欄狀態(tài)欄通常位于窗體底部,它為用戶提供了當前的操作狀態(tài)、鍵盤狀態(tài)、數(shù)據(jù)庫表中數(shù)據(jù)使用情況等當前系統(tǒng)狀態(tài)以及環(huán)境狀態(tài)信息等。用戶在編寫VisualBasic6.0的應用程序時可以添加狀態(tài)欄。案例5狀態(tài)欄的設計
1.學習目標定義一個狀態(tài)欄,在這個狀態(tài)欄上顯示字符串“狀態(tài)欄演示”,大寫字母鎖定鍵、數(shù)字鎖定鍵和插入鍵的狀態(tài),當前日期和當前時間。程序運行后,單擊狀態(tài)欄StatusBar1的“信息面板”,該面板中顯示“狀態(tài)欄演示”;單擊狀態(tài)欄StatusBar1的其他面板,消息框中顯示該面板的索引號。狀態(tài)欄同時顯示大寫字母鎖定鍵、數(shù)字鎖定鍵和插入鍵的狀態(tài),當前日期和當前時間。按一下大寫字母鍵(CapsLock鍵),大寫字母鍵面板中的文字CAPS由正常變?yōu)榛疑蛴苫疑優(yōu)檎o@示。操作數(shù)字鎖定鍵、插入鍵時有類似反應,如圖8.22所示。圖8.22狀態(tài)欄設計效果
2.相關知識
StatusBar控件提供了狀態(tài)欄功能,該控件由Panels集合構成,最多可包含16個Panel對象,每個面板(又稱為窗格)都是一個Panel對象。每個面板中都可以顯示一個圖像或文本。
1)?StatusBar控件的屬性右擊StatusBar控件,從彈出的菜單中選擇“屬性”菜單項,打開“屬性頁”對話框,如圖8.23所示。使用該對話框,既可以添加Panel對象,也可以設置每個對象的各種屬性。圖8.23StatusBar控件的“屬性頁”對話框下面介紹幾個主要屬性。①“通用”選項卡?!駱邮剑河糜谥付顟B(tài)欄的樣式為簡單樣式還是正常樣式。當使用簡單樣式時,StatusBar控件只顯示一個面板,此時,使用該控件的SimpleText屬性設置要在面板中顯示的字符串的文本;當使用正常樣式時,StatusBar控件可以顯示多個面板,每個面板中顯示不同的信息?!裼行В褐该饔脩羰欠衲軌虿僮鳡顟B(tài)欄控件?!耧@示提示:指定當用戶將鼠標指針移動到狀態(tài)欄控件的面板中并稍微停留后是否顯示該面板的提示。②“窗格”選項卡。●索引:指定面板的索引號(從1開始編號),應用程序能夠使用索引號訪問各個面板?!裎谋荆褐付ó斍岸x面板中顯示的文本。該選項對應于Panel對象的Text屬性?!窆ぞ咛崾疚谋荆褐付ó斢脩魧⑹髽酥羔樢苿拥皆撁姘逯胁⑸晕⑼A艉箫@示的該面板的提示。該選項對應于Panel對象的ToolTipText屬性。●關鍵字:指定面板名稱。應用程序可以通過該名稱訪問相應的面板。該選項對應于Panel對象的Key屬性?!褡钚挾龋褐付姘宓淖钚挾?。用戶調(diào)整面板寬度時,如果把面板寬度調(diào)整得小于該值,則系統(tǒng)自動將面板寬度恢復為此值。該選項對應于Panel對象的MinWidth屬性?!癞斍皩挾龋好姘宓漠斍皩挾?。該選項對應于Panel對象的Width屬性?!駥R:指定面板中文字的對齊方式。該選項對應于Panel對象的Alignment屬性。●樣式:指定面板的樣式。該選項對應于Panel對象的Style屬性,與StatusBar控件的Style屬性在意義和作用范圍上是不同的。其取值和功能如表8.4所示。表8.4面板樣式的值及其功能●斜面:設置面板的三維顯示效果。●自動調(diào)整大?。褐付ㄊ欠褡詣诱{(diào)整面板的寬度。該選項對應于Panel對象的AutoSize屬性?!駡D片:用于指定面板中要顯示的圖像。單擊該按鈕后,顯示一個“選定圖片”對話框,從中指定所需的圖像文件。若要從面板中去掉圖像,可單擊“無圖片”按鈕?!裼行В褐付姘迨欠衲軌蚴褂??!窨梢姡褐付姘迨欠耧@示出來。
2)?StatusBar控件的常用事件用戶單擊StatusBar控件上的某個面板時,觸發(fā)PanelClick事件。PanelClick事件過程的格式為:
PrivateSubobject_PanelClick(ByValpanelAsPanel)其中,object是StatusBar控件的名稱;panel指明用戶單擊了哪個面板,該參數(shù)由系統(tǒng)自動提供。應該注意的是,當StatusBar控件的Style屬性被指定為簡單樣式時,隱藏了各個面板,此時,無論用戶單擊StatusBar控件的哪個區(qū)域,都不產(chǎn)生PanelClick事件。一般來說,SelectCase語句用于判斷用戶單擊了哪個面板。
3.程序實現(xiàn)
1)界面設計與屬性設置操作步驟如下:
(1)創(chuàng)建一個標準EXE工程,將StatusBar控件添加到工具箱中。
(2)在窗體上放置一個名稱為StatusBar1的StatusBar控件,以定義該狀態(tài)欄上要顯示的窗格以及各窗格中顯示的信息。
(3)打開StatusBar1控件的“屬性頁”對話框,單擊“窗格”選項卡,在“工具提示文本”中填入“信息面板”,“關鍵字”設為“information”,“樣式”設為0,“最小寬度”設為1200。
(4)單擊“插入窗格”按鈕插入一個新的面板,然后單擊“索引”選項后面的右箭頭按鈕,顯示新面板的各種選項;在“工具提示文本”中填入“大寫字母鎖定鍵”,“樣式”設為1,“最小寬度”設為500。
(5)重復步驟(4),依次定義數(shù)字鎖定鍵、插入鍵的狀態(tài)、當前日期和當前時間面板,其“樣式”分別設為2、3、6、5,“最小寬度”分別設為500、500、1000、700。最后關閉“屬性頁”對話框。
2)編寫代碼打開“代碼”窗口,在StatusBar1_PanelClick事件過程中輸入以下代碼:
PrivateSubStatusBar1_PanelClick(ByValPanelAsMSComctlLib.Panel)
SelectCasePanel.Key
Case"information"
Panel.Text="狀態(tài)欄演示"
CaseElse
MsgBoxPanel.Index'顯示面板索引號
EndSelect
EndSub
3)運行程序運行程序,結果如圖8.22所示。8.4多重窗體和多文檔界面案例6系列產(chǎn)品報價單
1.學習目標設計一個電腦公司的報價單,從此報價單上可以查到某品牌微機的配置及價格。完成后的封面窗體如圖8.24(a)所示,建立的配置窗體1、配置窗體2、配置窗體3分別如圖8.24(b)、(c)、(d)所示。圖8.24系列產(chǎn)品報價單該程序的流程如下:
(1)顯示封面窗體。
(2)單擊“朝陽系列”命令按鈕,則顯示配置窗體1,同時封面窗體消失;單擊“旭日系列”命令按鈕,則顯示配置窗體2,同時封面窗體消失;單擊“月光系列”命令按鈕,則顯示配置窗體3,同時封面窗體消失。單擊“退出”按鈕,則程序結束。
(3)顯示某系列微機的配置窗體后,如果單擊“返回”按鈕,則配置窗體消失,顯示封面窗體。通過本案例的學習,掌握多重窗體的設計方法。
2.相關知識多重窗體實際上是單一窗體的集合,也就是說,多重窗體由多個獨立的、單一的窗體構成,其中每個單一窗體都有自己的界面和程序代碼,可完成不同的操作。利用多重窗體可以靈活地設計較復雜的多功能對話窗口,從而代替系統(tǒng)提供的標準對話框。同設計單一窗體一樣,多重窗體的程序設計也分為界面設計、編寫代碼和運行程序三個步驟。具體地說,首先通過“工程”中的“添加窗體”命令建立多個窗體,然后針對每個窗體進行界面設計、代碼編寫等,其方法與設計單一窗體相同。在多重窗體的設計中,常用Show方法及Hide方法對各窗體進行管理?!?Show方法用來自動裝入和顯示窗體,格式為:
[窗體名稱.]Show●?Hide方法使窗體隱藏,即不在屏幕上顯示,但仍在內(nèi)存中,格式為:
[窗體名稱.]Hide
3.程序實現(xiàn)
1)界面設計與屬性設置操作步驟如下:
(1)新建窗體,再通過菜單欄的“工程”主菜單項,3次選擇“添加窗體”菜單項建立3個窗體,其名稱和標題屬性如表8.5所示。表8.5窗體名稱及標題屬性
(2)分別建立各個窗體上的控件并設置其屬性。首先,建立封面窗體。它是整個程序的門面,應具有較強的藝術性和觀賞性,可采用一些精美的圖片作背景,本封面窗體由4個命令按鈕和1個標簽組成,完成后的封面窗體如圖8.24(a)所示。其次,在“工程資源管理器”窗口中選擇“SunForm”窗體,如圖8.25所示,修改其屬性建立配置窗體1。配置窗體1有一個返回按鈕,配置窗體上的文字可采用Print方法輸入。設計好后的配置窗體1如圖8.24(b)所示。類似地,可建立配置窗體2和配置窗體3,分別如圖8.24(c)和(d)所示。圖8.25“工程資源管理器”窗口
2)編寫代碼如前所述,程序代碼是針對每個窗體編寫的,其編寫方法與編寫單一窗體的相同。只要在項目窗口中選擇所需要的窗體文件,然后用鼠標左鍵雙擊它,就可進入相應窗體的代碼窗口。①“封面窗體”有4個命令按鈕,其事件過程如下:
PrivateSubCommand1_Click() '單擊“朝陽系列”命令按鈕
SunForm.Show
FormCover.Hide
EndSub
PrivateSubCommand2_Click() '單擊“旭日系列”命令按鈕
BrightForm.Show
FormCover.Hide
EndSub
PrivateSubCommand3_Click() '單擊“月光系列”命令按鈕
MoonForm.Show
FormCover.Hide
EndSub
PrivateSubCommand4_Click() '單擊“退出”按鈕
End
EndSub②單擊“朝陽系列”配置窗體上“返回”命令按鈕的事件過程如下:
PrivateSubcmdSun_Click()
SunForm.Hide
FormCover.Show
EndSub③其余的配置窗體上“返回”命令按鈕的事件過程與②類似,請讀者自行設計。④運行程序。對于多重窗體來說,程序先從哪一個窗體開始執(zhí)行應加以規(guī)定。對于多重窗體,VisualBasic規(guī)定必須通過如圖8.26所示的工程屬性窗口,在“啟動對象”中指定其中一個窗體作為啟動窗體;如未指定,就把設計時的第一個窗體作為啟動窗體。因此,圖8.26中“啟動對象”選擇為Formcover,作為顯示文本的第一個窗體。運行本程序,應首先顯示“報價單”——封面窗體,然后按用戶的選擇顯示其他的配置窗體。圖8.26設置啟動窗體
3)運行程序運行程序,結果如圖8.24所示。案例7多文檔的簡易文本編輯器
1.學習目標創(chuàng)建一個具有多文檔的簡易文本編輯器,如圖8.27所示。圖8.27簡易文本編輯器對話框
2.相關知識多文檔界面MDI(Multi-DocumentInterface)是指在一個窗體中含有多個窗體,并可在各個窗體中顯示不同的文檔。在VB中要創(chuàng)建以文檔為中心的應用程序,至少需要兩個窗體:一個MDI窗體和一個子窗體。一般來說,應用程序可以包含許多相似或者樣式不同的MDI子窗體。也就是說,多重文檔是由“父窗口”和“子窗口”構成的。在程序運行時,子窗體顯示在MDI父窗體工作空間之內(nèi)(其區(qū)域在父窗體邊框以內(nèi)及標題與菜單欄之下)。當子窗體最小化時,它的圖標顯示在MDI窗體的工作空間之內(nèi),而不是在任務欄中。如MicrosoftWord和MicrosoftExcel就是多文檔界面應用程序,在Word啟動之后,可以通過“新建”操作打開多個文檔窗口,每個文檔窗口都可以編輯、處理一個文檔文件,所有文檔窗口都被限制在Word父窗口中,且彼此獨立。創(chuàng)建MDI應用程序的一般步驟為:
(1)創(chuàng)建MDI窗體;
(2)創(chuàng)建MDI子窗體;
(3)編寫代碼,處理用戶操作以及MDI窗體與MDI子窗體之間的關系。
MDI窗體相當于具有一定限制條件的普通窗體。MDI窗體上只能放置那些具備Align屬性(如PictureBox控件、Toolbar控件等)的控件或那些沒有可視界面(如Timer控件)的控件,其他控件都不能直接放置到MDI窗體上。
1)?MDI的常見屬性、方法和事件
MDI所使用的屬性、方法和事件與單文檔界面基本沒有區(qū)別,但增加了一些專門用于MDI的屬性、方法和事件,如MDIChild屬性、Arrange方法、QuerryUnload事件。
(1)?MDIChild屬性。如果一個窗體的MDIChild屬性被設為True,則該窗體作為父窗體的子窗體,該屬性只能通過屬性窗口設置,不能在程序代碼中設置。在設置該屬性前,必須先定義MDI父窗體。
(2)?Arrange方法。Arrange方法是指用不同的方式排列MDI中的子窗體(或其圖標)。語法格式如下:
<MDIForm名>.Arrange<參數(shù)>其中,“MDIForm名”是指需要重新排列子窗體(或其圖標)的MDI窗體的名字;“參數(shù)”是一個整數(shù),表示所使用的排列方式,它有4個設置值,如表8.6所示。表8.6Arrange的參數(shù)設置值
(3)?QuerryUnload事件。QuerryUnload事件在關閉窗體或結束應用程序之前發(fā)生,可以給用戶一個機會以保存窗體中的數(shù)據(jù)。當關閉MDI窗體時,首先在MDI窗體上發(fā)生QuerryUnload事件,然后在所有子窗體上發(fā)生。如果所有窗體上都沒有QuerryUnload事件,則在子窗體上發(fā)生Unload事件,然后在MDI窗體上發(fā)生Unload事件。
QuerryUnload事件在窗體關閉前被調(diào)用,因此常在QuerryUnload事件中編寫保護程序。
QuerryUnload事件的語法格式為:
PrivateSubForm_Quer
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026北京機械科學研究總院博士研究生招生47人模擬筆試試題及答案解析
- 地下室負二層底板補漏堵漏施工方案范例
- 深度解析(2026)《GBT 26110-2010鋅鋁涂層 技術條件》(2026年)深度解析
- 深度解析(2026)《GBT 26044-2010信號傳輸用單晶圓銅線及其線坯》(2026年)深度解析
- 深度解析(2026)《GBT 25930-2010紅外線氣體分析器 試驗方法》
- 深度解析(2026)《GBT 25896.3-2010設備用圖形符號 起重機 第3部分:塔式起重機符號》
- 2025重慶云陽縣平安鎮(zhèn)中心衛(wèi)生院招聘1人備考筆試題庫及答案解析
- 深度解析(2026)《GBT 25830-2010高溫合金盤(環(huán))件通 用技術條件》(2026年)深度解析
- 2025年銅陵市義安區(qū)檢察院公開招聘編外聘用人員4名考試筆試備考題庫及答案解析
- 功利主義與權利論視角下人臉識別門禁的倫理邊界
- 2025大理州強制隔離戒毒所招聘輔警(5人)筆試考試備考題庫及答案解析
- 2025年安全培訓計劃表
- 2026年榆林職業(yè)技術學院單招職業(yè)技能測試題庫參考答案詳解
- 2025年沈陽華晨專用車有限公司公開招聘筆試歷年參考題庫附帶答案詳解
- 2026(蘇教版)數(shù)學五上期末復習大全(知識梳理+易錯題+壓軸題+模擬卷)
- 2024廣東廣州市海珠區(qū)琶洲街道招聘雇員(協(xié)管員)5人 備考題庫帶答案解析
- 垃圾中轉站機械設備日常維護操作指南
- 蓄電池安全管理課件
- 建筑業(yè)項目經(jīng)理目標達成度考核表
- 2025廣東肇慶四會市建筑安裝工程有限公司招聘工作人員考試參考題庫帶答案解析
- 第五單元國樂飄香(一)《二泉映月》課件人音版(簡譜)初中音樂八年級上冊
評論
0/150
提交評論