版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章窗體界面設(shè)計(jì)7.1菜單設(shè)計(jì)
7.2創(chuàng)建工具欄 7.3Windows界面樣式及創(chuàng)建SDI程序界面7.4創(chuàng)建MDI程序界面 7.5鍵盤和鼠標(biāo)
7.6綜合程序舉例
7.1菜單設(shè)計(jì)
在Windows環(huán)境下,很多軟件的界面都有菜單欄,都要通過(guò)菜單來(lái)實(shí)現(xiàn)各種各樣的操作。而對(duì)于VisualBasic應(yīng)用程序來(lái)說(shuō),使用菜單設(shè)計(jì)能使用戶界面更加的簡(jiǎn)潔和美觀。本章將介紹最常用的菜單程序設(shè)計(jì)技術(shù)與使用方法。返回7.1菜單設(shè)計(jì)7.1.1菜單組成
7.1.2菜單編輯器
7.1.3下拉式菜單的設(shè)計(jì)
7.1.4彈出式菜單
7.1.5菜單控件數(shù)組 返回7.1.1菜單組成
在Windows環(huán)境下,常用的菜單分為下拉式菜單和彈出式菜單兩種。下拉式菜單是一種典型的窗口式菜單,它一般有一個(gè)主菜單,而主菜單又包括若干個(gè)菜單標(biāo)題。下拉式菜單的菜單項(xiàng)則顯示在各菜單標(biāo)題的下面,當(dāng)用戶單擊某一菜單標(biāo)題時(shí),將打開(kāi)一個(gè)含有若干個(gè)菜單項(xiàng)的列表。彈出式菜單又稱為“上下文菜單”或“快捷菜單”,是一種可以顯示在窗體任何位置并獨(dú)立于菜單欄的浮動(dòng)式菜單。一般通過(guò)在某一區(qū)域單擊鼠標(biāo)右鍵的方式激活特定的彈出式菜單。
返回7.1.2菜單編輯器
在VisualBasic中,菜單被看做是一種特殊控件,每一個(gè)菜單標(biāo)題、菜單項(xiàng)以及菜單項(xiàng)分隔條都是一個(gè)控件,所以設(shè)計(jì)菜單實(shí)質(zhì)上也就是對(duì)各個(gè)菜單控件的設(shè)計(jì)。在VisualBasic中,我們使用菜單編輯器來(lái)設(shè)計(jì)菜單。打開(kāi)菜單編輯器,可以通過(guò)以下幾種方式:(1)執(zhí)行“工具”菜單中的“菜單編輯器”選項(xiàng)。(2)單擊工具欄中的“菜單編輯器”按鈕。(3)在要建立菜單的窗體空白處右擊鼠標(biāo),將彈出一個(gè)菜單,在快捷菜單中選擇“菜單編輯器”選項(xiàng)。(4)使用快捷鍵“Ctrl+E”。
返回7.1.2菜單編輯器
彈出的菜單編輯器窗口主要分為以下三部分:
(1)菜單控件區(qū):用來(lái)對(duì)現(xiàn)在菜單進(jìn)行設(shè)置與編輯。
(2)編輯區(qū):用來(lái)設(shè)置和調(diào)整各個(gè)菜單項(xiàng),添加或刪除某個(gè)菜單項(xiàng)。
(3)菜單項(xiàng)顯示區(qū):用來(lái)查看各個(gè)菜單項(xiàng)的設(shè)置和菜單項(xiàng)之間的層次關(guān)系。7.1.2菜單編輯器1.菜單控件區(qū)菜單控件區(qū)用來(lái)設(shè)置菜單控件的屬性。部分屬性功能如下:(1)標(biāo)題(Caption):用來(lái)輸入所建立的菜單的名字及菜單中每個(gè)菜單項(xiàng)的標(biāo)題。(2)名稱(Name):用來(lái)輸入菜單名及各菜單項(xiàng)的控制名,它不出現(xiàn)在菜單中。(3)索引(Index):用來(lái)設(shè)置菜單控件數(shù)組中各元素的下標(biāo),當(dāng)控件名稱相同時(shí)各控件同一個(gè)控件組的成員并以索引值相區(qū)分。(4)快捷鍵(ShortcutKeys):用來(lái)設(shè)置菜單項(xiàng)快捷鍵,使用戶可以在不打開(kāi)菜單的情況下通過(guò)鍵盤操作就可以實(shí)現(xiàn)同樣的功能。7.1.2菜單編輯器(5)復(fù)選(Checked):用來(lái)設(shè)置菜單項(xiàng)的Checked屬性,當(dāng)某個(gè)菜單選中時(shí)(框內(nèi)出現(xiàn)“√”),表明菜單項(xiàng)當(dāng)前處于活動(dòng)狀態(tài)。(6)有效(Enabled):用來(lái)設(shè)置菜單項(xiàng)的Enabled屬性,即菜單項(xiàng)是否可用。(7)可見(jiàn)(Visible):設(shè)置菜單項(xiàng)的Visible屬性,決定菜單項(xiàng)是否可見(jiàn)。如果清除“可見(jiàn)”復(fù)選框,則Visible屬性值為False,該菜單項(xiàng)不可見(jiàn)。一個(gè)不可見(jiàn)的菜單項(xiàng)是不能設(shè)置些屬性的,只有菜單可見(jiàn)時(shí)才可用;一些菜單項(xiàng)不可見(jiàn)時(shí),還會(huì)導(dǎo)致其無(wú)效;如果菜單標(biāo)題不可見(jiàn),則其下的所有菜單項(xiàng)均無(wú)效。7.1.2菜單編輯器2.菜單項(xiàng)顯示區(qū)該區(qū)位于菜單設(shè)計(jì)窗口的下部,是一個(gè)設(shè)置菜單項(xiàng)名稱,級(jí)別和快捷鍵的區(qū)域,菜單項(xiàng)顯示區(qū)列有當(dāng)前窗體的所有菜單控件,并通過(guò)它們所在的位置顯示出對(duì)應(yīng)的層次關(guān)系??赏ㄟ^(guò)鼠標(biāo)單擊選中某個(gè)菜單控件,此時(shí)上端的菜單控件區(qū)顯示的即為該菜單控件的對(duì)應(yīng)屬性。(1)位于列表框中與左側(cè)邊框平齊的菜單控件將作為菜單標(biāo)題顯示在菜單條中。7.1.2菜單編輯器(2)如果在“標(biāo)題”菜單項(xiàng)內(nèi)只輸入一個(gè)減號(hào)(-),則會(huì)產(chǎn)生一個(gè)分隔線;在輸入菜單項(xiàng)時(shí),如果在字母前加上“&”字符,則顯示菜單時(shí)在該字母下加上一條下劃線,可以通過(guò)Alt+帶下劃線的字母打開(kāi)菜單或執(zhí)行相應(yīng)的命令。(3)內(nèi)縮符號(hào)由4個(gè)點(diǎn)(“….”)組成,它用來(lái)區(qū)分菜單項(xiàng)之間的關(guān)系,表明菜單項(xiàng)所在的層次,一個(gè)內(nèi)縮符號(hào)(4個(gè)點(diǎn))表示一層,兩個(gè)內(nèi)縮符號(hào)則表示兩層,在VisualBasic中,最多可以有5個(gè)內(nèi)縮符號(hào),即可以含有五級(jí)子菜單。7.1.2菜單編輯器3.編輯區(qū)編輯區(qū)用來(lái)對(duì)當(dāng)前選中的菜單控件進(jìn)行編輯。(1)←、→:用來(lái)產(chǎn)生或取消內(nèi)縮符號(hào),單擊一次右箭頭可以產(chǎn)生一個(gè)內(nèi)縮符號(hào),單擊一次左箭頭則刪除一個(gè)內(nèi)縮符號(hào)。(2)↑、↓:用來(lái)選擇菜單控件在菜單中的位置。(3)下一個(gè):開(kāi)始一個(gè)新的菜單項(xiàng)(與Enter鍵作用相同)。(4)插入:在當(dāng)前位置產(chǎn)生一個(gè)新的菜單項(xiàng)。(5)刪除:刪除當(dāng)前選中的(即條形光標(biāo)所指位置的)菜單項(xiàng)。7.1.3下拉式菜單的設(shè)計(jì)
下面通過(guò)一個(gè)簡(jiǎn)單的例子,說(shuō)明如何利用菜單編輯器創(chuàng)建下拉式菜單?!纠?-1】設(shè)計(jì)一個(gè)具有顏色選擇功能和退出程序功能的菜單。通過(guò)單擊菜單命令標(biāo)簽顯示不同的顏色。返回7.1.4彈出式菜單
彈出式菜單是顯示在窗體上的浮動(dòng)菜單,它可以以更靈活的方式為用戶提供更方便的操作,根據(jù)鼠標(biāo)右鍵的單擊位置自動(dòng)地調(diào)整菜單項(xiàng)的顯示位置及顯示內(nèi)容,所以彈出式菜單又稱為快捷菜單。幾乎在每一個(gè)對(duì)象上單擊鼠標(biāo)右鍵都可以顯示一個(gè)彈出式菜單,彈出式菜單的設(shè)計(jì)也是使用菜單編輯器,如果彈出式菜單不需要顯示在菜單條中,則需要將頂級(jí)菜單項(xiàng)設(shè)置成不可見(jiàn)。返回7.1.4彈出式菜單
創(chuàng)建彈出式菜單的步驟如下:(1)先使用菜單編輯器創(chuàng)建一個(gè)下拉菜單。(2)然后設(shè)置頂層菜單項(xiàng)為隱藏,即不選中菜單編輯器里的“可見(jiàn)”選項(xiàng)或在屬性窗口中設(shè)定Visible屬性為False。(3)編寫MouseUp(釋放鼠標(biāo))事件來(lái)彈出菜單。其中必須使用PopupMenu方法,PopupMenu方法是專門用來(lái)顯示彈出式菜單的,其語(yǔ)法格式為:[窗體名.]PopupMenu菜單名[,Flags[,x[,y[,BoldCommand]]]]7.1.4彈出式菜單[窗體名.]表示要顯示彈出式菜單的窗體名稱,系統(tǒng)默認(rèn)為當(dāng)前窗體。參數(shù)“菜單名”是在菜單編輯器中定義的彈出式菜單名稱。參數(shù)Flags為一些常量數(shù)值的設(shè)置,包括位置常數(shù)與行為常數(shù)。位置常數(shù)和行為常數(shù)分別見(jiàn)表7-1和表7-2所示。一組用于指定菜單位置,另一組用于定義特殊的菜單行為。(4)參數(shù)x與y定義彈出式菜單相對(duì)于指定窗體的顯示位置。若省略,則顯示在鼠標(biāo)指針的當(dāng)前位置。7.1.4彈出式菜單
(5)參數(shù)BoldCommand用于在彈出式菜單中顯示一個(gè)加粗的菜單項(xiàng)名稱。若省略,則菜單中沒(méi)有以粗體顯示的菜單控件。注意:顯示彈出式菜單后,用戶必須從菜單中進(jìn)行選擇或者取消菜單,否則調(diào)用Popupmenu方法后的代碼不會(huì)執(zhí)行?!纠?-2】利用彈出式菜單變換字體的顏色。7.1.5菜單控件數(shù)組
菜單控件數(shù)組就是在同一菜單上共享相同名稱和事件過(guò)程的菜單項(xiàng)目的集合。菜單控件數(shù)組使用于:(1)在運(yùn)行時(shí)要?jiǎng)?chuàng)建一個(gè)新菜單項(xiàng),它必須是控件數(shù)組中的成員。如MDINotepad示例,它就用一個(gè)菜單控件數(shù)組來(lái)存儲(chǔ)新近打開(kāi)的文件清單。(2)簡(jiǎn)化代碼,因?yàn)橥ㄓ么a塊可以被所有菜單項(xiàng)使用。每個(gè)菜單控件數(shù)組元素都由唯一的索引值來(lái)標(biāo)識(shí),該值在菜單編輯器上“Index屬性框”中指定。返回7.1.5菜單控件數(shù)組
當(dāng)一個(gè)控件數(shù)組成員識(shí)別一個(gè)事件時(shí),VisualBasic將其Index屬性值作為一個(gè)附加的參數(shù)傳遞給事件過(guò)程。事件過(guò)程必須包含有核對(duì)Index屬性值的代碼,因而可以判斷出正在使用的是哪一個(gè)控件。注意:菜單控件數(shù)組的各元素在菜單控件列表框中必須是連續(xù)的,而且必須在同一縮進(jìn)級(jí)上。創(chuàng)建菜單控件數(shù)組時(shí),要把在菜單中出現(xiàn)的分隔符條也包括進(jìn)去?!纠?-3】用菜單控件數(shù)組實(shí)現(xiàn)【例7-2】。7.2創(chuàng)建工具欄
工具欄即是放“工具”的地方,而這些“工具”就是為某些菜單項(xiàng)相對(duì)應(yīng)的命令按鈕提供的一些快捷操作方式,工具欄以其直觀,快捷的方式為用戶提供更快更有效率的操作途徑。在VisualBasic環(huán)境中用戶可以通過(guò)手工方式或使用工具欄(Toolbar)制作出自己所需要的工具欄。要在窗口中加入工具欄,需要用到ActiveX控件----ToolBar控件和ImageList控件。由于ActiveX控件通常不在標(biāo)準(zhǔn)控件中,所以需要用戶手動(dòng)將它們添加到標(biāo)準(zhǔn)控件工具箱中。
添加方法如下:(1)在“工程”菜單中執(zhí)行“部件”命令后彈出“部件”對(duì)話框。返回7.2創(chuàng)建工具欄(2)在“部件”對(duì)話框的“控件”選項(xiàng)卡中,選中“MicrosoftWindowsCommonControls6.0”后單擊“確定”按鈕。(3)此時(shí)將在標(biāo)準(zhǔn)控件工具欄中添加9個(gè)控件,其中包括ToolBar(工具欄控件)和ImageList(圖像列表控件)。說(shuō)明:在工具箱中添加其他非標(biāo)準(zhǔn)控件的方法與上述相同。如果要將新加入的控件從工具箱中刪除,只要在上面第二步中將“MicrosoftWindowsCommonControls6.0”前面的復(fù)選標(biāo)記取消即可。7.2創(chuàng)建工具欄7.2.1ImageList控件
7.2.2ToolBar控件返回7.2.1ImageList控件
ImageList控件的作用就是向其他控件(如ToolBar,ListView和Treeview)提供圖像。使用方法:(1)在工具箱中添加ImageList控件后,在窗體內(nèi)添加ImageList控件。(2)用鼠標(biāo)右擊ImageList控件,在彈出式菜單中選擇“屬性”,打開(kāi)“屬性頁(yè)”對(duì)話框選擇圖像選項(xiàng)卡,單擊“插入圖片”按鈕,在對(duì)話框中選擇圖像文件(.bmp或.jpg添加到ImageList控件中去。返回7.2.1ImageList控件(3)在關(guān)鍵字欄中輸入關(guān)鍵字,關(guān)鍵字必須為該圖片唯一標(biāo)識(shí)符。索引為圖像的唯一序號(hào),一般由系統(tǒng)自動(dòng)設(shè)置。單擊“輸入圖片”按鈕,加入圖片,要?jiǎng)h除不要的圖片,單擊“刪除圖片”按鈕。7.2.2ToolBar控件
使用ToolBar控件設(shè)計(jì)一個(gè)窗體中的工具欄??梢杂袃煞N方法:一種是雙擊ToolBar控件,它將自動(dòng)地加入窗體中并出現(xiàn)在窗體的頂端;另一種方法是單擊ToolBar按鈕然后在窗體中繪制;
ToolBar控件有三個(gè)屬性頁(yè),分別為通用選項(xiàng),按鈕選項(xiàng)和圖片選項(xiàng)。它們的作用分別是:返回7.2.2ToolBar控件(1)通用選項(xiàng)卡用于設(shè)置工具欄的樣式、外觀、鼠標(biāo)指針、按鈕寬度、圖像列表等。(2)按鈕選項(xiàng)卡用于按鈕插入、刪除、索引、標(biāo)題、樣式等設(shè)置。(3)圖片選項(xiàng)卡用于鼠標(biāo)進(jìn)入工具欄變成圖形化的鼠標(biāo)所需要的圖片。7.2.2ToolBar控件1.設(shè)置ToolBar控件的通用屬性點(diǎn)擊“通用”選項(xiàng)卡,將“圖像列表”屬性設(shè)置與ToolBar相關(guān)聯(lián)的ImageList控件,屬性設(shè)置后,將由關(guān)聯(lián)的ImageList控件向ToolBar控件提供按鈕圖像;“外觀”決定了創(chuàng)建的工具欄是平面還是立體的效果;“樣式”控制工具欄上按鈕的外觀。其他屬性可以根據(jù)需要進(jìn)行設(shè)置。7.2.2ToolBar控件2.設(shè)置ToolBar控件中的按鈕點(diǎn)擊“按鈕”選項(xiàng)卡,該選項(xiàng)卡的主要的選項(xiàng)功能說(shuō)明如下:(1)“插入按鈕”和“刪除按鈕”:可以向按鈕集合中加入或刪除元素,通過(guò)按鈕集合可以訪問(wèn)工具欄中的各個(gè)按鈕;(2)“索引”和“關(guān)鍵字”:定義了按鈕集合中每個(gè)按鈕都有唯一的標(biāo)志,索引和關(guān)鍵字就是這個(gè)標(biāo)志。索引為整型,是工具欄中按鈕的唯一序號(hào)。關(guān)鍵字為字符串型,用于唯一標(biāo)識(shí)一個(gè)按鈕;(3)“標(biāo)題”:顯示在按鈕上的文字;(4)“描述”:設(shè)置按鈕的說(shuō)明信息;7.2.2ToolBar控件(5)“值”:說(shuō)明按鈕的初始狀態(tài)。0---tbrUnpresed表示彈起狀態(tài),1---trbPressed表示按下?tīng)顟B(tài);(6)“寬度”:當(dāng)Style屬性設(shè)置為4時(shí),可設(shè)置按鈕寬度;(7)“圖像”:用于設(shè)置按鈕顯示的圖像;(8)“工具提示文本”:在程序運(yùn)行時(shí),當(dāng)鼠標(biāo)指向該按鈕時(shí)顯示的說(shuō)明文字;7.2.2ToolBar控件(9)“樣式”:決定了按鈕的特點(diǎn),因?yàn)樵赥oolBar工具欄中按鈕的類型包括六種,而它們都是通過(guò)“樣式”來(lái)進(jìn)行選擇。
0-tbrDefault:普通按鈕,默認(rèn)的按鈕類型,而且該按鈕代表的功能不依賴于其它功能。
1-tbrCheck:開(kāi)關(guān)按鈕,具有按下和放開(kāi)兩種狀態(tài),并且是一種復(fù)選按鈕,即同一組按鈕可選中多項(xiàng),可以用來(lái)設(shè)置字體的加粗、傾斜、加下劃線等。
2-tbrButtonGroup:?jiǎn)芜x類型的按鈕。同一組按鈕中,功能相互排斥時(shí),即只能選中一項(xiàng),可以使用此樣式。該類型按鈕可以用來(lái)設(shè)置文本或段落的靠左、靠右、居中等對(duì)齊方式。7.2.2ToolBar控件3-tbrSeparator:分隔符類型的按鈕,用來(lái)創(chuàng)建寬度為8個(gè)像素的按鈕,此外沒(méi)有任何功能。此類型按鈕可以用來(lái)將其它按鈕分隔開(kāi),以分隔條形式顯示。
4-tbrPlaceholder:占位符類型按鈕作,該類型按鈕是在ToolBar控件中占據(jù)一定位置,以便顯示其它控件(如ComboBox控件,ListBox控件等)。
5-tbrDropdown:下拉菜單類型的按鈕,用來(lái)在工具欄上創(chuàng)建一個(gè)下拉菜單。7.2.2ToolBar控件3.在ToolBar控件中加入代碼
ToolBar控件最常用的是單擊工具欄事件ButtonClick事件,該事件的格式如下:PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)其中的Button對(duì)應(yīng)程序運(yùn)行時(shí)用戶用鼠標(biāo)單擊的工具欄上的按鈕,該按鈕關(guān)鍵字Key為識(shí)別條件編寫多路分支程序,執(zhí)行按鈕對(duì)應(yīng)的事件處理程序。【例7-4】創(chuàng)建如圖所示的窗體,并編寫程序代碼實(shí)現(xiàn)工具欄上各工具按鈕的功能。7.3Windows界面樣式及創(chuàng)建SDI程序界面7.3.1Windows界面樣式
7.3.2創(chuàng)建SDI程序界面
返回7.3.1Windows界面樣式如果使用過(guò)基于Windows的應(yīng)用程序,也許已經(jīng)注意到不是所有用戶界面看上去或操作起來(lái)都一樣,其基本樣式主要有兩種:?jiǎn)挝臋n界面(SDI,即SingleDocumentInterface)和多文檔界面(MDI,即MultipleDocumentInterface)。另外,資源管理器樣式的界面變得越來(lái)越流行。返回7.3.1Windows界面樣式1.單文檔界面(SDI)
SDI(單文檔界面),從字面理解可知,一次只能打開(kāi)一個(gè)文檔。
SDI界面的一個(gè)典型示例就是Windows中的WordPad(寫字板)程序。在WordPad中,只能打開(kāi)一個(gè)文檔,想要打開(kāi)另一個(gè)文檔時(shí),必須先關(guān)閉已打開(kāi)的文檔。2.多文檔界面(MDI)和SDI單文檔界面不同,在MDI多文檔界面是由一個(gè)父窗口及多個(gè)子窗口組成的。7.3.1Windows界面樣式3.資源管理器界面除了SDI和MDI外,Windows中還存在另一種界面樣式,這就是資源管理器樣式的界面。它包含兩個(gè)窗格,通常左半部分是一個(gè)樹(shù)型或?qū)哟涡偷囊晥D,右半部分是一個(gè)文件(夾)顯示區(qū)。這種樣式的界面可用于定位或?yàn)g覽大量的文檔、圖片或文件。7.3.2創(chuàng)建SDI程序界面
對(duì)只需要用戶進(jìn)行少量交互的小型應(yīng)用程序來(lái)說(shuō),可以采用單文檔、基于單個(gè)窗口的界面。1.新建一個(gè)VisualBasic工程新建一個(gè)VisualBasic工程,把它作為SDI應(yīng)用程序的主界面。如果需要在程序啟動(dòng)時(shí)顯示一個(gè)啟動(dòng)畫面,那么需要另外添加一個(gè)窗體作為啟動(dòng)畫面。返回7.3.2創(chuàng)建SDI程序界面2.添加菜單菜單是用戶和程序交互的主要工具,是應(yīng)用程序中可以讓用戶發(fā)布的命令的集合,所以在一般的應(yīng)用程序中都有菜單。在菜單中可以定義一些相應(yīng)的命令來(lái)完成需要的操作??梢岳们懊嬷v過(guò)的方法為程序添加菜單。7.3.2創(chuàng)建SDI程序界面3.添加工具欄工具欄也是用戶和程序交互的主要工具,由于它具有圖形化的外觀,比菜單更直觀明了、操作簡(jiǎn)單,因此工具欄的使用更為普遍,在沒(méi)有菜單欄的地方也可以放置工具欄??衫们懊嬷v過(guò)的方法為程序添加常用工具欄。如果程序中既有菜單,又有工具欄,在設(shè)計(jì)時(shí)應(yīng)注意它們之間的對(duì)應(yīng)關(guān)系。7.3.2創(chuàng)建SDI程序界面4.添加工作區(qū)域工作區(qū)域放置的是應(yīng)用程序操作的對(duì)象。例如,可以放置一個(gè)文本框,來(lái)輸入處理的文本。5.添加狀態(tài)欄在比較專業(yè)的程序中,一般都需要有狀態(tài)欄,用來(lái)顯示一些相關(guān)的程序狀態(tài)信息。7.3.2創(chuàng)建SDI程序界面狀態(tài)欄可使用狀態(tài)條控件(StatusBar)來(lái)實(shí)現(xiàn),該控件和ToolBar控件、ImageList控件一樣,也是“MicrosoftWindowsCommonControls6.0”中的一個(gè)控件。6.編寫代碼界面設(shè)置完成以后,還要編寫相關(guān)命令的代碼,從而來(lái)實(shí)現(xiàn)應(yīng)用程序的相關(guān)功能。通過(guò)以上這些操作,便建立了一個(gè)簡(jiǎn)單的SDI程序界面。7.4創(chuàng)建MDI程序界面7.4.1MDI窗體與MDI子窗體
7.4.2創(chuàng)建MDI應(yīng)用程序
返回7.4.1MDI窗體與MDI子窗體MDI是指在一個(gè)父窗口下面可以同時(shí)打開(kāi)多個(gè)子窗口。子窗口歸屬于父窗口,如果父窗口關(guān)閉,則所有子窗口全部關(guān)閉。例如在Word中,可以建立和顯示多個(gè)不同的文檔窗口,每個(gè)窗口都被限制在Word的父窗口范圍內(nèi)。可見(jiàn),一個(gè)MDI應(yīng)用程序可以包含三類窗體,即普通窗體(標(biāo)準(zhǔn)窗體)、MDI父窗體和MDI子窗體。返回7.4.1MDI窗體與MDI子窗體
一個(gè)應(yīng)用程序當(dāng)然可以包含許多相似或者不同樣式的MDI子窗體。在設(shè)計(jì)階段,子窗體是獨(dú)立的,并沒(méi)有限制在MDI父窗體的范圍內(nèi),因此可以在子窗體上增加控件、設(shè)置屬性、編寫代碼。也就是說(shuō),設(shè)計(jì)階段的MDI子窗體和標(biāo)準(zhǔn)窗體沒(méi)有區(qū)別。注意 MDI與多重窗體的概念是不相同的,MDI窗體和子窗體是一種父子關(guān)系;多重窗體程序中的各個(gè)窗體是平行的,沒(méi)有父——子關(guān)系。7.4.2創(chuàng)建MDI應(yīng)用程序
創(chuàng)建MDI應(yīng)用程序,首先要?jiǎng)?chuàng)建MDI父窗體及其子窗體,然后再對(duì)它們進(jìn)行必要的設(shè)置。用下面的例子來(lái)說(shuō)明創(chuàng)建一個(gè)MDI父窗體及其三個(gè)子窗體。1.創(chuàng)建MDI父窗體并設(shè)置其屬性通過(guò)“工程”菜單中的“添加MDI窗體”選項(xiàng)就可以建立一個(gè)MDI窗體(也就是父窗口),屏幕上就會(huì)出現(xiàn)一個(gè)新窗體,該窗體的標(biāo)題是“MDIForm1”,它就是新建的MDI父窗體。將其Caption屬性修改“多文檔程序父窗體”。返回7.4.2創(chuàng)建MDI應(yīng)用程序
一個(gè)應(yīng)用程序只能有一個(gè)MDI窗體,如果工程中已經(jīng)有了一個(gè)MDI窗體,“工程”菜單中的“添加MDI窗體”的命令就不可用。此時(shí)“添加MDI窗體”選項(xiàng)會(huì)變成灰色不可選狀態(tài),設(shè)計(jì)時(shí)可將MDI窗體設(shè)置為啟動(dòng)窗體。2.創(chuàng)建MDI子窗體在普通窗體的屬性窗口中找到MDIChild屬性,并把它的值由False改為True,則該窗體即成為MDI父窗體的一個(gè)子窗體。子窗體上的操作和普通窗體的操作是一樣的。7.4.2創(chuàng)建MDI應(yīng)用程序通常情況下:(1)添加一個(gè)普通新窗體。(2)設(shè)置新窗體的MDIChild屬性為True。(3)重復(fù)上述步驟直至創(chuàng)建完成所有的子窗體。注意:子窗體建立后,并不能立即就在父窗體的區(qū)域范圍內(nèi)顯示出來(lái),必須執(zhí)行適當(dāng)?shù)某绦虼a才能顯示。7.4.2創(chuàng)建MDI應(yīng)用程序如動(dòng)態(tài)創(chuàng)建新窗體也可以使用如下代碼:PrivateSubNew_Click()Staticn‘定義靜態(tài)變量
DimForm2AsNewForm2‘新建窗體
n=n+1
‘設(shè)置新窗體的Caption屬性
Form2.Caption="NewForm"&nForm2.ShowEndSub7.4.2創(chuàng)建MDI應(yīng)用程序3.與MDI窗體有關(guān)的屬性、事件和方法MDI窗體有其特有的屬性、事件和方法。(1)MDIChild屬性,決定窗體是否有子窗體。(2)Arrange方法,可以重排MDIForm對(duì)象中的窗口或圖標(biāo),格式為MDI窗體名.Arrange排列方式排列方式有4種,見(jiàn)表7-3。7.4.2創(chuàng)建MDI應(yīng)用程序4.編寫代碼下面以一個(gè)多文檔程序的實(shí)例來(lái)說(shuō)明編寫程序代碼的過(guò)程。(1)建立一個(gè)多文檔應(yīng)用程序,其中包含一個(gè)MDI窗體,設(shè)置其Caption屬性為“多文檔記事本”,2個(gè)子窗體其Caption屬性設(shè)置分別為Form1、Form2。(2)使用“菜單編輯器”編輯3個(gè)簡(jiǎn)單的菜單選項(xiàng)。7.5鍵盤和鼠標(biāo)VisualBasic應(yīng)用程序能夠響應(yīng)多種鍵盤事件和鼠標(biāo)事件。利用鍵盤事件,可響應(yīng)鍵盤操作,可解釋、處理鍵盤輸入的ASCII字符;通過(guò)鼠標(biāo)事件,可檢測(cè)鼠標(biāo)指針的位置,判斷哪一個(gè)鼠標(biāo)鍵被按下,還能響應(yīng)鼠標(biāo)按鈕與Shift、Ctrl或Alt鍵的各種組合操作。返回7.5鍵盤和鼠標(biāo)7.5.1鍵盤事件
7.5.2鼠標(biāo)事件
7.5.3拖放技術(shù)返回7.5.1鍵盤事件VisualBasic提供三種鍵盤事件:KeyPress、KeyDown和KeyUp。窗體、命令按鈕、文本框、復(fù)選框、單選框、列表框、組合框、滾動(dòng)條和圖片框等對(duì)象都能響應(yīng)這三種事件。程序運(yùn)行過(guò)程中,如果按下鍵盤上一個(gè)會(huì)產(chǎn)生ASCII碼可打印的字符鍵(字母鍵、數(shù)字鍵和符號(hào)鍵)時(shí),就會(huì)觸發(fā)KeyPress事件;如果按下或者釋放鍵盤上的任意鍵,會(huì)觸發(fā)KeyDown事件或者KeyUp事件。返回7.5.1鍵盤事件
鍵盤事件彼此并不相互排斥。當(dāng)按下某一鍵時(shí)觸發(fā)KeyDown和KeyPress事件,而松開(kāi)此鍵后觸發(fā)KeyUp事件。如果用戶按下的是一個(gè)KeyPress不能檢測(cè)的鍵時(shí),則觸發(fā)KeyDown事件,松開(kāi)此鍵后觸發(fā)KeyUp事件。1.KeyPress事件7.5.1鍵盤事件KeyPress事件是指程序運(yùn)行時(shí),鍵盤上具有ASCII碼得按鍵被按過(guò)后,具有焦點(diǎn)的對(duì)象所觸發(fā)的事件,其可以檢測(cè)的鍵包括:Enter、Tab、BackSpace、Esc鍵以及標(biāo)準(zhǔn)鍵盤的字母、數(shù)字和標(biāo)點(diǎn)符號(hào)鍵。KeyPress事件過(guò)程的語(yǔ)法格式為:格式1:PrivateSub<對(duì)象名>_KeyPress(KeyAsciiAsInteger)7.5.1鍵盤事件格式2:PrivateSub<對(duì)象名>_KeyPress(IndexAsInteger,KeyAsciiAsInteger)說(shuō)明:(1)<對(duì)象名>是指觸發(fā)該事件的焦點(diǎn)對(duì)象,具有焦點(diǎn)的對(duì)象才能接收事件。(2)參數(shù)KeyAscii是所按鍵的ASCII碼值。如按下字母A健,則KeyAscii的值為65;而按下字母a鍵,則KeyAscii的值為97。7.5.1鍵盤事件(3)格式2僅當(dāng)觸發(fā)KeyPress事件的對(duì)象是含有控件數(shù)組的對(duì)象時(shí)才使用。格式2比格式1多了一個(gè)參數(shù)Index,并通過(guò)該參數(shù)的取值來(lái)識(shí)別KeyPress事件觸發(fā)的對(duì)象。【例7-5】檢測(cè)用戶是否正在按Enter回車鍵(ASCII碼值為13),并給出提示?!纠?-6】在文本框中輸入的所有英文字母自動(dòng)轉(zhuǎn)換為大寫字母。7.5.1鍵盤事件【例7-7】限定文本框只允許輸入數(shù)字字符,不允許出現(xiàn)其他字符?!纠?-8】在文本框中,按下鍵盤,可將鍵盤按鍵轉(zhuǎn)換成相應(yīng)ASCII碼值。2.KeyDown和KeyUp事件
KeyDown和KeyUp事件報(bào)告鍵盤本身準(zhǔn)確的物理狀態(tài):按下鍵(KeyDown)及松開(kāi)鍵(KeyUp)。7.5.1鍵盤事件KeyDown和KeyUp事件過(guò)程的語(yǔ)法格式同為:格式1:PrivateSub<對(duì)象名>_Event(KeyCodeAsInteger,ShiftAsInteger)格式2:PrivateSub<對(duì)象名>_Event(IndexAsInteger,KeyCodeAsInteger,ShiftAsInteger)7.5.1鍵盤事件說(shuō)明:(1)<對(duì)象名>是接受鍵盤事件的窗體或者控件名稱。Event是鍵盤事件的名字,KeyDown或KeyUp。(2)格式2僅當(dāng)觸發(fā)KeyDown(或KeyUp)事件的對(duì)象是含有控件數(shù)組的對(duì)象時(shí)才使用。(3)參數(shù)KeyCode表示按下的物理鍵,通過(guò)ASCII碼值或鍵代碼常數(shù)來(lái)識(shí)別。7.5.1鍵盤事件(4)參數(shù)Shift用于表示鍵盤事件發(fā)生時(shí)Shift、Ctrl和Alt鍵的狀態(tài)。Shift是一個(gè)位域參數(shù),由若干位構(gòu)成,每個(gè)位的信息都指出某一狀態(tài)是打開(kāi)(用1表示)還是關(guān)閉(用0表示)。其中最右側(cè)三位用來(lái)表示Shift、Ctrl和Alt鍵的狀態(tài):Alt鍵Ctrl鍵Shift鍵第3位第2位第1位7.5.1鍵盤事件VisualBasic也可使用常數(shù)來(lái)表示參數(shù)Shift的值,這些常數(shù)可以和相應(yīng)的十進(jìn)制數(shù)互換使用。如vbShiftMask、vbShiftMask+vbAltMask。表7-4列出了使用二進(jìn)制、十進(jìn)制以及常數(shù)的對(duì)應(yīng)關(guān)系?!纠?-9】判斷是否按下了鍵盤上的Shift鍵+A鍵。3.窗體級(jí)鍵盤處理程序需要注意,雖然窗體和大多數(shù)控件都能夠識(shí)別三種鍵盤事件,但只有獲得焦點(diǎn)的對(duì)象才能夠響應(yīng)鍵盤事件。7.5.1鍵盤事件
在默認(rèn)情況下,窗體的KeyPreview屬性為False,此時(shí)只有窗體中獲得焦點(diǎn)的控件才能響應(yīng)鍵盤事件;如果當(dāng)前活動(dòng)窗體為空窗體,或者活動(dòng)窗體上的控件均無(wú)效時(shí),窗體才能獲得焦點(diǎn)響應(yīng)鍵盤事件。但是,如果將窗體的KeyPreview屬性設(shè)置為True時(shí),窗體會(huì)在控件之前首先截獲鍵盤事件,然后已獲得焦點(diǎn)的控件才能響應(yīng)此鍵盤事件。KeyPreview的語(yǔ)法為:<對(duì)象名>.KeyPreview[=boolean]7.5.1鍵盤事件
其中,Boolean是布爾表達(dá)式,制定如何接收事件:當(dāng)取值為False(Default)時(shí),活動(dòng)控件接收鍵盤事件,而窗體不接收;當(dāng)取值為True時(shí),窗體先接收鍵盤事件,然后是活動(dòng)控件接收事件?!纠?-10】在一個(gè)窗體上包括多個(gè)可獲得焦點(diǎn)的控件,判斷某一時(shí)刻的擊鍵狀態(tài)。7.5.2鼠標(biāo)事件VisualBasic中與鼠標(biāo)相關(guān)的操作有:?jiǎn)螕羰髽?biāo)觸發(fā)Click事件,雙擊鼠標(biāo)觸發(fā)DblClick事件。此外,有時(shí)還需要記錄鼠標(biāo)的位置,判斷鼠標(biāo)的狀態(tài),這就要用到MouseDown、MouseUp和MouseMove事件。當(dāng)用戶按下鼠標(biāo)時(shí)觸發(fā)MouseDown事件;松開(kāi)鼠標(biāo)時(shí)觸發(fā)MouseUp事件;鼠標(biāo)指針移動(dòng)時(shí)觸發(fā)MouseMove事件。返回7.5.2鼠標(biāo)事件MouseDown、MouseUp和MouseMove事件過(guò)程的語(yǔ)法格式同為:PrivateSub<對(duì)象名>_Event(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)說(shuō)明:(1)<對(duì)象名>是可以響應(yīng)鼠標(biāo)事件的窗體或者控件,Event是鼠標(biāo)事件的名字,MouseDown、MouseUp或MouseMove。7.5.2鼠標(biāo)事件(2)參數(shù)Button表示引起該事件的是鼠標(biāo)的哪一個(gè)按鍵。它是一個(gè)位域參數(shù),其中三個(gè)最低位分別用來(lái)表示鼠標(biāo)的左鍵、右鍵和中鍵。每一位都有1和0兩個(gè)值,分別表示鼠標(biāo)鍵的按下和釋放狀態(tài)。三位的二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制即為Button參數(shù)的值。例如只按下左鍵時(shí),Button參數(shù)的值為1;當(dāng)同時(shí)按下左鍵和右鍵時(shí),Button參數(shù)的值為3。中鍵右鍵左鍵第3位第2位第1位7.5.2鼠標(biāo)事件VisualBasic中也使用常數(shù)來(lái)表示參數(shù)Button的值,這些常數(shù)可以和相應(yīng)的十進(jìn)制數(shù)互換使用。如vbLeftButton、vbRightButton和vbMiddleButton。(3)參數(shù)Shift表示當(dāng)鼠標(biāo)鍵被按下或者松開(kāi)時(shí),Shift、Ctrl和Alt鍵的狀態(tài),其含義與前面的鍵盤事件相同。(4)參數(shù)X,Y返回一個(gè)指定鼠標(biāo)指針當(dāng)前位置的數(shù)。在實(shí)際應(yīng)用中,鼠標(biāo)的三個(gè)事件通常搭配使用。7.5.2鼠標(biāo)事件【例7-11】按下鼠標(biāo)左鍵時(shí)打開(kāi)繪圖狀態(tài),并以當(dāng)前位置為起點(diǎn);按住鼠標(biāo)左鍵并拖動(dòng)鼠標(biāo)則繪制紅色線段;釋放鼠標(biāo)左鍵則結(jié)束繪圖;按下鼠標(biāo)右鍵則繪制藍(lán)色圓;按下鼠標(biāo)中鍵則清除所有繪制的圖形。7.5.3拖放技術(shù)VisualBasic支持控件的拖放技術(shù)(DragandDrop)??丶耐戏攀侵高\(yùn)行時(shí)將控件拖到新的位置。拖放分解為拖動(dòng)和放下兩個(gè)操作,拖動(dòng)就是按住鼠標(biāo)鍵并移動(dòng)控件,而放下則是釋放鼠標(biāo)鍵。拖放操作涉及源和目標(biāo)兩個(gè)對(duì)象,源對(duì)象為被拖動(dòng)的對(duì)象,目標(biāo)對(duì)象就是要在其上放置控件的對(duì)象。1.與拖放相關(guān)的屬性、方法和事件
返回7.5.3拖放技術(shù)VisualBasic提供以下拖放屬性、方法和事件來(lái)控制源和目標(biāo)對(duì)象響應(yīng)拖放的方法:(1)DragMode屬性:決定對(duì)象的拖放模式。如果DragMode屬性設(shè)置為1,則啟用自動(dòng)方式,它允許用戶使用鼠標(biāo)拖放源對(duì)象到目標(biāo)對(duì)象上,當(dāng)釋放鼠標(biāo)按鍵時(shí),在目標(biāo)對(duì)象上產(chǎn)生DragDrop事件。如果DragMode屬性設(shè)置為0(默認(rèn)),則啟用手動(dòng)方式,此時(shí)必須通過(guò)代碼來(lái)設(shè)定拖放操作何時(shí)開(kāi)始和結(jié)束。
7.5.3拖放技術(shù)(2)Drag方法:在手動(dòng)拖動(dòng)模式下,啟動(dòng)、停止或者取消拖動(dòng)。語(yǔ)句格式為:
<被拖動(dòng)對(duì)象名>.Drag[action]
參數(shù)[action]取值為0(vbBeginDrag)時(shí),表示取消拖動(dòng)操作;取值為1(vbEndDrag)時(shí),啟動(dòng)拖動(dòng)操作;取值為2(vbCancel)時(shí),結(jié)束拖動(dòng)操作并觸發(fā)DragDrop。
7.5.3拖放技術(shù)(3)DragDrop事件:當(dāng)源對(duì)象被拖動(dòng)到目標(biāo)對(duì)象上并釋放鼠標(biāo)鍵,或者以參數(shù)值vbEndDrag調(diào)用Drag方法時(shí),將觸發(fā)目標(biāo)對(duì)象的DragDrop事件。語(yǔ)句格式為:PrivateSub<對(duì)象名>_DragDrop(SourceAsControl,XAsSingle,YAsSingle)<對(duì)象名>是被拖動(dòng)的對(duì)象在拖動(dòng)中釋放鼠標(biāo)鍵時(shí)其下方的對(duì)象(目標(biāo)位置的目標(biāo)對(duì)象)名;參數(shù)Source表示正被拖動(dòng)的控件;X、Y表示鼠標(biāo)指針的位置坐標(biāo)。
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年信息流廣告素材創(chuàng)意方法
- 2026年農(nóng)產(chǎn)品品牌包裝設(shè)計(jì)策略
- 無(wú)人機(jī)維修調(diào)試與校驗(yàn)規(guī)范手冊(cè)
- 2026年農(nóng)產(chǎn)品國(guó)際貿(mào)易規(guī)則解析
- 2026年氫能儲(chǔ)運(yùn)安全技術(shù)規(guī)范培訓(xùn)
- 關(guān)于鼓勵(lì)小微企業(yè)吸納勞動(dòng)者就業(yè)的意見(jiàn)
- 職業(yè)壓力管理的醫(yī)療化干預(yù)體系
- 職業(yè)健康遠(yuǎn)程隨訪的醫(yī)患協(xié)同管理策略
- 職業(yè)健康監(jiān)護(hù)中的標(biāo)準(zhǔn)化培訓(xùn)效果評(píng)估
- 院長(zhǎng)培訓(xùn)教學(xué)課件
- 2025大模型安全白皮書
- 2026國(guó)家國(guó)防科技工業(yè)局所屬事業(yè)單位第一批招聘62人備考題庫(kù)及1套參考答案詳解
- 工程款糾紛專用!建設(shè)工程施工合同糾紛要素式起訴狀模板
- 2026湖北武漢長(zhǎng)江新區(qū)全域土地管理有限公司招聘3人筆試備考題庫(kù)及答案解析
- 110(66)kV~220kV智能變電站設(shè)計(jì)規(guī)范
- (正式版)DB44∕T 2784-2025 《居家老年人整合照護(hù)管理規(guī)范》
- 2025年美國(guó)心臟病協(xié)會(huì)心肺復(fù)蘇和心血管急救指南(中文完整版)
- 民宿入股合伙人合同范本
- 上海 衛(wèi)生健康數(shù)據(jù)分類分級(jí)要求
- 《質(zhì)量管理體系成熟度評(píng)價(jià)指南》
- 遼寧大學(xué)第八屆校學(xué)術(shù)委員會(huì)認(rèn)定的學(xué)術(shù)期刊分類標(biāo)準(zhǔn)及目錄
評(píng)論
0/150
提交評(píng)論