版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VB程序設(shè)計(jì)主編:沈祥玖高等教育出版社第4章使用常用控件2022/12/17VB程序設(shè)計(jì)主編:沈祥玖高等教育出版社第4章使用常用控第4章常用控件與窗體學(xué)習(xí)目標(biāo):(1)掌握表4-1中控件的常用屬性、方法、事件。(2)能在程序中靈活、正確的運(yùn)用所掌握的控件。(3)了解多窗體的操作、語(yǔ)句、方法,能夠制作多窗體程序。2022/12/17第4章常用控件與窗體學(xué)習(xí)目標(biāo):2022/12/16圖4-1常用控件圖片框(PictureBox):用于顯示圖形??勺鳛槠渌丶娜萜?,能顯示Print方法的輸出。圖像框(ImageBox):用于顯示圖形。其顯示速度快,占用內(nèi)存少,可實(shí)現(xiàn)圖形的縮放。定時(shí)器(Timer):每隔一定時(shí)間觸發(fā)Timer事件執(zhí)行相應(yīng)代碼,可制作動(dòng)畫或計(jì)時(shí)。單選鈕(OptionButton):通常成組使用,主要用于處理“多選一”的問(wèn)題。復(fù)選框(CheckBox):能表示選中或未選中二種狀態(tài)。成組使用時(shí),實(shí)現(xiàn)復(fù)選多項(xiàng)功能。列表框(ListBox):顯示項(xiàng)目列表,用戶可以選擇其中的一項(xiàng)或多項(xiàng)。組合框(ComboBox):由文本框和列表框組合而成的控件,其有三種形式可供選擇。框架控件(Frame):可以對(duì)其他控件分組,以便用戶識(shí)別。常用于建立多個(gè)單選鈕組。表4-1本章要掌握的常用控件第4章常用控件與窗體2022/12/17圖4-1常用控件圖片框(PictureBox):圖像框(4.1圖片框(PictureBox)
圖片框(PictureBox)主要用于在窗體的指定位置顯示圖形,其還可以作為其他控件的容器、顯示Print方法輸出的文本或顯示圖形方法輸出的圖形。4.1.1屬性(1)Picture屬性用來(lái)指定顯示的圖形。圖片框可顯示JPG、BMP、WMF、GIF、ICO等格式的圖形文件。Picture屬性可以在屬性窗口中設(shè)置,也可以在代碼中設(shè)置。(a)屬性窗口中設(shè)置在設(shè)計(jì)階段,可以單擊屬性窗口中Picture屬性行右則的按鈕,在彈出的“加載圖片”對(duì)話框中選擇加載圖形文件。(b)在代碼中設(shè)置在代碼中,可以用LoadPicture函數(shù)把圖形文件裝入圖片框或圖像框中。語(yǔ)句格式如下:對(duì)象名.Picture=LoadPicture([filename])說(shuō)明:“對(duì)象名”:可以是要加載圖形的圖片框、圖像框或窗體的名稱“filename”:字符串表達(dá)式,指定一個(gè)被顯示的圖形的文件名,第4章常用控件與窗體2022/12/174.1圖片框(PictureBox)
圖片框(Pictu可以包括文件的盤符和路徑。如果未指定文件名,執(zhí)行語(yǔ)句后將清除對(duì)象中的圖象。舉例:實(shí)現(xiàn)裝載圖形的語(yǔ)句:Picture1.picture=LoadPicture("c:\windows\bubbles.bmp")實(shí)現(xiàn)清除圖形的語(yǔ)句:Picture1.Picture=LoadPicture()上機(jī)練習(xí)時(shí),可以先查找電腦中的圖片,得到其路徑和名稱,再輸入到代碼中。查找圖片的方法:在“資源管理器”或“我的電腦”中的C盤上單擊右鍵,選擇右鍵菜單中的“查找”命令,在彈出的“查找”對(duì)話框中名稱項(xiàng)里輸入“*.JPG”(或“*.BMP”、“*.WMF”等),按“開始查找”按鈕即可。(2)AutoSize屬性指定控件是否自動(dòng)改變大小以顯示圖形全部?jī)?nèi)容。屬性值為True或False。
False:保持控件大小不變,超出控件區(qū)域的圖形內(nèi)容不被顯示。此值為缺省值。
True:自動(dòng)改變控件大小以顯示圖形全部?jī)?nèi)容。4.1圖片框(PictureBox)
第4章常用控件與窗體2022/12/17可以包括文件的盤符和路徑。如果未指定文件名,執(zhí)行語(yǔ)句后將清除4.1.2應(yīng)用舉例
【例4.1】設(shè)計(jì)程序,演示圖片框在AutoSize屬性不同選值時(shí)的狀態(tài)和用Picture屬性加載、清除圖形的功能。分析:為做演示,圖片框必不可少,還要建立四個(gè)按鈕,二個(gè)用來(lái)設(shè)置圖片框AutoSize屬性值為True或False,另外二個(gè)實(shí)現(xiàn)加載、清除圖形。(如圖4-2所示)4.1圖片框(PictureBox)
(a)猶抱琵琶半遮面狀態(tài)(b)露出廬山真面目狀態(tài)(c)清除狀態(tài)圖4-2例4.1程序運(yùn)行界面第4章常用控件與窗體2022/12/174.1.2應(yīng)用舉例
4.1圖片框(PictureBo4.1圖片框(PictureBox)
(1)界面設(shè)計(jì)在窗體上添加二個(gè)圖片框、四個(gè)命令按鈕??丶拇笮?、位置和命令按鈕的Caption屬性可參考圖4-2。(2)編寫代碼依次雙擊窗體和各命令按鈕,輸入代碼如下。PrivateSubForm_Load() '在啟動(dòng)程序時(shí),設(shè)置圖片框?qū)傩圆⒓虞d圖形。
Command2_Click '調(diào)用過(guò)程Command2_Click,如同輸入了Command2_Click事件過(guò)程中的四條語(yǔ)句。
Command4_Click '功能同上。關(guān)于過(guò)程的調(diào)用,會(huì)在第8章中講解。EndSubPrivateSubCommand1_Click() '“露出廬山真面目”按鈕事件過(guò)程
Picture1.AutoSize=True '自動(dòng)改變圖片框大小以顯示圖形全部?jī)?nèi)容
Picture2.AutoSize=TrueEndSubPrivateSubCommand2_Click() '“猶抱琵琶半遮面”按鈕事件過(guò)程
Picture1.AutoSize=False '當(dāng)圖片框比圖形小時(shí),圖形超出部分不被顯示
Picture2.AutoSize=FalsePicture1.Height=280 '減少圖片框高度為280,使圖片框小于圖形
Picture2.Height=280EndSubPrivateSubCommand3_Click() '“清除”按鈕事件過(guò)程
Picture1.Picture=LoadPicture("")Picture2.Picture=LoadPicture("")第4章常用控件與窗體2022/12/174.1圖片框(PictureBox)
(1)界面設(shè)計(jì)第4.1圖片框(PictureBox)
EndSubPrivateSubCommand4_Click() '“加載”按鈕事件過(guò)程
Picture1.Picture=LoadPicture("C:\VB\Face02.ico")'確保C盤的VB文件夾下有圖形文件Face02.ico,也可使用其他圖形文件
Picture2.Picture=LoadPicture("C:\VB\Face04.ico")EndSub
編程所用的Face02.ico等圖標(biāo)文件,可在C盤中查找“*.ICO”獲得,一般能在VB資源文件夾“\Common\Graphics\Icons\Misc”下找到。按F5鍵運(yùn)行程序,界面如圖4-2所示。單擊“露出廬山真面目”按鈕,圖形會(huì)完全顯示;點(diǎn)擊“猶抱琵琶半遮面”按鈕,圖片框縮小,圖形中的超出部分不被顯示;按“清除”按鈕,圖形被刪除;使用“加載”按鈕,圖形重新顯示。運(yùn)行無(wú)誤后,請(qǐng)保存工程,以備后用。第4章常用控件與窗體2022/12/174.1圖片框(PictureBox)
EndSub4.2圖像框(ImageBox)
圖像框(ImageBox)只能用于顯示圖形,沒(méi)有圖片框所擁有的其他功能;因此,圖像框比圖片框顯示速度快、占用內(nèi)存少。4.2.1屬性(1)Picture屬性和圖片框的Picture屬性相同。(2)stretch屬性指定是否縮放圖形來(lái)適應(yīng)控件大小。屬性值為True或False。False:縮放控件來(lái)適應(yīng)圖形的大小。此值為缺省值。True:縮放圖形來(lái)適應(yīng)控件的大小。此值可能會(huì)使顯示的圖形變形失真。第4章常用控件與窗體2022/12/174.2圖像框(ImageBox)
圖像框(Im4.2圖像框(ImageBox)
4.2.1屬性(1)Picture屬性和圖片框的Picture屬性相同。(2)stretch屬性指定是否縮放圖形來(lái)適應(yīng)控件大小。屬性值為True或False。False:縮放控件來(lái)適應(yīng)圖形的大小。此值為缺省值。True:縮放圖形來(lái)適應(yīng)控件的大小。此值可能會(huì)使顯示的圖形變形失真。(a)stretch值為False時(shí)(b)值為True并放大時(shí)(c)值為True并縮小時(shí)圖4-3例4.2stretch屬性演示第4章常用控件與窗體2022/12/174.2圖像框(ImageBox)
4.2.1屬性(4.2圖像框(ImageBox)
(1)界面設(shè)計(jì)在窗體上添加一個(gè)圖像框、四個(gè)命令按鈕??丶拇笮?、位置和命令按鈕的Caption屬性可參考圖4-3。(2)編寫代碼依次雙擊窗體和各命令按鈕,輸入代碼如下。PrivateSubForm_Load()Image1.Picture=LoadPicture("C:\VB\Face03.ico")EndSub '在程序啟動(dòng)時(shí),為圖像框裝載圖標(biāo)“Face03.ico”PrivateSubCommand1_Click() '“True”按鈕事件過(guò)程
Image1.Stretch=TrueEndSubPrivateSubCommand2_Click() '“False”按鈕事件過(guò)程
Image1.Stretch=FalseEndSubPrivateSubCommand3_Click() '“放大”按鈕事件過(guò)程
Image1.Width=Image1.Width*2Image1.Height=Image1.Height*2EndSub '把Image1的寬度和高度值乘2再賦給其Width、Height屬性PrivateSubCommand4_Click() '“縮小”按鈕事件過(guò)程
Image1.Width=Image1.Width/2Image1.Height=Image1.Height/2EndSub '把Image1的寬度和高度值的一半賦給其Width、Height屬性第4章常用控件與窗體2022/12/174.2圖像框(ImageBox)
(1)界面設(shè)計(jì)第4.2圖像框(ImageBox)
按F5鍵運(yùn)行程序,程序界面如圖4-3(a)所示,此時(shí)單擊“放大”按鈕,雖然圖像框已經(jīng)擴(kuò)大一倍(其不可見),但是因其Stretch值默認(rèn)為False,所以圖形并不隨圖像框的擴(kuò)大而擴(kuò)大。隨后點(diǎn)擊“True”按鈕,將Stretch值更改為True,這時(shí)圖形會(huì)為適應(yīng)圖像框的大小而放大,如圖4-3(b)所示。正如圖4-3(c)所示,按“縮小”按鈕,圖形會(huì)隨圖像框的縮小而變小。不論圖形及圖像框是在擴(kuò)大還是已縮小,只要單擊“False”按鈕,都會(huì)使圖像框縮放到圖形原始大小的尺寸,來(lái)適應(yīng)圖形的正常顯示,如圖4-3(a)。運(yùn)行無(wú)誤后,請(qǐng)保存工程,以備后用。4.2.3圖像框與圖片框的區(qū)別雖然圖像框與圖片框的用法基本相同,但也有不少區(qū)別:(1)圖像框比圖片框占用的內(nèi)存少,顯示圖形的速度快。(2)圖像框可以實(shí)現(xiàn)圖形的縮放。(3)圖像框不能同圖片框一樣通過(guò)Print方法顯示文本或使用顯示圖形方法輸出圖形。(4)圖像框不能像圖片框一樣來(lái)作為其他控件的容器。此差別說(shuō)明如下:第4章常用控件與窗體2022/12/174.2圖像框(ImageBox)
按F54.2圖像框(ImageBox)
例如在圖像框中畫一個(gè)命令按鈕,圖像框并不能作為此命令按鈕的容器,他們是彼此獨(dú)立的,二者之間沒(méi)有固定的聯(lián)系。圖像框中的命令按鈕不從屬于圖像框,不是圖像框的組成部分,當(dāng)移動(dòng)圖像框時(shí)命令按鈕仍在原位置,不隨之移動(dòng)。如果單獨(dú)移動(dòng)命令按鈕,可以把他移動(dòng)到圖像框之外。如果在圖片框內(nèi)畫一個(gè)命令按鈕,圖片框會(huì)成為這個(gè)按鈕的容器。此時(shí)移動(dòng)圖片框,則命令按鈕隨之一起移動(dòng)(命令按鈕成為圖片框的一個(gè)組成部分)。如果單獨(dú)移動(dòng)命令按鈕,只能在圖片框范圍內(nèi)移動(dòng),不能把他移動(dòng)到圖片框之外。第4章常用控件與窗體2022/12/174.2圖像框(ImageBox)
例如在4.3定時(shí)器(Timer)
定時(shí)器(Timer)可以實(shí)現(xiàn)每隔一定的時(shí)間間隔就觸發(fā)一次Timer事件,從而執(zhí)行相應(yīng)的代碼。利用定時(shí)器,可以制作動(dòng)畫、定期執(zhí)行某個(gè)特定操作或?qū)崿F(xiàn)計(jì)時(shí)。
Timer控件有時(shí)被譯為計(jì)時(shí)器或時(shí)鐘。正如某些自鳴鐘可以每隔一小時(shí)就觸發(fā)“整點(diǎn)報(bào)時(shí)”事件一樣,定時(shí)器也能每隔一定時(shí)間就觸發(fā)一個(gè)事件;而且他還可以用Interval屬性來(lái)設(shè)置間隔時(shí)間的長(zhǎng)短,在Timer事件里編寫不同代碼用來(lái)實(shí)現(xiàn)不同功能。第4章常用控件與窗體2022/12/174.3定時(shí)器(Timer)
定時(shí)器(Time4.3定時(shí)器(Timer)
4.3.1屬性與事件(1)Interval屬性作用:設(shè)置觸發(fā)定時(shí)器Timer事件的間隔時(shí)間。范圍:0~65,535毫秒(1毫秒=0.001秒)說(shuō)明:缺省值為0,即定時(shí)器控件不起作用;最大值為65,535,即65秒多。如果希望每秒觸發(fā)n個(gè)Timer事件,則應(yīng)設(shè)置屬性Interval的值為1000/n。但不要奢望設(shè)置為1時(shí),會(huì)每秒產(chǎn)生1000個(gè)事件。由于大多數(shù)個(gè)人計(jì)算機(jī)系統(tǒng)硬件的限制,定時(shí)器每秒鐘最多可產(chǎn)生的Timer事件在18個(gè)左右;也就是說(shuō),實(shí)際最小間隔時(shí)間大約在56毫秒上下。所以,若將Interval屬性值設(shè)為比56小的數(shù),可能不會(huì)產(chǎn)生預(yù)期效果。(2)Timer事件在由Interval屬性設(shè)定的時(shí)間間隔過(guò)去之后觸發(fā),執(zhí)行相應(yīng)代碼。運(yùn)行時(shí),定時(shí)器不可見,所以他沒(méi)有Click等事件,Timer事件是定時(shí)器唯一的事件。Timer事件的觸發(fā),有二個(gè)前提:一是Timer控件的Enabled屬性被設(shè)置為True,二是Interval屬性大于0。第4章常用控件與窗體2022/12/174.3定時(shí)器(Timer)
4.3.1屬性與事件4.3定時(shí)器(Timer)
4.3.2應(yīng)用舉例【例4.3】設(shè)計(jì)程序,演示定時(shí)器的動(dòng)畫、計(jì)時(shí)功能。分析:動(dòng)畫功能,可以設(shè)置定時(shí)器控件Interval屬性為較小值,以及在Timer事件中使圖像框在不同時(shí)段加載不同圖形來(lái)實(shí)現(xiàn)。而要在同一事件過(guò)程中判斷加載不同圖形,需要第五章中if語(yǔ)句的相關(guān)知識(shí),但我們可以殊途同歸的用二個(gè)定時(shí)器來(lái)實(shí)現(xiàn)。在第三個(gè)計(jì)時(shí)器的事件中用Time函數(shù)獲取系統(tǒng)時(shí)間,再顯示在標(biāo)簽控件中,可實(shí)現(xiàn)計(jì)時(shí)。(如圖4-4所示)(a)設(shè)計(jì)狀態(tài)(b)動(dòng)畫圖一(c)動(dòng)畫圖二圖4-4例4.3程序界面第4章常用控件與窗體2022/12/174.3定時(shí)器(Timer)
4.3.2應(yīng)用舉例(4.3定時(shí)器(Timer)
(1)界面設(shè)計(jì)在窗體上添加三個(gè)圖像框(Image2、Image1、Image3)、三個(gè)定時(shí)器、一個(gè)標(biāo)簽,大小及位置可參考圖4-4。(2)編寫代碼依次雙擊窗體和三個(gè)定時(shí)器控件,輸入代碼如下。PrivateSubForm_Load() '程序啟動(dòng)時(shí),裝載圖形,設(shè)置Interval屬性值
Image2.Picture=LoadPicture("C:\VB\Face02.ico")Image3.Picture=LoadPicture("C:\VB\Face03.ico")Image1.Picture=Image2.Picture'使Image1擁有同Image2一樣的圖形
Timer1.Interval=500 '設(shè)置Timer1每隔0.5秒觸發(fā)一個(gè)Timer事件
Timer3.Interval=100 '設(shè)置Timer3每隔0.1秒觸發(fā)一個(gè)Timer事件EndSubPrivateSubTimer1_Timer()Image1.Picture=Image3.Picture '使Image1顯示Image3中的圖形
Timer1.Interval=0 '使Timer1不起作用
Timer2.Interval=500 '設(shè)置Timer2每隔0.5秒觸發(fā)一個(gè)Timer事件EndSubPrivateSubTimer2_Timer()Image1.Picture=Image2.Picture '使Image1顯示Image2中的圖形
Timer2.Interval=0 '使Timer2不起作用
Timer1.Interval=500 '設(shè)置Timer1每隔0.5秒觸發(fā)一個(gè)Timer事件EndSubPrivateSubTimer3_Timer() 'Timer3的Timer事件,每隔0.1秒執(zhí)行一次
Label1.Caption=Time '將Time函數(shù)返回的系統(tǒng)時(shí)間顯示在標(biāo)簽中EndSub第4章常用控件與窗體2022/12/174.3定時(shí)器(Timer)
(1)界面設(shè)計(jì)依次雙擊窗4.3定時(shí)器(Timer)
按F5運(yùn)行程序,程序界面如圖4-4(a)、(b)所示。在電腦中可以看到,大約每隔半秒,中間的(Image1)圖形就在“閉嘴微笑”和“開口大笑”之間進(jìn)行轉(zhuǎn)換,并由于視覺的殘留現(xiàn)象而形成動(dòng)畫。電影就是以24格/秒(以前是16格/秒)的速度播放相近的圖形而給我們“動(dòng)”的感覺。在實(shí)現(xiàn)動(dòng)畫的同時(shí),程序會(huì)按“時(shí):分:秒”的格式顯示當(dāng)前系統(tǒng)時(shí)間。想一想:(a)系統(tǒng)時(shí)間按秒變化,Timer3的Interval屬性為什么設(shè)置為100而不是1000呢?假設(shè)將Interval屬性設(shè)為1000(1秒)。此時(shí),雖然顯示精確到秒的系統(tǒng)時(shí)間,但程序的顯示并不精確。比如Timer3的一個(gè)Timer事件剛剛過(guò)去,而系統(tǒng)時(shí)間中新的一秒緊跟著到來(lái),程序卻要間隔1秒后才會(huì)獲得并顯示這一秒的時(shí)間,那么會(huì)有n秒(n<1)的誤差產(chǎn)生。因此,Interval屬性值越小,誤差也會(huì)越小,顯示的系統(tǒng)時(shí)間越準(zhǔn)確。第4章常用控件與窗體2022/12/174.3定時(shí)器(Timer)
按F5運(yùn)行程序,程序界面4.3定時(shí)器(Timer)
按F5運(yùn)行程序,程序界面如圖4-4(a)、(b)所示。在電腦中可以看到,大約每隔半秒,中間的(Image1)圖形就在“閉嘴微笑”和“開口大笑”之間進(jìn)行轉(zhuǎn)換,并由于視覺的殘留現(xiàn)象而形成動(dòng)畫。電影就是以24格/秒(以前是16格/秒)的速度播放相近的圖形而給我們“動(dòng)”的感覺。在實(shí)現(xiàn)動(dòng)畫的同時(shí),程序會(huì)按“時(shí):分:秒”的格式顯示當(dāng)前系統(tǒng)時(shí)間。想一想:(a)系統(tǒng)時(shí)間按秒變化,Timer3的Interval屬性為什么設(shè)置為100而不是1000呢?假設(shè)將Interval屬性設(shè)為1000(1秒)。此時(shí),雖然顯示精確到秒的系統(tǒng)時(shí)間,但程序的顯示并不精確。比如Timer3的一個(gè)Timer事件剛剛過(guò)去,而系統(tǒng)時(shí)間中新的一秒緊跟著到來(lái),程序卻要間隔1秒后才會(huì)獲得并顯示這一秒的時(shí)間,那么會(huì)有n秒(n<1)的誤差產(chǎn)生。因此,Interval屬性值越小,誤差也會(huì)越小,顯示的系統(tǒng)時(shí)間越準(zhǔn)確。第4章常用控件與窗體2022/12/174.3定時(shí)器(Timer)
按F5運(yùn)行程序,4.3定時(shí)器(Timer)
(b)程序運(yùn)行后,Timer1和Timer2各自的Timer事件實(shí)際每隔多長(zhǎng)時(shí)間觸發(fā)一次?我們一起來(lái)設(shè)想程序的執(zhí)行。程序啟動(dòng)時(shí),執(zhí)行窗體的Load事件過(guò)程,其中一條語(yǔ)句使Timer1的Interval屬性值由0變成500。在0.5秒后,Timer1的Timer事件第一次被觸發(fā),事件過(guò)程中第二條語(yǔ)句把Timer1本身的Interval屬性值再由500設(shè)回0,第三句讓Timer2的Timer事件于0.5秒后產(chǎn)生。在程序運(yùn)行了1秒鐘時(shí),Timer2的Timer事件過(guò)程首次執(zhí)行,他會(huì)關(guān)閉Timer2自身并點(diǎn)燃Timer1在0.5秒后執(zhí)行事件的引線。程序啟動(dòng)后的第1.5秒,即時(shí)隔1秒鐘以后,Timer1的Timer事件被再次激發(fā)……從上面的設(shè)想中不難看出,除第一次外,Timer1和Timer2各自的Timer事件大約每隔1秒觸發(fā)一次。(由于是二個(gè)定時(shí)器互動(dòng)以及電腦系統(tǒng)硬件的關(guān)系,間隔時(shí)間會(huì)有微小誤差。)第4章常用控件與窗體2022/12/174.3定時(shí)器(Timer)
(b)程序運(yùn)行后,4.4單選鈕(OptionButton)
單選鈕(OptionButton)通常成組使用,主要用于處理“多選一”的問(wèn)題。用戶在一組單選鈕中最多只能選擇一項(xiàng)。選定組中某項(xiàng)單選鈕時(shí),其左邊圓圈中會(huì)出現(xiàn)黑點(diǎn),表明處于選定狀態(tài);而本組內(nèi)的其他單選鈕則被強(qiáng)制處于非選定狀態(tài)(左邊圓圈中無(wú)黑點(diǎn))。4.4.1屬性與事件(1)Value屬性表示、設(shè)置單選按鈕是否處于選定的狀態(tài)。屬性值為True或False。False:處于非選定狀態(tài),左邊圓圈中沒(méi)有黑點(diǎn)。此值為缺省值。True: 處于已選定狀態(tài),左邊圓圈中顯示黑點(diǎn)。(2)Caption屬性顯示出現(xiàn)在單選鈕旁邊的文本。(3)Style屬性設(shè)置單選鈕的顯示方式。屬性值為0或1。0為缺省值。0–Standard: 標(biāo)準(zhǔn)方式。用文本旁邊圓圈中是否有黑點(diǎn)來(lái)表示選定狀態(tài)。1–Graphical: 圖形方式。外觀類似命令按鈕,用按鈕是否按下表示選定的狀態(tài)。第4章常用控件與窗體2022/12/174.4單選鈕(OptionButton)單4.4單選鈕(OptionButton)
圖4-5中有二個(gè)框架,每個(gè)框架中,都有一個(gè)單選鈕;每個(gè)單選鈕組都由二單選鈕組成。左側(cè)框架的單選鈕組中,二個(gè)單選鈕的Style屬性為0,Value值如控件的標(biāo)簽文本所示。
右側(cè)框架的單選鈕組中,二個(gè)單選鈕的Style屬性為1;處于按下(凹陷)狀態(tài)的單選鈕,其Value值為True,處于彈出(凸起)狀態(tài)的單選鈕,其Value值為False。圖4-5單選鈕屬性演示第4章常用控件與窗體2022/12/174.4單選鈕(OptionButton)4.4單選鈕(OptionButton)
(4)Click事件單選鈕常用事件是Click事件。4.4.2應(yīng)用舉例
【例4.4】編寫“簡(jiǎn)單記事本”程序,實(shí)現(xiàn)功能:可以輸入文本并能更改字體大小。分析:輸入文本,可用文本框?qū)崿F(xiàn);更改字體大小,用單選鈕可以做到。(如圖4-6所示)(a)啟動(dòng)界面(b)10號(hào)字體(c)12號(hào)字體圖4-6“簡(jiǎn)單記事本”運(yùn)行界面第4章常用控件與窗體2022/12/174.4單選鈕(OptionButton)(44.4單選鈕(OptionButton)
(1)界面設(shè)計(jì)在窗體上添加一個(gè)標(biāo)簽、一個(gè)文本框、二個(gè)單選鈕,大小位置及Caption屬性見圖4-6。設(shè)置文本框的MultiLine屬性為True,使其可以輸入多行文本。(2)編寫代碼雙擊窗體,在窗體的Load事件中輸入代碼如下:PrivateSubForm_Load() '窗體啟動(dòng)時(shí)的初始設(shè)置。
Option1.Value=True '使標(biāo)簽為“10號(hào)”的單選鈕1處于選定狀態(tài)。
Text1.FontSize=10 '文本大小為10號(hào)。EndSub
單擊代碼窗口上方右側(cè)的事件列表框,在下拉列表中選擇“Resize”項(xiàng),并輸入代碼:PrivateSubForm_Resize() '當(dāng)窗體大小改變時(shí)觸發(fā)的事件。
Text1.Height=Form1.Height-Text1.Top'文本框的高度=窗體的高度-文本框上邊界到窗體頂端的距離。
Text1.Width=Form1.Width '文本框的寬度總是等于窗體的寬度。EndSub '本過(guò)程實(shí)現(xiàn)文本框隨窗體的縮放而縮小擴(kuò)大。分別雙擊二個(gè)單選鈕,輸入代碼如下所示:PrivateSubOption1_Click()Text1.FontSize=10 '文本大小為10號(hào)。EndSubPrivateSubOption2_Click()Text1.FontSize=12 '文本大小為12號(hào)。EndSub第4章常用控件與窗體2022/12/174.4單選鈕(OptionButton)(1)4.4單選鈕(OptionButton)
程序編寫好后,請(qǐng)保存工程,以備后用。(我們將在以后的章節(jié)中對(duì)其逐步完善。)按F5運(yùn)行程序,啟動(dòng)界面如圖4-6(a)所示,此時(shí)標(biāo)題為“10號(hào)”的單選鈕處于選中狀態(tài)。在文本框中可以輸入多行文本,文本字體大小為默認(rèn)的10號(hào)字,如圖4-6(b)所示。單擊標(biāo)題為“12號(hào)”的單選鈕,文本字號(hào)變?yōu)?2號(hào),見圖4-6(c)。 在程序運(yùn)行時(shí),可以用以下方法選中一個(gè)單選鈕:間用鼠標(biāo)單擊單選鈕。用Tab鍵定位到單選鈕組,然后用方向鍵定位單選鈕。但是不論我們?nèi)绾芜x擇,在一個(gè)單選鈕組中,只能有一個(gè)單選鈕處于選中狀態(tài),并且他會(huì)保持其選中狀態(tài)一直到本組中其他單選鈕被選中。第4章常用控件與窗體2022/12/174.4單選鈕(OptionButton)程4.5復(fù)選框(CheckBox)
復(fù)選框(CheckBox)也稱為檢查框。在單個(gè)使用時(shí),可以表示選中或未選中二種狀態(tài);在成組出現(xiàn)時(shí),能夠?qū)崿F(xiàn)復(fù)選多項(xiàng)的功能。4.5.1屬性與事件(1)Value屬性決定復(fù)選框的狀態(tài),此屬性有三個(gè)可選值:0、1、2。0-未選中:處于未選中狀態(tài),左邊方框中不顯示“√”號(hào)。此值為缺省值。1-已選中:處于已選中狀態(tài),左邊方框中會(huì)顯示“√”號(hào)。2-變灰暗:復(fù)選框變成灰色,表示禁止用戶選擇。前二種狀態(tài),可以在程序運(yùn)行時(shí),通過(guò)鼠標(biāo)單擊或用Tab鍵定位后按空格鍵來(lái)轉(zhuǎn)變。例如,程序運(yùn)行后,首次單擊復(fù)選框,其方框內(nèi)出現(xiàn)"√"號(hào),Value屬性值變?yōu)?(True);再次單擊此復(fù)選框,則會(huì)清除方框中的"√",并使Value屬性值變?yōu)?(False)。第三種狀態(tài),可以在屬性窗口里或代碼中設(shè)置。第4章常用控件與窗體2022/12/174.5復(fù)選框(CheckBox)
復(fù)4.5復(fù)選框(CheckBox)
(2)Style屬性設(shè)置復(fù)選框的顯示方式。屬性值為0或1。0為缺省值。0–Standard: 標(biāo)準(zhǔn)方式。用文本旁邊方框中是否有“√”號(hào)來(lái)表示選定狀態(tài)。1–Graphical: 圖形方式。外觀類似命令按鈕,用按鈕是否按下表示選定的狀態(tài)。當(dāng)Style屬性值為1時(shí),可以在Picture、DownPicture、DisabledPicture三個(gè)屬性中分別設(shè)置圖形,用不同的圖形來(lái)表示Value屬性三種狀態(tài)(未選中、已選中、禁止選擇)。(3)事件復(fù)選框常用事件為Click事件。第4章常用控件與窗體2022/12/174.5復(fù)選框(CheckBox)
(2)4.5復(fù)選框(CheckBox)
【例4.5】完善“簡(jiǎn)單記事本”程序,增加功能:可以選擇字體樣式。分析:常用的字體樣式有加粗和傾斜。對(duì)于文本,可以只設(shè)置一種樣式,也可以同時(shí)應(yīng)用二種或多種樣式。所以,用復(fù)選框來(lái)實(shí)現(xiàn)對(duì)字體樣式的選擇是比較恰當(dāng)?shù)?。(如圖4-7所示)(a)無(wú)字體樣式(b)加粗(c)加粗并傾斜圖4-7用復(fù)選框選擇字體樣式第4章常用控件與窗體2022/12/174.5復(fù)選框(CheckBox)
【例4.4.5復(fù)選框(CheckBox)
(1)界面設(shè)計(jì)打開上節(jié)保存的“簡(jiǎn)單記事本”工程文件,在窗體上增加二個(gè)復(fù)選框。文本框的新位置和復(fù)選框的大小、位置及Caption屬性見圖4-7。(2)編寫代碼分別雙擊二個(gè)復(fù)選框,輸入代碼如下:PrivateSubCheck1_Click() '單擊復(fù)選框時(shí),會(huì)在選中和非選中間進(jìn)行切換。
Text1.FontBold=Check1.Value EndSub '文本框的FontBold為True時(shí),樣式為粗體;為False時(shí),取消粗體。PrivateSubCheck2_Click()Text1.FontItalic=Check2.ValueEndSub '文本框的FontItalic為True時(shí),樣式為傾斜;為False時(shí),取消傾斜。
按F5運(yùn)行程序,在程序中輸入任意文本。單擊“加粗”復(fù)選框,文本應(yīng)用加粗樣式,如圖4-7(b)所示。單擊“傾斜”按鈕,文本樣式為即加粗又傾斜,如圖4-7(c)。運(yùn)行無(wú)誤后,請(qǐng)保存工程,以備后用。第4章常用控件與窗體2022/12/174.5復(fù)選框(CheckBox)
(1)界面設(shè)計(jì)第4.5復(fù)選框(CheckBox)
4.5.3復(fù)選框與單選鈕的區(qū)別最主要的區(qū)別:在一組復(fù)選框中,可以實(shí)現(xiàn)多選;而單選鈕組中,只能多選一。在一組復(fù)選框中,每個(gè)復(fù)選框都是獨(dú)立的、互不影響的,可以任意選擇它們的狀態(tài)組合,能夠全選、全不選或同時(shí)使若干個(gè)復(fù)選框處于選中狀態(tài)。在單選鈕組中,單選鈕間是相互排斥的,選中其中一個(gè)就會(huì)清除該組中其他按鈕的選定狀態(tài);所以在選擇時(shí),最多且必須選一項(xiàng),不會(huì)出現(xiàn)全選、全不選或多選的狀態(tài)。第4章常用控件與窗體2022/12/174.5復(fù)選框(CheckBox)
4.5.3復(fù)4.6列表框(ListBox)
列表框(ListBox)顯示項(xiàng)目列表,用戶可以選擇其中的一項(xiàng)或多項(xiàng)。如果項(xiàng)目總數(shù)超過(guò)了可顯示的項(xiàng)目數(shù),列表框會(huì)自動(dòng)增加滾動(dòng)條。4.6.1屬性(1)List屬性用來(lái)存放列表框的項(xiàng)目。該屬性是一個(gè)字符串?dāng)?shù)組,數(shù)組的下標(biāo)從0開始,即List(0)保存表中的第一項(xiàng)內(nèi)容,List(1)保存第二項(xiàng)內(nèi)容;依次類推,List(ListCount-1)保存表中的最后一項(xiàng)內(nèi)容。對(duì)于List屬性,可以在屬性窗口中或代碼中設(shè)置:(a)在屬性窗口中設(shè)置:選擇屬性窗口中的List屬性,單擊右方的下拉按鈕,在彈出的下拉框中輸入首項(xiàng)內(nèi)容;按下Ctrl+Enter鍵換行,輸入第二項(xiàng)內(nèi)容;輸入最后一項(xiàng)后,按下Enter鍵表示輸入結(jié)束。第4章常用控件與窗體2022/12/174.6列表框(ListBox)
列表4.6列表框(ListBox)
如圖4-8(a)所示,在輸入“第一項(xiàng):List(0)”后,按Ctrl+Enter鍵輸入“第二項(xiàng):List(1)”,在輸入“第五項(xiàng):List(4)”后按Enter鍵結(jié)束輸入。程序運(yùn)行后的列表框如圖4-8(b)所示。(a)在屬性窗口中設(shè)置(b)運(yùn)行后的顯示圖4-8列表框?qū)傩匝菔镜?章常用控件與窗體2022/12/174.6列表框(ListBox)
如圖4-4.6列表框(ListBox)
(b)在代碼中設(shè)置:在代碼中設(shè)置List屬性的語(yǔ)句格式為:列表框.]List(下標(biāo))=字符串例如,圖4-8(b)中列表框的顯示,也可以用以下語(yǔ)句實(shí)現(xiàn):PrivateSubForm_Load()List1.List(0)="第一項(xiàng):List(0)"List1.List(1)="第二項(xiàng):List(1)"List1.List(2)="第三項(xiàng):List(2)"List1.List(3)="第四項(xiàng):List(3)"List1.List(4)="第五項(xiàng):List(4)"EndSub
(2)ListCount屬性記錄列表框中的項(xiàng)目總數(shù)。例如圖4-8中列表框的ListCount屬性為5。該屬性只能在程序中引用它。常用ListCount-1表示最后一項(xiàng)的序號(hào)。(3)Text屬性用于存放被選中列表項(xiàng)的文本內(nèi)容。在圖4-8(b)中,如選中第二項(xiàng),則此項(xiàng)會(huì)反白顯示,同時(shí)Text屬性值變?yōu)椤暗诙?xiàng):List(1)”。該屬性是只讀屬性,不能在屬性窗口中及代碼中設(shè)置,只能在代碼中引用Text屬性值,來(lái)獲取當(dāng)前選定列表項(xiàng)的內(nèi)容。第4章常用控件與窗體2022/12/174.6列表框(ListBox)
(b)在代碼中4.6列表框(ListBox)
(4)ListIndex屬性表示運(yùn)行時(shí)被選中項(xiàng)目的序號(hào)(下標(biāo)值)。如果列表框中沒(méi)有任何一項(xiàng)被選中,則ListIndex為-1。假設(shè)選擇了多個(gè)列表項(xiàng),則ListIndex只存儲(chǔ)最后一個(gè)所選項(xiàng)目的序號(hào)。程序運(yùn)行時(shí),可以使用ListIndex屬性判斷列表框中哪一項(xiàng)被選中。例如,在圖4-8(b)狀態(tài)中,ListIndex屬性值為-1;單擊第二項(xiàng),ListIndex屬性值變?yōu)?;再點(diǎn)擊第三項(xiàng),ListIndex屬性值變?yōu)?。ListIndex屬性不能在設(shè)計(jì)時(shí)設(shè)置,只有程序運(yùn)行時(shí)才起作用。(5)Selected屬性該屬性是一個(gè)邏輯數(shù)組,其元素對(duì)應(yīng)列表框中相應(yīng)的項(xiàng),表示對(duì)應(yīng)的項(xiàng)在程序運(yùn)行期間是否被選中。例如,圖4-8(b)狀態(tài)中,第一項(xiàng)未被選中,Selected(0)的值為False;如若選中第一項(xiàng),,Selected(0)的值會(huì)變?yōu)門rue。此屬性不能在屬性窗口中設(shè)置,只能在代碼中引用或賦值。第4章常用控件與窗體2022/12/174.6列表框(ListBox)
(4)L4.6列表框(ListBox)
(6)MultiSelect屬性設(shè)置是否能在列表框中進(jìn)行復(fù)選以及如何進(jìn)行復(fù)選。此屬性有三個(gè)可選值:0、1、2。0–None:禁止多項(xiàng)選擇,只能選擇一項(xiàng)。如同一組單選鈕一樣。此值為缺省值。1–Simple:簡(jiǎn)單復(fù)選,可以同時(shí)選擇多個(gè)項(xiàng)目。單擊鼠標(biāo)或按空格鍵使項(xiàng)目在選中和非選中狀態(tài)間切換,類似對(duì)一組復(fù)選框的操作。2–Extended:擴(kuò)展復(fù)選,能夠用更多的方式方便的選擇項(xiàng)目。以下為詳細(xì)說(shuō)明:只用鼠標(biāo)點(diǎn)選時(shí),只能選擇一項(xiàng),如同“0–None”。按住CTRL鍵,可以實(shí)現(xiàn)簡(jiǎn)單復(fù)選不連續(xù)項(xiàng),類似“1–Simple”。按住SHIFT鍵,配合鼠標(biāo)或方向鍵,能夠進(jìn)行連續(xù)項(xiàng)目的快速選擇。按住左鍵并拖動(dòng)鼠標(biāo),可以對(duì)項(xiàng)目進(jìn)行圈選。選擇“2–Extended”后,列表框的選擇方式,同在資源管理器中選擇文件如出一轍。(7)SelCount屬性記錄列表框中所選項(xiàng)目的總數(shù)。如果沒(méi)有項(xiàng)被選中,那么SelCount屬性將返回0值;否則,他將返回當(dāng)前被選中的列表項(xiàng)的數(shù)量。此屬性只有在MultiSelect屬性值設(shè)置為“1–Simple”或“2–Extended”時(shí)起作用,通常與Selected數(shù)組一起使用,以處理控件中的所選項(xiàng)目。第4章常用控件與窗體2022/12/174.6列表框(ListBox)
(6)Mul4.6列表框(ListBox)
4.6.2方法列表框常用的方法有:AddItem、RemoveItem和Clear。(1)AddItem方法功能:把一個(gè)項(xiàng)目加入列表框。格式:Listname.AddItemitem[,index]說(shuō)明:
Listname:列表框的名稱
item: 字符串表達(dá)式,內(nèi)容為要加到列表框的項(xiàng)目。
index: 索引號(hào),即新增加的項(xiàng)目在列表框中的位置。index為0時(shí),添加到第一個(gè)位置;index為1時(shí),加到第二個(gè)位置;依次類推。如果省略index,新增加的項(xiàng)目將添加到列表框的末尾。舉例:List1.AddItem(“第六項(xiàng):List(5)”) ‘在列表框末尾增加項(xiàng)目“第六項(xiàng):List(5)”。(2)RemoveItem方法功能:刪除列表框中的項(xiàng)目。格式:Listname.RemoveItemindex說(shuō)明:這里的index參數(shù)是必選項(xiàng),他表示要?jiǎng)h除項(xiàng)目的序號(hào)。舉例:List1.RemoveItem0 '刪除列表框中的第一項(xiàng)。第4章常用控件與窗體2022/12/174.6列表框(ListBox)
4.6.2方法4.6列表框(ListBox)
(3)Clear方法功能:刪除列表框控件中的所有項(xiàng)目。格式:Listname.Clear4.6.3應(yīng)用舉例【例4.6】修改“簡(jiǎn)單記事本”程序,要求通過(guò)列表來(lái)選擇字號(hào),并能添加、刪除字號(hào)。分析:可以使用列表框來(lái)顯示字號(hào)列表。單擊列表中的字號(hào)時(shí),通過(guò)把列表框的Text屬性值賦值給文本框的FontSize屬性,從而實(shí)現(xiàn)選擇字號(hào)功能。建立三個(gè)按鈕,分別使用列表框的AddItem、RemoveItem和Clear方法來(lái)實(shí)現(xiàn)字號(hào)的添加、刪除和清空。(如圖4-9所示)(a)運(yùn)行后輸入內(nèi)容(b)選擇字號(hào)(c)添加、刪除字號(hào)圖4-9用列表框選擇、添加、刪除字號(hào)第4章常用控件與窗體2022/12/174.6列表框(ListBox)
(3)Clear方法4.6列表框(ListBox)
(1)界面設(shè)計(jì)打開上節(jié)保存的“簡(jiǎn)單記事本”工程,為突出重點(diǎn),刪除單選鈕、復(fù)選框以及相應(yīng)代碼。建立一個(gè)列表框、一個(gè)標(biāo)簽控件、三個(gè)命令按鈕,設(shè)置標(biāo)簽控件、命令按鈕的Caption屬性以及列表框的List屬性如圖4-9(a)所示。調(diào)整原有文本框的大小及位置,并保持其Text屬性為空值。(圖中詩(shī)句是運(yùn)行后輸入的)(2)編寫代碼依次雙擊列表框和三個(gè)命令按鈕,輸入代碼如下:PrivateSubList1_Click() '單擊列表框
Text1.FontSize=List1.Text '使文本框中字體大小為列表框中所選字號(hào)EndSubPrivateSubCommand1_Click() '單擊“添加”按鈕
DimsAsStrings=InputBox("請(qǐng)輸入要添加的字號(hào)","添加字號(hào)")List1.AddItems '把用戶在輸入框中輸入的字號(hào)添加到列表框中EndSubPrivateSubCommand2_Click() '單擊“刪除”按鈕
List1.RemoveItemList1.ListIndex '刪除列表框中所選項(xiàng)目EndSubPrivateSubCommand3_Click() '單擊“清空”按鈕
List1.Clear '清空列表框中的所有項(xiàng)目EndSub第4章常用控件與窗體2022/12/174.6列表框(ListBox)
(1)界面設(shè)計(jì)第44.6列表框(ListBox)
輸入完成后,按F5鍵運(yùn)行程序。在文本框中輸入任意文本,單擊列表框中的項(xiàng)目,可以設(shè)置相應(yīng)的字號(hào);例如單擊“12”,則文本字體大小更改為12號(hào)。單擊“添加”按鈕,在彈出的輸入框中輸入字號(hào),按“確定”按鈕后,列表框?qū)⒃黾铀斎氲淖痔?hào)。選擇某一字號(hào),單擊“刪除”按鈕,會(huì)刪除所選字號(hào)。單擊“清空”按鈕,則清除所有字號(hào)。請(qǐng)保存此工程。第4章常用控件與窗體2022/12/174.6列表框(ListBox)
輸入完成后4.7組合框(ComboBox)
圖4-10組合框的三種形式
組合框(ComboBox)是由文本框和列表框組合而成的控件。組合框有三種形式:下拉式組合框、簡(jiǎn)單組合框和下拉式列表框。(如圖4-10所示)三種形式都能在列表中選擇項(xiàng)目,所選項(xiàng)目會(huì)顯示在文本框中?!跋吕浇M合框”和“簡(jiǎn)單組合框”還可以通過(guò)在文本框中輸入文本來(lái)進(jìn)行選擇?!跋吕浇M合框”和“下拉式列表框”均具有能“下拉”和“收起”的列表,可節(jié)省空間。通過(guò)Style屬性可選擇所需的形式。第4章常用控件與窗體2022/12/174.7組合框(ComboBox)
圖4-10組4.7組合框(ComboBox)
4.7.1屬性與方法(1)Style屬性決定組合框的類型和行為,可選值為0、1、2,默認(rèn)值為0。(a)0–DropdownCombo(下拉式組合框):正常狀態(tài)僅顯示文本框和下拉按鈕;當(dāng)單擊下拉按鈕時(shí),會(huì)顯示列表框供用戶選擇;再次單擊下拉按鈕,列表框隱藏,恢復(fù)正常狀態(tài)。用戶可以通過(guò)列表框選擇項(xiàng)目,也可以在文本框中輸入項(xiàng)目文本來(lái)進(jìn)行選擇,所選項(xiàng)目會(huì)顯示在文本框中。此形式允許用戶鍵入列表框中沒(méi)有的選項(xiàng)。(b)1–SimpleCombo(簡(jiǎn)單組合框):文本框與列表框一起顯示,文本框右側(cè)無(wú)下拉按鈕,列表框固定顯示,不能被“拉下”和“收起”。對(duì)項(xiàng)目的選擇與下拉式組合框相同。在設(shè)計(jì)時(shí),應(yīng)適當(dāng)調(diào)整組合框的大小,否則執(zhí)行時(shí)有些列表項(xiàng)可能不被顯示。當(dāng)選項(xiàng)數(shù)超過(guò)可顯示的限度時(shí)將自動(dòng)插入一個(gè)垂直滾動(dòng)條。(c)2-DropdownListBox(下拉式列表框):外觀同下拉式組合框一樣,有下拉按鈕以及可供“拉下”和“收起”列表框。與下拉式組合框的有所不同的是,用戶不能在列表框中輸入選項(xiàng),而只能在列表中選擇。第4章常用控件與窗體2022/12/174.7組合框(ComboBox)
4.7.1屬性與方4.7組合框(ComboBox)
(2)其他屬性與方法組合框的大部分屬性和方法與列表框相同,比如要訪問(wèn)控件的項(xiàng)目,可以用List數(shù)組;控件的當(dāng)前選項(xiàng)由控件的Text屬性確定;AddItem方法將項(xiàng)目加人到組合框的項(xiàng)目列表中;RemoveItem方法將組合框中選定的項(xiàng)目刪除;Sorted屬性決定組合框中的項(xiàng)目是否排序等。4.7.2應(yīng)用舉例【例4.7】修改“簡(jiǎn)單記事本”程序,要求使用組合框來(lái)實(shí)現(xiàn)選擇、添加、刪除字號(hào)。分析:實(shí)現(xiàn)此要求,用組合框替換例4.6程序中的列表框即可。新項(xiàng)目可以在組合框中的文本框里輸入,因此,只需用AddItem方法把組合框的Text屬性值加入到列表中,即可實(shí)現(xiàn)“添加”功能。(如圖4-11所示)(a)運(yùn)行后輸入內(nèi)容(b)選擇字號(hào)(c)添加、刪除字號(hào)圖4-11用組合框選擇、添加、刪除字號(hào)第4章常用控件與窗體2022/12/174.7組合框(ComboBox)
(2)其他屬性與方法(4.7組合框(ComboBox)
(1)界面設(shè)計(jì)打開上節(jié)保存的“簡(jiǎn)單記事本”工程,刪除原有的列表框和相應(yīng)代碼,新建一個(gè)組合框。設(shè)置組合框的List屬性首項(xiàng)為“10”,第二項(xiàng)為“12”;設(shè)置Text屬性值為“10”。(2)編寫代碼依次雙擊組合框和三個(gè)命令按鈕,輸入、修改代碼如下:PrivateSubCombo1_Click() '單擊組合框中列表項(xiàng)時(shí)觸發(fā)
Text1.FontSize=Combo1.Text '使文本字體大小為列表框中所選字號(hào)EndSubPrivateSubCommand1_Click() '單擊"添加"按鈕
Combo1.AddItemCombo1.Text '把用戶在組合框中輸入的字號(hào)添加到列表中EndSubPrivateSubCommand2_Click() '單擊"刪除"按鈕
Combo1.RemoveItemCombo1.ListIndex '刪除組合框中所選項(xiàng)目EndSubPrivateSubCommand3_Click() '單擊"清空"按鈕
Combo1.Clear '清空組合框中的所有項(xiàng)目EndSub第4章常用控件與窗體2022/12/174.7組合框(ComboBox)
(1)界面設(shè)計(jì)第4.7組合框(ComboBox)
輸入完成后,按F5鍵運(yùn)行程序。在文本框中輸入任意文本,單擊組合框中的下拉按鈕,點(diǎn)選列表項(xiàng),可以設(shè)置相應(yīng)的字號(hào)。在組合框中輸入字號(hào),單擊“添加”按鈕,列表中將增加所輸入的字號(hào)。選擇某一字號(hào),單擊“刪除”按鈕,會(huì)刪除所選字號(hào)。單擊“清空”按鈕,則清除所有字號(hào)。運(yùn)行無(wú)誤后,請(qǐng)保存工程,以備后用。4.7.3列表框與組合框的區(qū)別(1)選擇方式不同列表框?qū)⒁幌盗械倪x項(xiàng)組合成一個(gè)列表,用戶可以選擇其中的一個(gè)或幾個(gè)選項(xiàng),但不能向列表清單中輸入項(xiàng)目;組合框是綜合文本框和列表框特性而形成的一種控件,用戶可以從列表中選定項(xiàng)目,也能通過(guò)在組合框中輸入文本來(lái)選定項(xiàng)目。(2)形式不同列表框只有一種形式,只能在固定的區(qū)域內(nèi)顯示項(xiàng)目列表;而組合框有三種不同的形式可供選擇,其中的“下拉式組合框”和“下拉式列表框”只顯示文本框和下拉按鈕,通過(guò)對(duì)下拉按鈕的單擊可對(duì)列表進(jìn)行顯示和隱藏。(3)Text屬性的不同列表框的Text屬性值只能通過(guò)選擇列表中的項(xiàng)目來(lái)獲??;而組合框的Text屬性值不僅來(lái)自所選項(xiàng)目,還可以來(lái)自用戶在組合框中輸入的文本。因而,在使用AddItem方法添加項(xiàng)目時(shí),組合框可以利用自身的Text屬性來(lái)獲得用戶輸入的文本;而列表框只能借助于InputBox函數(shù)或文本框控件來(lái)得到項(xiàng)目文本。第4章常用控件與窗體2022/12/174.7組合框(ComboBox)
輸入完成后,按4.8框架(Frame)
框架控件(Frame)可以用來(lái)對(duì)其他控件進(jìn)行分組,以便于用戶識(shí)別。使用框架控件可以將一個(gè)窗體中的各種功能進(jìn)一步進(jìn)行分類,例如,用框架將多組單選鈕分隔開。框架和窗體、圖片框一樣都是容器。所謂容器,就是可以在其上放置其它控件對(duì)象的一種對(duì)象。容器內(nèi)所有控件成為一個(gè)組合,隨容器一起移動(dòng)、顯示、消失和屏蔽。借助框架的“容器”功能,可以在一個(gè)窗體中建立多個(gè)相互獨(dú)立的單選鈕組。在一個(gè)容器中的多個(gè)單選鈕形成一個(gè)單選鈕組,在此容器中,只能有一個(gè)單選鈕處于選中狀態(tài),并且會(huì)保持其選中狀態(tài)一直到容器中其他單選鈕被選中。因此,可以在窗體上建立多個(gè)框架,在每個(gè)框架中建立單選鈕,從而形成多個(gè)單選鈕組,對(duì)一組單選鈕的操作不會(huì)影響其它組的單選鈕。(應(yīng)用實(shí)例可參考圖4-12)在窗體上創(chuàng)建框架及其內(nèi)部控件時(shí),應(yīng)先添加框架控件,然后單擊工具箱上的控件,用“+”指針在框架中以拖拽的方式添加控件。不能用雙擊的方式向框架中添加控件,也不能先畫出控件再添加框架。如果要用框架將窗體上現(xiàn)有的控件進(jìn)行分組,則應(yīng)該先選定控件,使用剪切命令(或按快捷鍵Ctrl+X)進(jìn)行剪切,然后選定框架,使用粘貼命令(或按快捷鍵Ctrl+V)將控件粘貼到框架中。第4章常用控件與窗體2022/12/174.8框架(Frame)
框架控件(F4.8框架(Frame)
框架控件(Frame)可以用來(lái)對(duì)其他控件進(jìn)行分組,以便于用戶識(shí)別。使用框架控件可以將一個(gè)窗體中的各種功能進(jìn)一步進(jìn)行分類,例如,用框架將多組單選鈕分隔開??蚣芎痛绑w、圖片框一樣都是容器。所謂容器,就是可以在其上放置其它控件對(duì)象的一種對(duì)象。容器內(nèi)所有控件成為一個(gè)組合,隨容器一起移動(dòng)、顯示、消失和屏蔽。借助框架的“容器”功能,可以在一個(gè)窗體中建立多個(gè)相互獨(dú)立的單選鈕組。在一個(gè)容器中的多個(gè)單選鈕形成一個(gè)單選鈕組,在此容器中,只能有一個(gè)單選鈕處于選中狀態(tài),并且會(huì)保持其選中狀態(tài)一直到容器中其他單選鈕被選中。因此,可以在窗體上建立多個(gè)框架,在每個(gè)框架中建立單選鈕,從而形成多個(gè)單選鈕組,對(duì)一組單選鈕的操作不會(huì)影響其它組的單選鈕。(應(yīng)用實(shí)例可參考圖4-12)在窗體上創(chuàng)建框架及其內(nèi)部控件時(shí),應(yīng)先添加框架控件,然后單擊工具箱上的控件,用“+”指針在框架中以拖拽的方式添加控件。不能用雙擊的方式向框架中添加控件,也不能先畫出控件再添加框架。如果要用框架將窗體上現(xiàn)有的控件進(jìn)行分組,則應(yīng)該先選定控件,使用剪切命令(或按快捷鍵Ctrl+X)進(jìn)行剪切,然后選定框架,使用粘貼命令(或按快捷鍵Ctrl+V)將控件粘貼到框架中。第4章常用控件與窗體2022/12/174.8框架(Frame)
框架控件(F4.8框架(Frame)
4.8.1屬性(1)Caption屬性設(shè)置框架的標(biāo)題,顯示在框架的左上角,用于注明框架的用途。如果此值為空值,則框架顯示為封閉的矩形框。(2)Enabled屬性決定框架中的控件是否可用,可選值有True和False,默認(rèn)值為True。True: 框架內(nèi)控件可以響應(yīng)用戶的操作,框架標(biāo)題顏色為ForeColor中的顏色。False:框架內(nèi)的控件不響應(yīng)用戶的操作,框架標(biāo)題顏色變?yōu)榛疑4.8.2應(yīng)用舉例
【例4.8】修改“簡(jiǎn)單記事本”程序,要求能選擇字號(hào),可選擇正常顯示還是反白顯示。分析:反白顯示即黑底白字顯示文本,正常顯示是白底黑字,可以通過(guò)設(shè)置文本框的BackColor和ForeColor屬性來(lái)實(shí)現(xiàn)。使用兩個(gè)框架,建立兩組互不干擾的單選鈕組,可分別實(shí)現(xiàn)對(duì)字號(hào)和顯示方式的選擇。(如圖4-12所示)第4章常用控件與窗體2022/12/174.8框架(Frame)
4.8.1屬性第44.8框架(Frame)
(1)界面設(shè)計(jì)打開上節(jié)保存的“簡(jiǎn)單記事本”工程,刪除原有的組合框和相應(yīng)代碼。新建二個(gè)框架。在每個(gè)框架中分別“畫”出二個(gè)單選鈕。二個(gè)框架和四個(gè)單選鈕的大小、位置和Caption屬性可參考圖4-12。設(shè)置標(biāo)題為“10號(hào)”和“正?!钡膯芜x鈕的Value屬性值為True,使他們處于選中狀態(tài)。(a)運(yùn)行后輸入內(nèi)容(b)選擇字號(hào)(c)選擇反白顯示圖4-12用組合框選擇、添加、刪除字號(hào)第4章常用控件與窗體2022/12/174.8框架(Frame)
(1)界面設(shè)計(jì)(a)運(yùn)行后輸4.8框架(Frame)
(2)編寫代碼依次雙擊四個(gè)單選鈕,輸入代碼如下:PrivateSubOption1_Click() '單擊“10號(hào)”單選鈕
Text1.FontSize=10 '字體大小為10號(hào)。EndSubPrivateSubOption2_Click() '單擊“12號(hào)”單選鈕
Text1.FontSize=12 '字體大小為12號(hào)。EndSubPrivateSubOption3_Click() '單擊“正?!眴芜x鈕
Text1.BackColor=vbWhite '白底
Text1.ForeColor=vbBlack '黑字EndSub ‘vbWhite及vbBlack是VB中的Color常數(shù),分別代表白色和黑色。PrivateSubOption4_Click() '單擊“反白”單選鈕
Text1.BackColor=vbBlack '黑底
Text1.ForeColor=vbWhite '白字EndSub
輸入完成后,按F5鍵運(yùn)行程序。在文本框中輸入任意文本,單擊“12號(hào)”單選鈕,文本字號(hào)變?yōu)?2號(hào);單擊“反白”按鈕,文本以黑底白字的形式顯示。在設(shè)置時(shí)可以看到,兩個(gè)框架中的單選鈕互不干涉,對(duì)單選鈕的點(diǎn)選只能影響到本框架內(nèi)的另一單選鈕。運(yùn)行無(wú)誤后,請(qǐng)保存工程,以備后用。第4章常用控件與窗體2022/12/174.8框架(Frame)
(2)編寫代碼第4章4.9多窗體(Multi-Form)
多窗體(Multi-Form)是指一個(gè)應(yīng)用程序中有多個(gè)并列的普通窗體,每個(gè)窗體都可以有自己的界面和代碼,完成不同的功能。在前面例題的程序中,都只使用了一個(gè)窗體。但在實(shí)際應(yīng)用中,特別是對(duì)于較復(fù)雜的應(yīng)用程序,單一窗體往往不能滿足需要,所以常用多窗體來(lái)解決問(wèn)題。即使在我們的上機(jī)實(shí)踐中,也可以借助多窗體來(lái)實(shí)現(xiàn)在一個(gè)工程中編寫、查看多個(gè)例題或練習(xí)。4.9.1操作(1)添加窗體通過(guò)“工程”菜單中的“添加窗體”命令可以在當(dāng)前工程中添加窗體,步驟如下:(a)單擊“工程”菜單中的“添加窗體”命令,打開“添加窗體”對(duì)話框。(b)“添加窗體”對(duì)話中框中有“新建”和“現(xiàn)存”兩個(gè)選項(xiàng)卡,可實(shí)現(xiàn)不同的操作。在“新建”選項(xiàng)卡中:選擇“窗體”項(xiàng),單擊“打開”按鈕,可以建立一個(gè)新的窗體。在“現(xiàn)存”選項(xiàng)卡中:選擇并雙擊現(xiàn)有的窗體文件,可以把此窗體添加到當(dāng)前工程中。第4章常用控件與窗體2022/12/174.9多窗體(Multi-Form)
多窗4.9多窗體(Multi-Form)
(c)如操作無(wú)誤,“工程資源管理器”窗口會(huì)顯示已添加窗體的名稱,添加操作完成。因?yàn)槊恳粋€(gè)窗體都是以后綴名為“.frm”的文件單獨(dú)保存的,所以能夠把已有的窗體添加到當(dāng)前工程中,但是在添加時(shí),有二個(gè)問(wèn)題請(qǐng)注意:首先,要添加進(jìn)來(lái)的窗體與工程中已有窗體的Name屬性不能相同,否則添加不能成功;其次,添加進(jìn)來(lái)的現(xiàn)存窗體可能屬于另一工程或由多個(gè)工程共享,對(duì)此窗體的更改,會(huì)影響到共享該窗體的所有工程。(2)切換窗體在工程窗口(工程資源管理器窗口)中通過(guò)點(diǎn)擊窗體名可實(shí)現(xiàn)切換窗體。有多個(gè)窗體的工程中,單擊工程窗口中某個(gè)窗體的名稱,會(huì)使此窗體成為當(dāng)前窗體,屬性窗口中會(huì)顯示此窗體的屬性,執(zhí)行針對(duì)窗體的操作命令也會(huì)作用于此窗體;雙擊工程窗口中某個(gè)窗體的名稱,在切換窗體的同時(shí),還會(huì)激活此窗體的對(duì)象窗口,使之成為當(dāng)前窗口。當(dāng)前窗體的名稱會(huì)在工程窗口中以藍(lán)底或灰底顯示。例如,在一個(gè)有三個(gè)窗體的工程中,單擊名稱為Form2的窗體,會(huì)使窗體Form2成為當(dāng)前窗體,如圖4-12所示。圖中顯示的Form1、Form2、Form3是三個(gè)窗體名稱(即Name屬性值),名稱后面的L4_9.FRM、L4_1.FRM、L4_2.FRM是窗體文件的文件名。第4章常用控件與窗體2022/12/174.9多窗體(Multi-Form)
(c)如操作無(wú)誤,4.9多窗體(Multi-Form)
圖4-13工程窗口(3)刪除窗體工程窗口中右鍵單擊要?jiǎng)h除窗體的名稱,在右鍵菜單中選擇“移除”,即可刪除此窗體。(4)保存窗體首次保存多窗體工程時(shí),VB會(huì)連續(xù)彈出多個(gè)保存對(duì)話框,提示為每個(gè)窗體起一個(gè)文件名,以便作為窗體文件單獨(dú)保存,默認(rèn)文件名為Form1.frm、Form2.frm到FormN.frm;最后后提示保存后綴為“.vbp”的工程文件。若要只保存某個(gè)窗體,在工程窗口中右鍵單擊要保存窗體的名稱,在彈出的右鍵菜單中選擇“保存窗體”或“窗體另存為”即可。第4章常用控件與窗體2022/12/174.9多窗體(Multi-Form)
圖4-13工程4.9多窗體(Multi-Form)
4.9.2語(yǔ)句與方法在多窗體中,經(jīng)常需要打開、顯示、隱藏、關(guān)閉指定的窗體,這此功能可以通過(guò)相應(yīng)的語(yǔ)句和方法來(lái)實(shí)現(xiàn)。程序運(yùn)行時(shí),啟動(dòng)窗體先要被裝入內(nèi)存(Load),然后才能在屏幕上顯示(Show)。對(duì)于其他窗體,可以執(zhí)行Load語(yǔ)句將其裝入內(nèi)存,使用Show方法進(jìn)行顯示;暫時(shí)不需要的窗體,能夠用Hide方法隱藏起來(lái);對(duì)于不再使用的窗體,可以執(zhí)行Unload語(yǔ)句將其在內(nèi)存中卸載。(1)Load語(yǔ)句格式:Load窗體名稱功能:把指定的窗體裝入內(nèi)存。說(shuō)明:“窗體名稱”是窗體的Name屬性。執(zhí)行Load語(yǔ)句后,可以引用窗體中的控件及各種屬性,但此時(shí)窗體沒(méi)有顯示出來(lái)。要顯示窗體,需要使用Show方法。(2)Show方法格式:[窗體名稱.]Show[模式]功能:顯示指定的窗體。說(shuō)明:[窗體名稱.]項(xiàng)可以省略,省略此項(xiàng)時(shí),表示對(duì)當(dāng)前窗體進(jìn)行顯示。第4章常用控件與窗體2022/12/174.9多窗體(Multi-Form)
4.9.2語(yǔ)句4.9多窗體(Multi-Form)
[模式]選項(xiàng)用來(lái)確定窗體的狀態(tài),可選值為0(缺省值)和1,含義如下:0:窗體為“非模式型”,可以對(duì)本窗體或其他窗體進(jìn)行操作,如查找、替換對(duì)話框。1:窗體為“模式型”,只能對(duì)本窗體而無(wú)法對(duì)其他窗體進(jìn)行操作,如打開、保存對(duì)話框。在[模式]項(xiàng)取值為1時(shí),本程序內(nèi)的其他窗體不能響應(yīng)對(duì)用戶的操作,只有在關(guān)閉該窗體后才能使用這些窗體。Show方法兼有裝入內(nèi)存和顯示窗體兩種功能。在執(zhí)行Show時(shí),如果窗體不在內(nèi)存中,則Show方法會(huì)自動(dòng)把窗體裝入內(nèi)存,然后再進(jìn)行顯示。(3)Hide方法格式:[窗體名稱.]Hide功能:隱藏指定窗體。說(shuō)明:使用后Hide方法,雖然窗體不顯示在屏幕上,但其仍在內(nèi)存中。(4)Unload語(yǔ)句格式:Unload窗體名稱功能:清除內(nèi)存中指定的窗體。說(shuō)明:執(zhí)行Hide方法和Unload語(yǔ)句后,窗體都會(huì)從屏幕上消失,但有所區(qū)別:第4章常用控件與窗體2022/12/174.9多窗體(Multi-Form)
[模式]選項(xiàng)用來(lái)確4.9多窗體(Multi-Form)
使用Hide方法后,指定窗體仍在內(nèi)存中,使用Show方法時(shí),此窗體會(huì)迅速顯示出來(lái)。此方法雖占用內(nèi)存,但可以快速的再次顯示窗體,常用于隱藏暫時(shí)不需要的窗體。執(zhí)行Unload語(yǔ)句后,指定窗體已不在內(nèi)存中,使用Show方法時(shí),還要把窗體從新裝入內(nèi)存再進(jìn)行顯示。此語(yǔ)句節(jié)省內(nèi)存,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國(guó)校園安防行業(yè)發(fā)展?jié)摿巴顿Y運(yùn)作模式分析報(bào)告
- 2024-2030年中國(guó)林紙一體化行業(yè)供需分析及發(fā)展規(guī)劃研究報(bào)告
- 部編版一年級(jí)下冊(cè)語(yǔ)文期末檢測(cè)試卷帶答案
- 2024-2030年中國(guó)有機(jī)醬油市場(chǎng)競(jìng)爭(zhēng)策略及發(fā)展?jié)摿ρ芯繄?bào)告
- 2024-2030年中國(guó)曲軸行業(yè)發(fā)展分析及投資戰(zhàn)略研究報(bào)告版
- 2024-2030年中國(guó)智能手環(huán)行業(yè)競(jìng)爭(zhēng)格局及投資趨勢(shì)分析報(bào)告
- 教育行業(yè)數(shù)字化轉(zhuǎn)型SWOT分析
- 2024-2030年中國(guó)無(wú)機(jī)粉體行業(yè)供需狀況及投資規(guī)劃分析報(bào)告
- 2024-2030年中國(guó)新型城鎮(zhèn)化建設(shè)行業(yè)前景展望投資商業(yè)創(chuàng)新模式分析報(bào)告
- 2024-2030年中國(guó)教學(xué)用無(wú)線擴(kuò)音行業(yè)市場(chǎng)運(yùn)營(yíng)模式及未來(lái)發(fā)展動(dòng)向預(yù)測(cè)報(bào)告
- 期中試卷(試題)2024-2025學(xué)年數(shù)學(xué)六年級(jí)上冊(cè)北師大版
- 中國(guó)聯(lián)合網(wǎng)絡(luò)通信有限公司招聘筆試題庫(kù)2024
- 院內(nèi)突發(fā)心跳呼吸驟停、昏迷、跌倒事件應(yīng)急預(yù)案及程序
- MOOC 營(yíng)銷管理-電子科技大學(xué) 中國(guó)大學(xué)慕課答案
- 漢語(yǔ)教師志愿者培訓(xùn)大綱
- 護(hù)理導(dǎo)論 評(píng)判性思維
- SPC培訓(xùn)資料_2
- 學(xué)習(xí)適應(yīng)性測(cè)驗(yàn)(AAT)
- ADS創(chuàng)建自己的元件庫(kù)
- MATLAB仿真三相橋式整流電路(詳細(xì)完美)
- 2019年重慶普通高中會(huì)考通用技術(shù)真題及答案
評(píng)論
0/150
提交評(píng)論