




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第6章常用內(nèi)部控件
6.1選擇類控件與框架
6.2列表類控件
6.3圖像顯示控件
6.4定時器
6.5滾動條
結(jié)束第6章常用內(nèi)部控件6.1選擇類控件與框架結(jié)束6.1選擇類控件與框架6.1.1單選按鈕6.1.2復(fù)選框6.1.3框架
返回首頁6.1選擇類控件與框架6.1.1單選按鈕返回首頁6.1.1單選按鈕(1)
單選按鈕(OptionButton)又稱單選鈕,它的作用是顯示一個可以表示“打開/關(guān)閉”的選項(xiàng),使用戶在多個選項(xiàng)中只能選擇其一。例如學(xué)生性別的輸入,代表性別的“男”、“女”是相互排斥的,故可以使用兩個單選按鈕實(shí)現(xiàn),如圖6.1所示。6.1.1單選按鈕(1)單選按鈕(OptionButt6.1.1單選按鈕(2)
1.常用屬性
(1)Value屬性單選按鈕的屬性除了一些通用屬性如Caption、Enabled、Visible、Font、ForeColor、BackColor等外,主要是Value屬性。該屬性表示單選按鈕被選中(True)或不被選中的狀態(tài)(False)。在程序運(yùn)行時,單擊單選按鈕,使其單選框中出現(xiàn)一個黑色圓點(diǎn),就表示選中了該項(xiàng)。
6.1.1單選按鈕(2)1.常用屬性6.1.1單選按鈕(3)(2)Style屬性單選按鈕的Style屬性用來設(shè)置控件的外觀。當(dāng)值為0時,控件顯示如圖6.1所示的標(biāo)準(zhǔn)樣式;當(dāng)值為1時,控件顯示如圖6.2所示的圖形樣式,其外觀類似于命令按鈕。
(3)Picture、DownPicture和DisabledPicture屬性
當(dāng)Style屬性為1時,這三個屬性有效。其中:Picture屬性返回或設(shè)置控件中要顯示的圖像;DownPicture屬性返回或設(shè)置控件被選中后(即單擊后)要顯示的圖像;DisabledPicture屬性返回或設(shè)置控件無效時顯示的圖像,即控件的Enabled屬性為False時控件的外觀圖像。6.1.1單選按鈕(3)(2)Style屬性(3)Pi6.1.1單選按鈕(4)
上述三個屬性可以在設(shè)計(jì)階段通過“屬性窗口”直接設(shè)置為某個圖像文件,也可以在運(yùn)行期間由函數(shù)LoadPicture加載。在圖6.3中,單選按鈕的Style已經(jīng)設(shè)置為1,左圖表示設(shè)置了Picture屬性的情況,而右圖表示同時設(shè)置了DownPicture屬性的情況。圖6.3單選按鈕的Picture和DownPicture屬性
6.1.1單選按鈕(4)上述三個屬性可以在設(shè)計(jì)階段通過6.1.1單選按鈕(5)
2.常用事件單選按鈕可以識別的主要事件是單擊(Click)事件。【例6.1】控制文本框中文本的字體變化。字體可以使用“宋體”、“隸書”和“幼圓”三者之一。
本例通過三個單選按鈕選擇字體名稱,屬性設(shè)置見表6.1。其中,將文本框Text1的Multiline屬性設(shè)為True的目的是使其允許多行顯示。此時,在屬性窗口設(shè)置文本框的Text屬性時,須通過組合鍵Ctrl+回車來分行輸入文本內(nèi)容。程序的運(yùn)行結(jié)果如圖6.4。6.1.1單選按鈕(5)2.常用事件本例通過三代碼如下:PrivateSubcmdOk_Click()'單擊“應(yīng)用”按鈕
IfoptFont1=TrueThenText1.FontName="宋體"
IfoptFont2=TrueThenText1.FontName="隸書"
IfoptFont3=TrueThenText1.FontName="幼圓"EndSubPrivateSubForm_Load()'窗體加載
Text1.FontName="宋體"
Text1.FontSize=12optFont1=TrueEndSub返回首頁返回本節(jié)代碼如下:返回首頁返回本節(jié)6.1.2復(fù)選框
(1)
復(fù)選框(CheckBox)也稱為選擇框、檢查框,通常用于提供Yes/No或True/False的邏輯選擇。一個復(fù)選框主要有兩種狀態(tài):選中狀態(tài),或稱打開狀態(tài),復(fù)選框上出現(xiàn)“√”標(biāo)志;未選中狀態(tài),或稱關(guān)閉狀態(tài),不出現(xiàn)“√”標(biāo)志。復(fù)選框的屬性和單選按鈕的屬性基本類似。其主要屬性是Value屬性,Value屬性指示其所處的狀態(tài):0表示沒有選中,1表示該項(xiàng)選中,2表示禁止使用。復(fù)選框可以識別的主要事件是單擊(Click)事件。程序運(yùn)行中,當(dāng)用戶單擊復(fù)選框時將觸發(fā)其Click事件,每單擊一次其狀態(tài)就在“沒有選中”和“選中”之間變換一次,相應(yīng)地,其Value屬性的值在0和1之間變換。因此,當(dāng)發(fā)生了Click事件時,程序要判斷Value屬性的值,以便確定是否選中。6.1.2復(fù)選框(1)復(fù)選框(CheckBox)也稱6.1.2復(fù)選框
(2)
需要注意的是,復(fù)選框與單選按鈕都可表示一種狀態(tài),因此兩者有相似之處,但有本質(zhì)的區(qū)別:一組復(fù)選框中的多個項(xiàng)目是相互“兼容”的,一組單選按鈕中的多個項(xiàng)目卻是相互“排斥”的?!纠?.2】用復(fù)選框控制文本是否加下劃線和斜體顯示。在窗體上添加一個文本框,兩個復(fù)選框。屬性設(shè)置如表6.2,運(yùn)行界面如圖6.5所示。6.1.2復(fù)選框(2)需要注意的是,復(fù)選框與單選按鈕圖6.5例6.2的運(yùn)行結(jié)果
圖6.5例6.2的運(yùn)行結(jié)果為兩個復(fù)選框的單擊和窗體加載事件編寫如下事件過程:PrivateSubCheck1_Click()'單擊“下劃線”復(fù)選框
IfCheck1.Value=1ThenText1.FontUnderline=True'加下劃線
ElseText1.FontUnderline=FalseEndIfEndSubPrivateSubCheck2_Click()'單擊“斜體”復(fù)選框
IfCheck2.Value=1ThenText1.FontItalic=True'斜體
ElseText1.FontItalic=FalseEndIfEndSubPrivateSubForm_Load()Text1.FontSize=18EndSub為兩個復(fù)選框的單擊和窗體加載事件編寫如下事件過程:6.1.2復(fù)選框
(3)
【例6.3】用戶信息的收集是一類常見的應(yīng)用程序。本例要求編寫程序收集用戶選擇的專業(yè)類別和選修課程。其中,可選擇的專業(yè)類別有“計(jì)算機(jī)專業(yè)”和“機(jī)電專業(yè)”,可選擇的課程有“高等數(shù)學(xué)”、“大學(xué)英語”和“程序設(shè)計(jì)”。顯然,本例中專業(yè)的所屬類別之間具有排斥性,可以用單選按鈕實(shí)現(xiàn);而選修課程之間具有兼容性,應(yīng)該用復(fù)選框?qū)崿F(xiàn)。屬性設(shè)置如表6.3,其中將Option1的Value屬性設(shè)為True,表示初始時默認(rèn)選中“計(jì)算機(jī)專業(yè)”。運(yùn)行結(jié)果如圖6.6。6.1.2復(fù)選框(3)【例6.3】用戶信息的收集是一表6.3例6.3的對象和屬性設(shè)置
圖6.6例6.3的運(yùn)行結(jié)果
表6.3例6.3的對象和屬性設(shè)置圖6.6例6.3的代碼如下,其中的Chr(13)、Chr(10)是產(chǎn)生回車換行(亦可用VB常數(shù)vbCrLf);為了簡化代碼,將所收集到的用戶選擇信息用MsgBox函數(shù)顯示出來。PrivateSubCommand1_Click()DimstrAsString,linkAsStringlink=Chr(13)&Chr(10)IfOption1.Value=TrueThenstr="計(jì)算機(jī)專業(yè)"
Elsestr="機(jī)電專業(yè)"
EndIfstr=str&"選擇了:"&linkIfCheck1.Value=1Thenstr=str&link&"高等數(shù)學(xué)"
IfCheck2.Value=1Thenstr=str&link&"大學(xué)英語"
IfCheck3.Value=1Thenstr=str&link&"程序設(shè)計(jì)"
MsgBoxstr,vbYesNo,"采集信息"EndSub代碼如下,其中的Chr(13)、Chr(10)是產(chǎn)生回車換行6.1.3框架(1)
框架(Frame)是一個容器,可以在其上放置其它控件對象,主要作用是能夠把一些控件組織在一起形成控件組。分組的用途有二:一是單純地對其它控件分組,使功能上密切相關(guān)的控件在一個框定的區(qū)域內(nèi),以便用戶分類識別;二是用于為單選按鈕分組。為了實(shí)現(xiàn)分組應(yīng)首先畫出框架,然后在框架內(nèi)畫出所需的控件。如果要將已經(jīng)存在的若干控件放在某個框架中,可以先選擇這些控件,將它們剪切到剪貼板上,然后選定框架控件并把它們粘貼到框架上。位于一個框架內(nèi)的控件會隨框架整體移動、隱藏、刪除。6.1.3框架(1)框架(Frame)是一個容器6.1.3框架(2)
框架的常用屬性有:Caption屬性(設(shè)置框架標(biāo)題,位于框架的左上角)、Enabled屬性(是否有效)、Visible屬性(是否可見)。當(dāng)框架的Enabled屬性為False時,框架和框架內(nèi)的控件均呈灰色,表示不可使用,相當(dāng)于整體失效;當(dāng)框架的Visible屬性為False時,框架及其中的控件均不可見,相當(dāng)于整體隱藏。【例6.4】利用框架的分組功能,同時設(shè)置文本框的字體、大小、顏色。本例使用了三個框架,每個框架內(nèi)均有三個單選按鈕。在一個框架內(nèi)的三個單選按鈕為一組,它們是相互“排斥”的,但三個框架之間是相互“兼容”的。屬性設(shè)置見表6.4。運(yùn)行結(jié)果如圖6.8所示。6.1.3框架(2)框架的常用屬性有:Capti表6.4例6.4的對象和屬性設(shè)置
圖6.8
例6.4運(yùn)行結(jié)果表6.4例6.4的對象和屬性設(shè)置圖6.8程序代碼如下:PrivateSubcmdNo_Click()'單擊“恢復(fù)”按鈕
Form_Load'執(zhí)行Form_Load過程EndSubPrivateSubcmdOk_Click()'單擊“應(yīng)用”按鈕'確定字體名
IfoptFont1=TrueThenText1.FontName="宋體"
IfoptFont2=TrueThenText1.FontName="隸書"
IfoptFont3=TrueThenText1.FontName="幼圓"'確定字體大小
IfoptSize1=TrueThenText1.FontSize=12IfoptSize2=TrueThenText1.FontSize=14IfoptSize3=TrueThenText1.FontSize=20程序代碼如下:
'確定顏色
IfoptColor1=TrueThenText1.ForeColor=vbBlueIfoptColor2=TrueThenText1.ForeColor=vbRedIfoptColor3=TrueThenText1.ForeColor=vbGreenEndSubPrivateSubForm_Load()
'窗體加載
optFont1=TrueText1.FontName="宋體"
Text1.FontSize=12Text1.ForeColor=vbBlackEndSub返回首頁返回本節(jié)'確定顏色返回首頁返回本節(jié)6.2列表類控件
6.2.1列表框6.2.2組合框返回首頁6.2列表類控件6.2.1列表框返回首頁6.2.1列表框(1)
1.列表框的功能列表框(ListBox)顯示由若干項(xiàng)目組成的列表,用戶可從中選擇一個或多個項(xiàng)目。所選擇的項(xiàng)目被突出顯示。如果列表框中的項(xiàng)目過多,則系統(tǒng)會自動增加一個垂直滾動條,如圖6.9所示。圖6.9列表框示意圖
6.2.1列表框(1)1.列表框的功能圖6.96.2.1列表框(2)
列表框中的項(xiàng)目可以在設(shè)計(jì)狀態(tài)下通過屬性窗口設(shè)定,也可以在運(yùn)行狀態(tài)下由程序加入。前者使用列表框的List屬性,一個項(xiàng)目為一行,且以組合鍵Ctrl+回車進(jìn)行分行,如圖6.10所示;后者使用列表框的AddItem方法。
列表框中的項(xiàng)目列表是一個整體,它實(shí)際上是一個數(shù)組。列表框中的每個項(xiàng)目各占一行,所有項(xiàng)目構(gòu)成項(xiàng)目列表。列表中的每一項(xiàng)(行)都有自己的位置,用“索引號”來表示(在數(shù)組中稱為下標(biāo))。列表中第一項(xiàng)的索引號為0,第二項(xiàng)為1,依此類推。6.2.1列表框(2)列表框中的項(xiàng)目可以在設(shè)計(jì)狀態(tài)下6.2.1列表框(3)
2.常用屬性(1)Text屬性
在程序運(yùn)行期間,獲取列表框中當(dāng)前選擇的項(xiàng)目內(nèi)容。該屬性在設(shè)計(jì)時不可用。例如,將列表框List1中所選擇的項(xiàng)目內(nèi)容放入文本框Text1中:Text1.Text=List1.Text(2)ListCount和List屬性ListCount屬性返回列表框中已有項(xiàng)目的總數(shù)目,它是一個設(shè)計(jì)時無效、運(yùn)行時只讀的屬性,即在程序運(yùn)行時,通過該屬性可以獲取項(xiàng)目總數(shù),但不能直接設(shè)置該屬性的值,其值的變化是由其他操作自動決定的。語法格式為:列表框?qū)ο?ListCount6.2.1列表框(3)2.常用屬性6.2.1列表框(4)
List屬性用來訪問列表框中的全部項(xiàng)目內(nèi)容。該屬性實(shí)際是一個字符串?dāng)?shù)組,數(shù)組中的每個元素對應(yīng)著列表框中的一個項(xiàng)目。語法格式為:
列表框?qū)ο?List(索引號)
其中的參數(shù)“索引號”指明數(shù)組中的元素下標(biāo),即第幾個元素,它的取值從0開始,到項(xiàng)目數(shù)ListCount-1止。如果某個列表框含有5個項(xiàng)目,則“索引號”參數(shù)的取值范圍從0到4。通過指定不同的索引值,可以訪問列表的全部項(xiàng)目。例如,將列表框List1中的第3項(xiàng)復(fù)制到文本框Text1中:
Text1.Text=List1.List(2)6.2.1列表框(4)List屬性用來訪問列表框中的6.2.1列表框(5)(3)ListIndex屬性返回當(dāng)前已選定項(xiàng)目的位置(索引)號。未選定項(xiàng)目時,返回的ListIndex值為-1。該屬性只在運(yùn)行時可用。當(dāng)單擊列表框中的一個項(xiàng)目后,項(xiàng)目的索引號(下標(biāo))便存儲在ListIndex屬性中。因此,若ListIndex值不是-1,則以下語句可顯示當(dāng)前選定的項(xiàng)目:PrintList1.List(List1.ListIndex)與
PrintList1.Text等效反之,若對該屬性賦值則可選定某一項(xiàng)目。例如:List1.ListIndex=0
'選定列表中的第一項(xiàng)6.2.1列表框(5)(3)ListIndex屬性6.2.1列表框(6)(4)Selected屬性該屬性用來設(shè)置或返回列表框中某項(xiàng)目的選擇狀態(tài)。Selected屬性也是一個數(shù)組,每個數(shù)組元素與列表框中的一個項(xiàng)目相對應(yīng),用法也和List屬性類似。不同的是,Selected屬性數(shù)組取邏輯值True、False。若為True則表示相應(yīng)的項(xiàng)目被選擇,若為False則表示相應(yīng)的項(xiàng)目沒有被選擇。例如,對列表框List1中的第3項(xiàng)而言,如果單擊該項(xiàng)目使之被選定,則List1.Selected(2)的值就會等于True;如果執(zhí)行語句List1.Selected(2)=True,則相當(dāng)于選擇第3項(xiàng),與List1.ListIndex=2
等效。6.2.1列表框(6)(4)Selected屬性6.2.1列表框(7)(5)Sorted和Style屬性
Sorted屬性確定列表框中的項(xiàng)目是否排序。其值設(shè)置為False(默認(rèn))時項(xiàng)目不排序,若為True則項(xiàng)目按照字母升序排列(不區(qū)分大小寫)。
Style屬性確定列表框的樣式。取值為0(默認(rèn)值)和1,如圖6.11所示。這兩個屬性只能在設(shè)計(jì)時設(shè)置。
(6)Columns屬性
使用Columns屬性可以創(chuàng)建多列列表框。
默認(rèn)情況下,列表框是一種單列列表框,我們通常使用的也是單列列表框,此時Columns=0,并具有垂直滾動條。當(dāng)希望使用多列列表框時,便可以設(shè)置Columns為大于0的值,表示具有若干列和水平滾動條。Columns=0時和Columns=2時的列表框如圖6.12所示。6.2.1列表框(7)(5)Sorted和Style屬性圖6.11列表框的樣式圖6.12列表框的Columns屬性
圖6.11列表框的樣式圖6.12列表框的C6.2.1列表框(8)(7)MultiSelect屬性MultiSelect屬性的默認(rèn)取值為0,表示列表框是單選列表框,一次只能選擇一項(xiàng)。若將MultiSelect屬性值設(shè)為1或2,則表示列表框是復(fù)選列表框,即可以在列表框的列表中選擇多個項(xiàng)目。值為1時,用鼠標(biāo)單擊或按空格鍵進(jìn)行復(fù)選;為2時類似于“資源管理器”,可用Shift+鼠標(biāo)單擊(連續(xù)多選)、Ctrl+鼠標(biāo)單擊(不連續(xù)多選)等來進(jìn)行復(fù)選。6.2.1列表框(8)(7)MultiSelect屬性6.2.1列表框(9)
只能進(jìn)行單選的列表框,可以通過ListIndex屬性或Selected屬性判斷所選擇的項(xiàng)目。對于復(fù)選的列表框,所選擇的項(xiàng)目可能有多項(xiàng),我們不能通過ListIndex屬性判斷,一般是通過Selected屬性判斷。例如,以下代碼可以顯示出所有被選擇的項(xiàng)目:Fori=0ToList1.ListCount–1IfList1.Selected(i)=True_ ThenPrintList1.List(i)NextI(8)NewIndex屬性返回最后加入列表框的項(xiàng)目的索引號。該屬性在設(shè)計(jì)時無效,運(yùn)行時只讀。6.2.1列表框(9)只能進(jìn)行單選的列表框,可以通過6.2.1列表框(10)
3.主要方法(1)AddItem方法AddItem方法用來向列表框中添加一個項(xiàng)目。語法格式為:列表框?qū)ο?AddItem項(xiàng)目[,索引號]
其中“項(xiàng)目”為字符串表達(dá)式,表示新加項(xiàng)目的內(nèi)容?!八饕枴敝付ㄌ砑?插入)的項(xiàng)目在列表中的位置,省略參數(shù)“索引號”時,添加的項(xiàng)目排列在列表的最后(追加)。若指明索引號,當(dāng)添加了一個項(xiàng)目后,其后項(xiàng)目的位置號自動重排。6.2.1列表框(10)3.主要方法6.2.1列表框(11)例如,將“石家莊”追加到列表框List1中:List1.AddItem"石家莊"又如,如果在列表框List1中選擇了一個項(xiàng)目(可能復(fù)選),則以下代碼可將被選定的項(xiàng)目追加到列表框List2中:Fori=0ToList1.ListCount-1IfList1.Selected(i)ThenList2.AddItemList1.List(i)EndIfNexti6.2.1列表框(11)例如,將“石家莊”追加到列表框L6.2.1列表框(12)(2)RemoveItem方法RemoveItem方法用來從列表框中刪除一個項(xiàng)目。語法格式為:
列表框?qū)ο?RemoveItem索引號
其中“索引號”指定要刪除的項(xiàng)目在列表中的位置。當(dāng)刪除一個項(xiàng)目后,其后項(xiàng)目的位置號也自動重排。例如,刪除列表框List1中的第一項(xiàng):
List1.RemoveItem0(3)Clear方法Clear方法清除列表框中所有項(xiàng)目。語法格式為:
列表框?qū)ο?Clear6.2.1列表框(12)(2)RemoveItem方法6.2.1列表框(13)4.主要事件列表框的主要事件是Click事件和DblClick事件。Click事件在單擊選擇一個項(xiàng)目時被觸發(fā),DblClick事件在雙擊一個項(xiàng)目時被觸發(fā)。注意:如果在Click事件過程中有代碼,則不會觸發(fā)DblClick事件。在通常的操作中,單擊一個項(xiàng)目后再配合一個確認(rèn)按鈕來表示選中;而雙擊一個項(xiàng)目則往往表示直接選中。為達(dá)到此效果,需要為DblClick事件設(shè)置代碼,但不為Click事件設(shè)置代碼,同時使用一個具有“確認(rèn)”功能的命令按鈕,在命令按鈕的代碼中檢查列表框的ListIndex屬性或Selected屬性,以判斷是否有項(xiàng)目被選中以及哪一個項(xiàng)目被選中。6.2.1列表框(13)4.主要事件【例6.5】使用列表框顯示城市名稱,供用戶選擇,當(dāng)單擊“確定”按鈕時,顯示所選擇的城市名稱。當(dāng)雙擊列表框中的項(xiàng)目時,則直接顯示所選擇的城市名稱。屬性設(shè)置如表6.5,運(yùn)行結(jié)果如圖6.13所示。程序代碼如下:PrivateSubcmdOk_Click()'單擊“確定”按鈕顯示所選城市名稱
IfList1.ListIndex<>-1ThenLabel1.Caption=List1.List(List1.ListIndex)ElseLabel1.Caption=""EndIfEndSub'雙擊列表框中的項(xiàng)目,直接顯示所選城市名稱PrivateSubList1_DblClick()Label1.Caption=List1.List(List1.ListIndex)EndSub【例6.5】使用列表框顯示城市名稱,供用戶選擇,當(dāng)單擊“確定【例6.6】設(shè)計(jì)一個選擇購買圖書種類的程序,程序的運(yùn)行結(jié)果如圖6.14所示。
設(shè)計(jì)思路:使用兩個列表框,左邊的列表框List1顯示現(xiàn)有書目,右邊的列表框List2顯示用戶選擇的擬購書目;四個命令按鈕cmdAll、cmdOne、cmdBackAll和cmdBackOne的Caption屬性分別設(shè)為“>>”、“>”、“<<”、“<”,形象地表示購買所有書目、購買選擇的一個書目、退回所有書目、退回選擇的一個書目;另設(shè)兩個標(biāo)簽Label1和Label2,其Caption屬性分別設(shè)為“現(xiàn)有書目”和“擬購書目”;當(dāng)用戶選擇好計(jì)劃購買的書目時,單擊標(biāo)題為“確定”的命令按鈕cmdOk,彈出“購買確認(rèn)”消息框,單擊“是”,執(zhí)行購買操作。返回首頁返回本節(jié)【例6.6】設(shè)計(jì)一個選擇購買圖書種類的程序,程序的運(yùn)行結(jié)果如6.2.2組合框(1)
組合框(ComboBox)控件將文本框和列表框的功能結(jié)合在一起,既具有文本框的輸入功能,又具有列表框的選擇功能。通過組合框,用戶既可輸入文本內(nèi)容,也可從列表中選擇項(xiàng)目。組合框的樣式特點(diǎn)由Style屬性確定。共可設(shè)置三種樣式:Style=0時,稱為下拉式組合框(可編輯輸入,可選擇項(xiàng)目);Style=1時,稱為簡單組合框(可編輯輸入,可選擇項(xiàng)目);Style=2時,稱為下拉式列表框(不可輸入,只可選擇項(xiàng)目)。6.2.2組合框(1)組合框(ComboBox)控件將6.2.2組合框(2)
圖6.15是組合框三種樣式的示意圖。其中,左邊是下拉式組合框展開后的狀態(tài);中間是簡單組合框的實(shí)際狀態(tài);右邊是下拉式列表框展開后的狀態(tài)。
在使用方式上,組合框具有和列表框相似的特征。組合框的主要屬性有Text、List、ListIndex、ListCount和Sorted等,主要方法有AddItem、RemoveItem和Clear。組合框的主要事件是Click事件。當(dāng)Style=1時,還支持DblClick事件。6.2.2組合框(2)圖6.15是組合框三種樣式的示意6.2.2組合框(3)【例6.7】用組合框提供商品類別,用列表框提供產(chǎn)品名稱,設(shè)計(jì)一個產(chǎn)品信息查詢程序。程序的運(yùn)行結(jié)果如圖6.16所示。
圖6.16例6.7的運(yùn)行結(jié)果
6.2.2組合框(3)【例6.7】用組合框提供商品類別,用6.2.2組合框(4)
程序運(yùn)行時,先隱藏標(biāo)簽Label1、命令按鈕cmdReturn,并向組合框Combo1追加項(xiàng)目,見Form_Load事件代碼。當(dāng)單擊命令按鈕cmdShow時,隱藏組合框Combo1、列表框List1以及按鈕cmdReturn和cmdEnd,并顯示標(biāo)簽Label1和按鈕cmdReturn。當(dāng)單擊命令按鈕cmdReturn時,再次隱藏Label1、cmdReturn,并顯示Combo1、List1、cmdShow和cmdEnd。這相當(dāng)于在窗口的同一區(qū)域內(nèi)交替顯示不同的控件,是一種實(shí)用的設(shè)計(jì)技術(shù)。為了獲得較好的視覺效果,設(shè)計(jì)時應(yīng)該對控件的大小、位置等精心安排和調(diào)整。如果需要交替顯示的控件數(shù)目較多,應(yīng)該考慮使用框架。6.2.2組合框(4)程序運(yùn)行時,先隱藏標(biāo)簽Label6.2.2組合框(5)
當(dāng)用戶在組合框中選擇了商品類別時,根據(jù)所選類別填充產(chǎn)品名稱列表框。當(dāng)用戶選擇了列表框中的項(xiàng)目(產(chǎn)品名稱)并單擊【顯示商品信息】按鈕時,根據(jù)用戶在組合框中選擇的類別(家電類、圖書類、體育類),通過標(biāo)簽顯示商品的類別、名稱和價格。試一試:
教材代碼中用于處理控件顯示狀態(tài)的語句行較多,煩瑣且容易出錯。從本程序的功能中可以看出,交替顯示的控件可分為兩組。因此可以將它們分別放在兩個框架(Frame)中,將兩個框架設(shè)置為同樣大小,在設(shè)計(jì)時(或在窗體的Load事件中)將兩個框架的位置重合。這樣,用于處理控件顯示狀態(tài)的代碼只需兩行語句:Frame1.Visible=True'或FalseFrame2.Visible=False
'或True返回首頁返回本節(jié)6.2.2組合框(5)當(dāng)用戶在組合框中選擇了商品類別6.3圖像顯示控件
6.3.1圖片框6.3.2圖像框返回首頁6.3圖像顯示控件6.3.1圖片框返回首頁6.3.1圖片框(1)
圖片框(PictureBox)既可以用來顯示圖像,也可以作為其它控件的容器,起到類似于框架及窗體的作用。它可以使用多種類型的圖形文件:位圖(bitmap,擴(kuò)展名為.bmp)、圖標(biāo)(icon,擴(kuò)展名為.ico)、Windows元文件(metafile,擴(kuò)展名為.wmf)以及JPEG和GIF文件。圖片框還和以前介紹的窗體一樣,支持各種繪圖方法。6.3.1圖片框(1)圖片框(PictureBox)6.3.1圖片框(2)1.主要屬性(1)Picture屬性設(shè)置要顯示的圖形,支持bmp、jpg、ico、wmf等文件類型。圖形文件可以在設(shè)計(jì)階段裝入,也可以在運(yùn)行期間裝入。在設(shè)計(jì)狀態(tài)下,可以通過屬性窗口中的Picture屬性指定圖形文件。在運(yùn)行時,Picture屬性和LoadPicture函數(shù)配合,將圖形加載到控件上。LoadPicture函數(shù)格式如下:LoadPicture([文件名])若省略文件名,則清除控件中的圖形。6.3.1圖片框(2)1.主要屬性6.3.1圖片框(3)例如,若圖片框控件的名稱為PName,則在程序中裝載和清除圖形的方法如下:裝入圖形到控件:PName.Picture=LoadPicture("c:\image\aa.bmp")
刪除控件中圖形:PName.Picture=Nothing
或:SetPName.Picture=Nothing或:PName.Picture=LoadPicture()向圖片框控件裝入圖形,還可以通過剪貼板進(jìn)行。首先通過Window常規(guī)操作向剪貼板放入圖像;然后在VB的設(shè)計(jì)狀態(tài)下選中圖片框控件,執(zhí)行【編輯|粘貼】命令。6.3.1圖片框(3)例如,若圖片框控件的名稱為PNam6.3.1圖片框(4)(2)Autosize屬性該屬性設(shè)置圖片框是否會根據(jù)裝入圖形的大小作自動調(diào)整。默認(rèn)值為False,表示圖片框的大小不會自動改變,對于較大的圖片,顯示不下的部分被隱藏;當(dāng)值為True時,表示自動改變圖片框的尺寸,以適應(yīng)圖形的大小,如圖6.17所示。圖6.17圖片框的Autosize屬性
6.3.1圖片框(4)(2)Autosize屬性圖6.16.3.1圖片框(5)(3)AutoRedraw屬性AutoRedraw屬性設(shè)置圖片框中的圖形是否允許重畫。若該屬性值為True,當(dāng)使用繪圖方法繪制圖形或用Print方法輸出的文字被其他窗口覆蓋后又重新顯示時,圖形或文字能夠自動恢復(fù)(重繪)。默認(rèn)值為False,自動重繪無效。(4)CurrentX和CurrentY屬性CurrentX和CurrentY屬性用于指定圖片框中的Print方法或繪圖方法輸出的起始位置。6.3.1圖片框(5)(3)AutoRedraw屬性6.3.1圖片框(6)2.主要方法和事件(1)Print和Cls方法這兩個方法的使用與窗體相同,不再贅述。(2)繪圖方法繪圖方法包括Line、Circle、Pset和Point方法。這些方法可用于圖片框和窗體,詳細(xì)內(nèi)容將在第12章介紹。(3)TextHeight和TextWidth方法用于返回指定字符串輸出時的高度和寬度,常與Print方法配合使用。窗體也具有這兩個方法。圖片框支持常用的鼠標(biāo)事件、鍵盤事件和焦點(diǎn)事件等。6.3.1圖片框(6)2.主要方法和事件6.3.1圖片框(7)
【例6.8】用圖片框顯示文字。程序運(yùn)行時先在文本框中輸入內(nèi)容,單擊“→”按鈕后將文本框中的內(nèi)容顯示在圖片框中。運(yùn)行結(jié)果如圖6.18所示。
在窗體上添加一個文本框Text1,設(shè)MultiLine屬性為True,Text屬性為空。添加一個圖片框Picture1,設(shè)AutoRedraw屬性為True,背景色為白色。添加兩個標(biāo)簽,Caption屬性分別為“文本框”和“圖片框”。添加一個命令按鈕Command1,Caption屬性為“→”。6.3.1圖片框(7)【例6.8】用圖片框顯示文字。6.3.1圖片框(8)編程思路:用Print方法在圖片框中顯示文字時,若內(nèi)容較多,超出圖片框?qū)挾鹊牟糠謱⒈唤氐?。為了能夠像多行文本框那樣自動換行,可以利用圖片框的CurrentX屬性和TextWidth方法。具體做法是利用循環(huán)結(jié)構(gòu),一次只輸出一個字符,每次輸出前先作檢查,如果下一字符的輸出位置將超過圖片框的寬度時則換行。代碼如下:PrivateSubCommand1_Click()'單擊“→”按鈕
DimstrSAsString,tmpAsStringDimintWAsInteger,iAsIntegerstrS=Text1.Text
'取文本框中的內(nèi)容存入變量
Picture1.ClsFori=1ToLen(strS)
'通過循環(huán)每次輸出一個字符
tmp=Mid(strS,i,1)
'取第i個字符
intW=Picture1.TextWidth(tmp)'取第i字符的寬度6.3.1圖片框(8)編程思路:用Print方法在圖
'如果第i字符的寬度+當(dāng)前輸出位置CurrentX超過圖片框的寬度則換行
IfintW+Picture1.CurrentX>Picture1.WidthThenPicture1.PrintEndIfPicture1.Printtmp;
'輸出第i個字符。注意分號
NextEndSub
窗體對象也具有AutoRedraw、CurrentX和CurrentY屬性以及TextHeight和TextWidth方法。利用這些屬性和方法可以在窗體(或圖片框)中顯示特殊效果文字。例如,為窗體的單擊事件編寫代碼(見教材),可以在窗體上顯示如圖6.19所示的立體字和陰影字。
圖6.19特殊效果文字
返回首頁返回本節(jié)'如果第i字符的寬度+當(dāng)前輸出位置CurrentX超過圖片6.3.2圖像框(1)
圖像框控件(Image)的使用方法與圖片框(PictureBox)類似,但它只能用來顯示圖像,不能完成復(fù)雜的圖像操作。Image控件的屬性主要是Picture屬性和Stretch屬性。其Picture屬性的意義和用法與PictureBox控件相同。Stretch屬性可以決定所加載的圖片是否縮放,默認(rèn)值為False,表示圖片不縮放,控件的大小由圖片決定,即控件自動適應(yīng)圖片的大??;當(dāng)Stretch屬性為True時控件的大小不變,圖片自動伸縮(放大或縮?。┮员氵m合控件。圖6.20展示了Stretch屬性不同取值的效果。6.3.2圖像框(1)圖像框控件(Image)的使用方法6.3.2圖像框(2)
其中左圖為設(shè)計(jì)時界面,右圖為運(yùn)行時界面。從圖中可以看出,當(dāng)Stretch屬性為False時,盡管在設(shè)計(jì)時將幾個Image控件設(shè)為不同大小,但運(yùn)行時,控件均自動調(diào)整為圖片的大小。
圖6.20Stretch屬性
6.3.2圖像框(2)其中左圖為設(shè)計(jì)時界面,右圖為運(yùn)行6.3.2圖像框(3)
Image控件與PictureBox控件的比較如下:1.兩者都可加載圖片,都支持相同的圖片格式,加載圖片的方法也一樣。但PictureBox控件的圖形功能更強(qiáng),而Image控件由于屬性少,使用的系統(tǒng)資源比PictureBox控件少,裝載圖形的速度快。2.Image控件中,通過設(shè)置Stretch屬性為True可以實(shí)現(xiàn)圖片縮放以適合控件的大小,但圖片可能變形失真;在PictureBox控件中,僅可通過Autosize屬性調(diào)整控件的大小以適合圖形,圖形本身并不縮放。3.PictureBox控件可以作為其它控件的容器,其內(nèi)允許包括其它控件,起到類似于框架的作用,還支持各種繪圖方法和Print方法;而Image控件則不能。6.3.2圖像框(3)Image控件與Pictur6.3.2圖像框(4)
【例6.9】設(shè)計(jì)一個程序,根據(jù)用戶指定的圖像文件顯示圖像。為了實(shí)現(xiàn)文件選擇功能,本例使用了上一章介紹的通用對話框中的“打開”對話框,在代碼中將對話框的Filter屬性(文件過濾器)設(shè)置為*.bmp、*.jpg、*.ico和*.*。另外,兩個命令按鈕cmdCls、cmdLoad分別清除和裝載給定的圖像,標(biāo)簽控件顯示所選擇的圖像文件名稱。程序的運(yùn)行結(jié)果如圖6.21所示。6.3.2圖像框(4)【例6.9】設(shè)計(jì)一個程序,根據(jù)用戶程序代碼如下:PrivateSubcmdCls_Click()'單擊“清除”按鈕
Image1.Picture=LoadPicture("")Label1.Caption=""EndSubPrivateSubcmdLoad_Click()'單擊“裝載”按鈕
OnErrorGoToErrCancelCommonDialog1.CancelError=TrueCommonDialog1.Filter="BMP(*.bmp)|*.bmp|"&_"JPG(*.jpg)|*.jpg|ICO(*.ico)|*.ico|All(*.*)|*.*"CommonDialog1.ShowOpenImage1.Picture=LoadPicture(CommonDialog1.FileName)Label1.Caption=CommonDialog1.FileNameExitSubErrCancel:Label1.Caption="NoFile"EndSub返回首頁返回本節(jié)程序代碼如下:返回首頁返回本節(jié)6.4定時器(1)
定時器(Timer)或稱計(jì)時器,是一個響應(yīng)時間的控件。它獨(dú)立于用戶,運(yùn)行時不可見,可用來在一定的時間間隔中周期性地執(zhí)行某項(xiàng)操作。1.主要屬性(1)Enabled屬性設(shè)置定時器是否生效。當(dāng)該屬性為True(默認(rèn)值)時,定時器處于工作狀態(tài)(生效);而當(dāng)Enabled被設(shè)置為False時,它會暫停操作而處于待命狀態(tài)(無效)。6.4定時器(1)定時器(Timer)或稱計(jì)時器,是6.4定時器(2)
(2)Interval屬性設(shè)置定時器的時間間隔,單位為毫秒(1000毫秒=1秒),取值范圍為0~65535,因此最大時間間隔約為65.5秒。盡管設(shè)置值可取1毫秒,但在Windows9x下,實(shí)際最短間隔僅能達(dá)到1/18秒(約56ms),在Windows2000/XP下,實(shí)際最短間隔可達(dá)10ms。要注意的是,Interval屬性的默認(rèn)值是0,此時,即使Enabled屬性為True,定時器仍無效。6.4定時器(2)(2)Interval屬性6.4定時器(3)
2.事件定時器只能識別Timer事件。當(dāng)?shù)竭_(dá)由Interval屬性所設(shè)定的時間間隔時,系統(tǒng)會自動觸發(fā)其Timer事件,轉(zhuǎn)去執(zhí)行Timer事件中的代碼,從而完成指定的操作,接著又開始新一輪的計(jì)時。這樣,Timer事件中的代碼可以每隔一個時間段就被執(zhí)行一次。6.4定時器(3)2.事件6.4定時器(4)
【例6.10】設(shè)計(jì)數(shù)字時鐘,動態(tài)顯示系統(tǒng)當(dāng)前時間。通過標(biāo)準(zhǔn)函數(shù)Time可以取得系統(tǒng)的當(dāng)前時間,要使其動態(tài)顯示出來則可以使用定時器控件實(shí)現(xiàn)。在窗體上添加一個定時器Timer1,設(shè)Enabled屬性為True,Interval屬性為1000(即1秒)。添加一個標(biāo)簽,設(shè)Caption為空,Alignment為2,背景色為黑色,前景色為淺綠色。為定時器Timer事件編寫以下代碼:PrivateSubTimer1_Timer()'調(diào)用Time函數(shù)在標(biāo)簽中顯示時間Label1.Caption=TimeEndSub6.4定時器(4)【例6.10】設(shè)計(jì)數(shù)字時鐘,動態(tài)顯示系6.4定時器(5)
【例6.11】用定時器控件制作秒表。設(shè)計(jì)和運(yùn)行界面如圖6.23所示,其中左圖為設(shè)計(jì)界面,中圖和右圖為運(yùn)行界面。圖6.23例6.11設(shè)計(jì)和運(yùn)行界面
6.4定時器(5)【例6.11】用定時器控件制作秒表。圖6.4定時器(6)
(1)設(shè)計(jì)界面及設(shè)置屬性在窗體上添加一個定時器Timer1,設(shè)Enabled屬性為False,Interval屬性為10。添加一個標(biāo)簽Label1用于顯示計(jì)時時間,設(shè)其Caption為“0:00:00.00”,Alignment為2,背景色為黑色,前景色為淺綠色。再添加兩個命令按鈕,名稱分別為cmdTime和cmdReset,設(shè)Caption分別為“開始”和“清零”。
6.4定時器(6)(1)設(shè)計(jì)界面及設(shè)置屬性6.4定時器(7)
(2)編寫代碼為了簡化界面,便于用戶操作,本例中通過代碼讓cmdTime按鈕“身兼三職”,完成開始、暫停和繼續(xù)功能。程序啟動時該按鈕的標(biāo)題為“開始”。單擊“開始”,開始計(jì)時,按鈕變?yōu)椤皶和!?。單擊“暫停”,定時器停止工作,按鈕變?yōu)椤袄^續(xù)”。單擊“繼續(xù)”,繼續(xù)計(jì)時,按鈕又變?yōu)椤皶和!薄螕簟扒辶恪卑粹o,定時器停止工作,標(biāo)簽中的計(jì)時讀數(shù)置0,cmdTime按鈕的標(biāo)題恢復(fù)為“開始”。6.4定時器(7)(2)編寫代碼6.4定時器(8)
制作秒表的幾個關(guān)鍵環(huán)節(jié):①記錄開始計(jì)時的時間,可以通過調(diào)用VB內(nèi)部函數(shù)Timer為變量賦值來實(shí)現(xiàn)。該函數(shù)返回從午夜零點(diǎn)開始至當(dāng)前時刻的總秒數(shù)(Single型數(shù)據(jù),精度為7位)。②計(jì)算開始計(jì)時至當(dāng)前時刻的時間差,用Timer函數(shù)的返回值減去開始計(jì)時的時刻即可獲得該時間差。③在系統(tǒng)允許的最短時間間隔內(nèi)將時間差以“時:分:秒.xx”的形式顯示。適當(dāng)設(shè)置定時器控件的Interval屬性,在定時器的Timer事件中將時間差總秒數(shù)轉(zhuǎn)換為時、分、秒,并調(diào)用Format函數(shù)以特定的時間格式顯示。為完成上述功能,需要設(shè)置若干變量,用于存儲和計(jì)算有關(guān)的時間數(shù)據(jù)。6.4定時器(8)制作秒表的幾個關(guān)鍵環(huán)節(jié):6.4定時器(9)
【例6.12】設(shè)計(jì)一個具有簡單動畫效果的程序。
編程思路:將一個裝有圖片的圖像框在定時器的每個Timer事件中按一定方向和距離移動,即可實(shí)現(xiàn)簡單的動畫效果。設(shè)計(jì)動畫程序首先要選擇一個合適的圖像文件,本例選擇的是ARW11NE.ICO文件。在窗體上放置一個計(jì)時器控件Timer1,Interval屬性設(shè)置為50。添加一個圖像框控件Image1,設(shè)Picture屬性為上述圖像文件。設(shè)計(jì)界面如圖6.24所示。運(yùn)行時可看到圖中的箭頭周而復(fù)始地從左下向右上移動。6.4定時器(9)【例6.12】設(shè)計(jì)一個具有簡單動畫代碼如下:PrivateSubForm_Load()'窗體加載
Me.Height=4000Me.Width=6000Image1.Top=Me.Height'圖像框定位
Image1.Left=0EndSub圖6.24例6.12的界面設(shè)計(jì)代碼如下:圖6.24例6.12的界面設(shè)計(jì)PrivateSubTimer1_Timer()'定時器事件
DimxAsInteger,yAsIntegerx=Image1.Left+50'設(shè)置圖像框的新位置參數(shù)(向右上)
y=Image1.Top-50'若新位置移出窗體則回到初始位置
Ifx>Me.WidthOry<0Thenx=0y=Me.HeightEndIf
Image1.Movex,y'移動圖像框到新位置EndSubPrivateSubForm_Unload(CancelAsInteger)'窗體卸載
'關(guān)閉定時器。亦可用End語句結(jié)束運(yùn)行。Timer1.Enabled=FalseEndSub返回首頁P(yáng)rivateSubTimer1_Timer()6.5滾動條(1)
VB提供了兩種滾動條控件:水平滾動條(HscrollBar)和垂直滾動條(VscrollBar)。兩者除滾動的方向不同外,其功能和操作是一樣的。滾動條的兩端各有一個滾動箭頭,在滾動箭頭之間有一個滾動塊。滾動塊從一端移至另一端時,其值在不斷變化。垂直滾動條的值由上往下遞增,水平滾動條的值由左往右遞增。滾動條的值均以整數(shù)表示,取值范圍為-32768~32767,最小值和最大值分別在兩個端點(diǎn)。6.5滾動條(1)VB提供了兩種滾動條控件:水6.5滾動條(2)1.常用屬性(1)Min屬性設(shè)置滾動條所能代表的最小值,默認(rèn)值為0。(2)Max屬性設(shè)置滾動條所能代表的最大值,默認(rèn)值為32767。(3)Value屬性設(shè)置或返回滾動條當(dāng)前表示的值,也即當(dāng)前滑塊的位置。6.5滾動條(2)1.常用屬性6.5滾動條(3)(4)SmallChange屬性最小變化值,當(dāng)鼠標(biāo)單擊滾動條上的箭頭時,一次產(chǎn)生的變化值。(5)LargeChange屬性最大變化值,當(dāng)鼠標(biāo)單擊滾動條滑塊與箭頭之間的空白區(qū)域時,一次產(chǎn)生的變化值。6.5滾動條(3)(4)SmallChange屬性6.5滾動條(4)2.主要事件(1)Change事件當(dāng)滾動條的Value值發(fā)生改變時,觸發(fā)Change事件。能引起滾動條Value值改變的操作包括:單擊滾動條兩端的
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度旅游度假區(qū)入伙協(xié)議書
- 二零二五年度農(nóng)村私人土地租賃與農(nóng)業(yè)廢棄物處理合同
- 二零二五年度婚內(nèi)夫妻財(cái)產(chǎn)獨(dú)立與共享約定
- 二零二五年度個人肖像權(quán)影視節(jié)目預(yù)告片授權(quán)合同
- 2025年度有限公司股權(quán)質(zhì)押解除及債權(quán)債務(wù)處理協(xié)議
- 二零二五年度餐飲品牌授權(quán)經(jīng)營合同
- 酒店客房智能化客房管理系統(tǒng)升級合作協(xié)議
- 百貨業(yè)管理知識培訓(xùn)課件
- 交通運(yùn)輸設(shè)備(山東聯(lián)盟)知到智慧樹章節(jié)測試課后答案2024年秋山東科技大學(xué)
- 運(yùn)動員心理知識培訓(xùn)課件
- 商會成立籌備方案
- 隧道橋過渡段結(jié)構(gòu)設(shè)計(jì)與分析
- 住院精神疾病患者攻擊行為預(yù)防-護(hù)理團(tuán)標(biāo)
- 雕版印刷術(shù)的發(fā)明《金剛經(jīng)》課件
- 國際合規(guī)要求與企業(yè)管理
- 巖腳煤礦智能化綜采工作面匯報(bào)材料2020.11.10.11.10
- 餐廳每日清潔計(jì)劃
- 數(shù)據(jù)湖構(gòu)建及應(yīng)用場景
- 切格瓦拉完整
- 高考小說閱讀強(qiáng)化訓(xùn)練:孫犁小說專題(附答案解析)
- 向云端二聲部五線正譜
評論
0/150
提交評論