Visual-Basic程序設(shè)計(jì)綜合教程第5章-數(shù)組_第1頁(yè)
Visual-Basic程序設(shè)計(jì)綜合教程第5章-數(shù)組_第2頁(yè)
Visual-Basic程序設(shè)計(jì)綜合教程第5章-數(shù)組_第3頁(yè)
Visual-Basic程序設(shè)計(jì)綜合教程第5章-數(shù)組_第4頁(yè)
Visual-Basic程序設(shè)計(jì)綜合教程第5章-數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第5章 數(shù)組 在用計(jì)算機(jī)解決實(shí)際問(wèn)題時(shí),經(jīng)常會(huì)遇到對(duì)批量數(shù)據(jù)進(jìn)行處理的情況,如為了統(tǒng)計(jì)100個(gè)學(xué)生的成績(jī),按簡(jiǎn)單變量來(lái)處理會(huì)很不方便,由此引入了數(shù)組,極大的提高了此類問(wèn)題的處理效率。本章以數(shù)組對(duì)批量數(shù)據(jù)的處理為例,介紹數(shù)組的概念及其應(yīng)用、部分常用控件列表框和組合框,及直線和形狀控件?!局饕獌?nèi)容】 掌握數(shù)組的基本概念及其使用 掌握控件listBox,ComBox的常用屬性及其方法的使用 掌握控件Line,Shape的常用屬性及基本應(yīng)用。5.1 引例5.2 數(shù)組5.3 控件數(shù)組5.4 直線(Line)與形狀(Shape)5.5 列表框(ListBox)與組合框(ComboBox)本章小結(jié) 【例5.

2、1】設(shè)計(jì)一個(gè)用于對(duì)學(xué)生成績(jī)排名的應(yīng)用程序。程序運(yùn)行界面如下圖5.1(a)所示。 5.1 引例圖5.1(a) 【例5.1】運(yùn)行結(jié)果操作步驟:(1)設(shè)計(jì)用戶界面 根據(jù)界面設(shè)計(jì)要求,創(chuàng)建如圖5.1(b)所示用戶界面。將所需控件:兩個(gè)標(biāo)簽(Label),兩個(gè)列表框(Listbox)和一個(gè)命令按鈕(command)分別放到適當(dāng)位置,進(jìn)行相應(yīng)的屬性設(shè)置。具體控件屬性設(shè)置如下表5.1所示。 圖5.1(b) 【例5.1】用戶界面控件名稱(name)屬性屬性值窗體(Form1)caption學(xué)生成績(jī)排名標(biāo)簽(Label1)caption排名前數(shù)據(jù)標(biāo)簽(Label2)caption排序后名次命令按鈕(Comman

3、d1)caption輸入數(shù)據(jù)并排名(2) 代碼編寫(xiě)分析:設(shè)置好所需界面后編寫(xiě)相應(yīng)的事件過(guò)程,本例主要事件過(guò)程是Command1的Click事件。該事件要求完成: 通過(guò)輸入對(duì)話框輸入各學(xué)生的姓名和成績(jī),并把當(dāng)前輸入的數(shù)據(jù)顯示在左列表框以便查對(duì),輸入完畢后,開(kāi)始對(duì)輸入的數(shù)據(jù)按成績(jī)進(jìn)行排序,最后把排序后的數(shù)據(jù)顯示在右列表框內(nèi)。 此算法的關(guān)鍵在于如何排序,排序的方法有多種,有選擇法,冒泡排序法等。 對(duì)n個(gè)數(shù)a(1)a(n),采用選擇排序法的算法是:n個(gè)數(shù)a(1)a(n),采用選擇排序法的算法是: 先在n個(gè)數(shù)中選最小數(shù),放在數(shù)組的第1個(gè)元素中,即:取第1個(gè)數(shù),與后面n-1(即2與n)個(gè)數(shù)逐個(gè)比較。若第1

4、個(gè)數(shù)大,則a(1)與參與比較的數(shù)組元素中的值進(jìn)行互換,再將互換后的第1個(gè)數(shù)與剩下的數(shù)據(jù)比較,直到最后。 再在第2至n個(gè)元素中,選最小數(shù),放在第2個(gè)數(shù)組元素中。取第2個(gè)數(shù),與后面n-2(即3到n)個(gè)數(shù)逐個(gè)比較。若第2個(gè)數(shù)大,則互換,直到最后。 重復(fù)以上步驟,直至在最后兩個(gè)數(shù)中選取最小數(shù),放在第n-1數(shù)組元素中。 最后第n個(gè)元素已是最大數(shù)了。 說(shuō)明:(1)在設(shè)計(jì)界面時(shí)除了以前用過(guò)的命令按鈕和標(biāo)簽以外,還用到列表框(Llistbox)控件,這個(gè)控件及其相關(guān)的內(nèi)容將在本章作詳細(xì)的講解。(2)編寫(xiě)代碼時(shí)出現(xiàn)的 Dim Name(n) as string屬于數(shù)組的定義,具體相關(guān)數(shù)組的使用及有關(guān)概念是本章的

5、主要內(nèi)容之一。(3)排序交換數(shù)據(jù)時(shí),應(yīng)讓姓名和成績(jī)同時(shí)交換,若只交換成績(jī),則最終結(jié)果會(huì)張冠李戴。【例5.2】在窗體上顯示6種可以使用的形狀,通過(guò)控件數(shù)組來(lái)實(shí)現(xiàn),運(yùn)行結(jié)果如圖5.2(a)所示: 圖5.2(a) 【例5.2】運(yùn)行結(jié)果操作步驟如下:(1)設(shè)計(jì)用戶界面:根據(jù)程序的運(yùn)行結(jié)果,用戶可設(shè)計(jì)如圖5.2(b)所示的界面。圖5.2(b) 【例5.2】用戶界面設(shè)計(jì)過(guò)程如下:先將控件Shape放置在窗體上,并將其激活;執(zhí)行復(fù)制命令(Ctrl+C),將該控件復(fù)制;執(zhí)行粘貼命令(Ctrl+V),將顯示一個(gè)對(duì)話框,詢問(wèn)“已經(jīng)有一個(gè)控件為Shape1,是否創(chuàng)建控件數(shù)組?”選擇“是”,窗體左上角將出現(xiàn)一個(gè)控件,

6、它就是控件數(shù)組的第二個(gè)元素。執(zhí)行粘切命令(Ctrl+V),建立控件數(shù)組的其它元素。將其放在合適的位置并可用菜單欄的“格式”對(duì)其進(jìn)行設(shè)置。(2)編寫(xiě)代碼 在窗體中只放置控件數(shù)組,而要輸入對(duì)應(yīng)的標(biāo)號(hào)需通過(guò)print方法來(lái)實(shí)現(xiàn),對(duì)于Shape1控件數(shù)組中各元素的形狀由Shape控件的Shape屬性來(lái)完成,形狀的填充由Shape控件的FillStyle屬性實(shí)現(xiàn),具體的過(guò)程如下:Private Sub Form_Click()FontSize = 12CurrentX = 280Print 0; 設(shè)置形狀對(duì)應(yīng)的標(biāo)號(hào)For i = 1 To 5 Shape1(i).Left = Shape1(i - 1)

7、.Left + 800Shape1(i).Shape = i 設(shè)置shape1控件數(shù)組的形狀Shape1(i).FillStyle = i + 2 填充shape1控件數(shù)組Shape1(i).Visible = True 使得shape1(i)可見(jiàn)CurrentX = CurrentX + 500Print i;Next iEnd Sub (3) 運(yùn)行程序,驗(yàn)證結(jié)果 運(yùn)行程序,單擊窗體后出現(xiàn)如圖5.2(a)所示結(jié)果。說(shuō)明:(1)在設(shè)計(jì)界面時(shí)使用了Shape控件,這個(gè)控件及其相關(guān)的內(nèi)容將在本章作詳細(xì)的講解。(2)編寫(xiě)代碼使用了控件數(shù)組Shape1,注意掌握創(chuàng)建數(shù)組控件的方法的使用,對(duì)于建立控件數(shù)

8、組的另一方法將在后面介紹。 VB中將具有相同名字、不同下標(biāo)值的一組變量稱為數(shù)組。數(shù)組中的每個(gè)變量稱為數(shù)組元素或下標(biāo)變量??捎脭?shù)組名和下標(biāo)唯一地標(biāo)識(shí)一個(gè)數(shù)組元素,如Score(5)就表示數(shù)組名為Score的數(shù)組中下標(biāo)為5的數(shù)組元素。一個(gè)數(shù)組如果只用一個(gè)下標(biāo)就能確定一個(gè)數(shù)組元素在數(shù)組中的位置,則稱為一維數(shù)組,而由兩個(gè)或多個(gè)下標(biāo)所組成的數(shù)組稱為二維數(shù)組或多維數(shù)組。在其它語(yǔ)言中數(shù)組用來(lái)存儲(chǔ)相同類型的數(shù)據(jù),但是在VB中數(shù)組可用來(lái)存放不同類型的數(shù)據(jù)。 VB中的數(shù)組有兩種,一種是靜態(tài)數(shù)組;一種是動(dòng)態(tài)數(shù)組。數(shù)組必須先聲明后使用。數(shù)組的聲明既可以在模塊中的聲明,也可以在過(guò)程中聲明。5.2 數(shù)組5.2.1 靜態(tài)數(shù)

9、組5.2.2 動(dòng)態(tài)數(shù)組5.2.3 數(shù)組的基本操作5.2.4 For Each.Next 循環(huán)語(yǔ)句 以一個(gè)簡(jiǎn)單的應(yīng)用程序的界面為例,介紹組成菜單的基本元素(如所示)。菜單欄由多個(gè)菜單名(也叫主菜單)組成,如“文件”、“編輯”等都是菜單標(biāo)題。某一個(gè)菜單標(biāo)題下拉出一個(gè)菜單,包含一個(gè)或者多個(gè)菜單項(xiàng),如圖8.2 所示。圖8.2 菜單的組成元素菜單標(biāo)題菜單欄快捷鍵菜單項(xiàng)分隔線5.2.1 靜態(tài)數(shù)組 所謂靜態(tài)數(shù)組是指維數(shù)與下標(biāo)的范圍在聲明時(shí)就已經(jīng)確定了。聲明靜態(tài)數(shù)組使用的語(yǔ)句與聲明變量的語(yǔ)句類似。對(duì)于一維數(shù)組格式為:Dim 數(shù)組名(下標(biāo)說(shuō)明)As 類型,數(shù)組名(下標(biāo)說(shuō)明) As 類型.例如:Dim A1(5)

10、 as integer Dim A2(2 to 5) as integer對(duì)于二維數(shù)組,格式為:Dim 數(shù)組名 (第一維下標(biāo)上界,第二維下標(biāo)上界) as 類型名稱例如:Dim B1(2,3) as integer定義了一個(gè)二維數(shù)組,數(shù)組名為B1,類型為integer,該數(shù)組有3行,4列,占12個(gè)整型變量的空間,如下所示:B1(0,0)B1(0,1)B1(0,2)B1(0,3)第0行B1(1,0)B1(1,1)B1(1,2)B1(1,3)第1行B1(2,0)B1(2,1)B1(2,2)B1(2,3)第2行 說(shuō)明:(1)數(shù)組名的命名與變量名命名一致,但不能和簡(jiǎn)單變量重名。(2)下標(biāo)說(shuō)明又稱維定義符

11、,定義了這個(gè)維的大小。它有兩種表示格式: 或 下界和上界必須使用數(shù)值型常量表達(dá)式,一般直接使用整型常數(shù),它表示數(shù)組元素的下標(biāo)應(yīng)在下界到上界的范圍內(nèi),超出范圍將出現(xiàn)運(yùn)行錯(cuò)誤。 在缺省狀態(tài)下,起始下標(biāo)(下界值)為0,則Dim Score(100),表示聲明了一個(gè)有101個(gè)元表的數(shù)組,它的每個(gè)元素分別為Score(0),Score(1)、Score(100)??梢允褂脤iT語(yǔ)句重新設(shè)置缺省下界值。格式為:Option Base 0|1。 例如:Option Base 1 表示將下界缺省值設(shè)置為1(3)類型指的是數(shù)組元素的類型。省略類型則表示為Variant類型。如 Const n=10 Dim Nam

12、e1(n) As String, Score(n) As Single(4)其它屬性 幫助上下文:指定一個(gè)唯一的數(shù)值作為幫助文本的標(biāo)識(shí)符,可根據(jù)該數(shù)值在幫助文件中查找適當(dāng)?shù)膸椭黝}。 協(xié)調(diào)位置:與OLE功能有關(guān),一般取0值。 復(fù)選(Checked)屬性: 如果選中(),在初次打開(kāi)菜單項(xiàng)時(shí),該菜單項(xiàng)的左邊顯示“”。在菜單條上的第一級(jí)菜單不能使用該屬性。 有效(Enabled)屬性: 如果選中(),在運(yùn)行時(shí)以清晰的文字出現(xiàn);未選中則在運(yùn)行時(shí)以灰色的文字出現(xiàn),不能使用該菜單項(xiàng)。 顯示窗口列表(WindowList)屬性: 當(dāng)菜單要包括一個(gè)打開(kāi)的所有MDI(多文檔界面)子窗口的列表時(shí),選中()此項(xiàng)。5

13、.2.2 動(dòng)態(tài)數(shù)組 動(dòng)態(tài)數(shù)組是指在聲明數(shù)組時(shí)不指明下標(biāo)的大小(省略括號(hào)中的下標(biāo)),當(dāng)需要時(shí),再用ReDim語(yǔ)句重新定義其大小。建立動(dòng)態(tài)數(shù)組的步驟如下:(1)聲明動(dòng)態(tài)數(shù)組 聲明動(dòng)態(tài)數(shù)組的格式為:Dim 數(shù)組名( ) As 類型名上述數(shù)組定義的語(yǔ)句中,并沒(méi)有標(biāo)明數(shù)組的維數(shù)及數(shù)組元素的個(gè)數(shù),事實(shí)上,它定義了一個(gè)空維數(shù)組,表明該數(shù)組是動(dòng)態(tài)數(shù)組。 (2)用ReDim語(yǔ)句分配數(shù)組的實(shí)際元素個(gè)數(shù)ReDim語(yǔ)句是一個(gè)可執(zhí)行語(yǔ)句,它只能出現(xiàn)在過(guò)程中,其作用是為數(shù)組分配實(shí)際空間。格式為:ReDim 數(shù)組名(下標(biāo)說(shuō)明,下標(biāo)說(shuō)明例如:Dim n as integerDim Name1( ) as stringn=va

14、l( ()ReDim Name1(n)說(shuō)明:上面代碼首先定義了一個(gè)變量n,然后再定義了一個(gè)空維數(shù)組Name,n的值通過(guò)inputbox輸入,最后用ReDim語(yǔ)句為數(shù)組分配實(shí)際元素個(gè)數(shù)。 注意: 可以多次使用ReDim語(yǔ)句來(lái)改變數(shù)組的大小,但每次使用會(huì)使原數(shù)組的內(nèi)容丟失,若想使原數(shù)據(jù)不丟失,則可在使用ReDim語(yǔ)句中使用關(guān)鍵字Preserve,格式為:ReDim Preserve數(shù)組名(下標(biāo)說(shuō)明,下標(biāo)說(shuō)明) 不能用ReDim Preserve語(yǔ)句改變數(shù)組原有的數(shù)據(jù)類型。5.2.3 數(shù)組的基本操作數(shù)組的基本操作包括數(shù)組元素的引用、初始化以及輸入輸出等。1 數(shù)組的引用格式:數(shù)組名(下標(biāo),下標(biāo).)聲明

15、數(shù)組和使用數(shù)組元素是不同的,在使用過(guò)程注意區(qū)別。2 數(shù)組元素賦初值(1)利用循環(huán)結(jié)構(gòu)for i=1 to 10a(i)=0 a數(shù)組的每個(gè)元素值為0next i(2)利用Array函數(shù)Dim a as Variant, b as Variant,i%a=Array(1,2,3,4,5)b=Array(“abc”,“dfd”,”dttt”)For i=0 to UBound(a) print a(i); “ ”;Next i For i=0 to UBound(b) print b(i); “ ”;Next i在使用Array函數(shù)時(shí)應(yīng)注意以下幾點(diǎn): Array函數(shù)用來(lái)為數(shù)組元素賦值,其格式為: 數(shù)

16、組變量名=Array(數(shù)組元素值)其中“數(shù)組變量名”是預(yù)先定義的數(shù)組名,在“數(shù)組變量名”之后沒(méi)有括號(hào)。之所以稱為“數(shù)組變量”,是因?yàn)樗鳛閿?shù)組使用,但作為變量定義,它既沒(méi)有維數(shù),也沒(méi)有上下界。“數(shù)組變量值”是需要賦給數(shù)組各元素的值,各值之間以逗號(hào)分開(kāi)。 聲明的數(shù)組變量可以通過(guò)以下方式定義:顯式定義為Variant類型,如:Dim a as Variant、在定義時(shí)不指明類型,如: Dim a、不定義直接使用。Array函數(shù)只適用于一維數(shù)組,即只能對(duì)一維數(shù)組進(jìn)行初始化,不能對(duì)二維或多維數(shù)組進(jìn)行初始化。數(shù)組的下界為零,上界由Array函數(shù)括號(hào)內(nèi)的參數(shù)個(gè)數(shù)決定,也可通過(guò)函數(shù)Ubound獲得(其中函數(shù)

17、Ubound用于返回?cái)?shù)組指定維的上界,Lbound用于返回?cái)?shù)組指定維的下界)。3 數(shù)組元素的輸入可以通過(guò)For循環(huán)及InputBox函數(shù)輸入。4 數(shù)組元素的輸出數(shù)組元素的輸出一般for循環(huán)與Print方法來(lái)實(shí)現(xiàn)。5 舉例【例5.3】編寫(xiě)程序,求一個(gè)nm的矩陣中最大值元素所在行和列,并輸出其值及行號(hào)和列號(hào)。分析: 該題目要求找到矩陣中最大值,可以使用一個(gè)二維數(shù)組存放這個(gè)矩陣,然后依次比較這個(gè)數(shù)組中的各個(gè)元素的值,求得最大值。由于n,m未知,所以必須先通過(guò)InputBox函數(shù)輸入其值。 5.2.4 For Each.Next 循環(huán)語(yǔ)句 For Each.Next 循環(huán)語(yǔ)句與前面的循環(huán)語(yǔ)句For.N

18、ext類似,都是用來(lái)執(zhí)行指定重復(fù)次數(shù)的循環(huán)。但For Each.Next 語(yǔ)句專門用于數(shù)組或?qū)ο蠹现械拿恳怀蓡T。語(yǔ)法格式為: For Each 成員 In 數(shù)組名 循環(huán)體 Exit For Next 成員說(shuō)明:(1)“成員”是一個(gè)Variant 變量,它實(shí)際上代表數(shù)組中每一個(gè)元素。(2)本語(yǔ)句可以對(duì)數(shù)組元素進(jìn)行讀取、查詢或顯示,它所重復(fù)執(zhí)行的次數(shù)由數(shù)組中元素的個(gè)數(shù)確定。也就是說(shuō),分別對(duì)數(shù)組中的第一個(gè)元素、第二個(gè)元素、最后一個(gè)元素,按序執(zhí)行一次循環(huán)體。For Each.Next 循環(huán)語(yǔ)句在不知道數(shù)組元素個(gè)數(shù)時(shí)非常有用?!纠?.4】利用For Each.Next 循環(huán)語(yǔ)句來(lái)求1+2+3+100的

19、值,運(yùn)行結(jié)果如圖5.3所示。Private Sub Form_Click() Dim a(1 To 100) As Long, sum As Long Dim n As Integer sum = 0 For n = 1 To 100 為數(shù)組中的每個(gè)元素賦值 a(n) = n Next n For Each x In a X為Variant類型的變量,不必賦值 sum = sum + x Next x Print 1+2+3+.+100=; sumEnd Sub圖5.3 【例5.4】的運(yùn)行結(jié)果5.3 控件數(shù)組 控件數(shù)組是由一組相同類型的控件組成,這些控件共用一個(gè)相同的控件名字,具有的相同屬性設(shè)

20、置。數(shù)組中的每個(gè)控件都有惟一的索引號(hào)(Index Number),即下標(biāo),其所有元素的Name屬性必須相同。 控件數(shù)組適用于若干個(gè)控件執(zhí)行操作相似的場(chǎng)合??丶?shù)組共享同樣的事件過(guò)程。如果某控件數(shù)組有4命令按鈕,運(yùn)行時(shí)不管單擊哪個(gè)按鈕,就會(huì)調(diào)用同一個(gè)事件過(guò)程?!纠?.5】編寫(xiě)一個(gè)運(yùn)行界面如圖5.4所示的程序,其中“”,“”,“”,“”為命令按鈕控件數(shù)組,2個(gè)文本框用于輸入數(shù)據(jù),當(dāng)單擊四個(gè)運(yùn)算符按鈕中的任一個(gè),則開(kāi)始計(jì)算,并在Label1,Label2,Label3上分別顯示運(yùn)算符、等號(hào)和運(yùn)算結(jié)果。圖5.4 【例5.5】運(yùn)行結(jié)果操作步驟:(1)用戶界面設(shè)計(jì)本例中“”,“”,“”,“”為命令按鈕控件

21、數(shù)組,其建立過(guò)程與【例5.2】不同,具體步驟如下: 在窗體上畫(huà)出的所有的數(shù)組元素控件; 先選中其中一個(gè)控件,將其激活; 在屬性窗口中選擇“名稱”屬性,并鍵入控件的名稱“cmdopt”; 對(duì)每個(gè)要加到數(shù)組中的控件重復(fù),步,鍵入與第步中相同的名稱。當(dāng)對(duì)第二個(gè)控件鍵入與第一個(gè)控件相同的名稱后,VB將顯示一個(gè)對(duì)話框,詢問(wèn)是否確實(shí)要建立控件數(shù)組。單擊“是”將建立控件數(shù)組(單擊“否”則放棄建立操作)。(2)編寫(xiě)代碼 具體的運(yùn)算是通過(guò)命令按鈕完成的,本題中的命令按鈕是一控件數(shù)組,所以它們適用同一過(guò)程,具體的數(shù)組元素通過(guò)控件數(shù)組的index屬性來(lái)區(qū)分,實(shí)現(xiàn)過(guò)程如下: Private Sub cmdopt_Cl

22、ick(Index As Integer)Label1.Caption = cmdopt(Index).CaptionLabel2.Caption = =Select Case Index 通過(guò)Index的值決定執(zhí)行哪一個(gè)按鈕操作 Case 0 Label3.Caption = Val(Text1.Text) + Val(Text2.Text) Case 1 Label3.Caption = Val(Text1.Text) - Val(Text2.Text) Case 2 Label3.Caption = Val(Text1.Text) * Val(Text2.Text) Case 3 If

23、Val(Text2.Text) = 0 Then MsgBox 除法錯(cuò)誤!, vbCritical, 出錯(cuò) Else Label3.Caption = Val(Text1.Text) / Val(Text2.Text) End IfEnd SelectEnd Sub通過(guò)本例,希望讀者注意以下知識(shí)點(diǎn):控件數(shù)組是針對(duì)控件建立的,因此與普通數(shù)組的定義不一樣??梢酝ㄟ^(guò)兩種方法來(lái)建立控件數(shù)組:一種是【例5.5】也就是本例中使用的方法,還有一種是【例5.2】中使用的方法,注意具體方法的使用;為了區(qū)分控件數(shù)組中的各個(gè)元素,Visual Basic把下標(biāo)值傳送給一個(gè)過(guò)程。本例中,單擊上述控件數(shù)組中的任意命令按

24、鈕時(shí),調(diào)用的事件過(guò)程如下:Private Sub cmdopt_Click(Index As Integer).End Sub 通過(guò)按鈕的屬性Index確定用戶按下了哪個(gè)按鈕,這時(shí)在對(duì)應(yīng)的過(guò)程中進(jìn)行有關(guān)的編程。在編寫(xiě)代碼的過(guò)程中,要對(duì)問(wèn)題進(jìn)行全面的考慮,如本例中,在進(jìn)行除法運(yùn)算時(shí)不能出現(xiàn)除數(shù)為“0”的操作,所以對(duì)這種情況要做相應(yīng)的處理。 5.4.1 直線控件(Line)5.4.2 形狀控件(Shape)5.4 直線(Line)與形狀(Shape)5.4.1 直線控件(Line)1 、用途 Line控件用于在窗體、框架或圖片中畫(huà)直線,主要用于修飾。通過(guò)設(shè)置Line控件的屬性,可以產(chǎn)生不同風(fēng)格、不

25、同顏色的線條。2 、重要屬性(1)x1,x2,y1,y2屬性 用來(lái)設(shè)定一條直線的兩個(gè)端點(diǎn)坐標(biāo),即(x1,y1)和(x2,y2)。在運(yùn)行時(shí),可以通過(guò)改變x1,x2,y1,y2的屬性來(lái)移動(dòng)它或調(diào)整它的大小。(2)BorderWidth屬性 用來(lái)設(shè)定直線的粗細(xì)。其值是一個(gè)整數(shù)值,默認(rèn)為1.(3)BorderColor屬性用來(lái)設(shè)定直線的顏色,默認(rèn)值為黑色。(4)BorderStyle屬性用來(lái)設(shè)定直線的類型。設(shè)置值所對(duì)應(yīng)的線型如下【表5.3】所示:設(shè) 置 值線 型0-Transparent透明1-Solid實(shí)線(缺?。?-Dash虛線3-Dot點(diǎn)線4- Dash-Dot點(diǎn)劃線5-Dash-Dot -Do

26、t雙點(diǎn)劃線6-InsideSolid內(nèi)收實(shí)線【例5.6】制作一個(gè)5色閃爍彩燈。窗體中有五個(gè)直線控件和1個(gè)計(jì)時(shí)器,界面設(shè)計(jì)如圖5.5(a)所示。每一直線控件表示1盞燈。程序運(yùn)行時(shí),每盞燈分別以各種顏色(紅、藍(lán)、黃、綠、青)交換變化,形成閃爍效果。圖5.5(a) 例5.6運(yùn)行結(jié)果操作步驟:(1)設(shè)計(jì)用戶界面 設(shè)置初始界面如圖5.5(b)所示,將直線放置在合適的位置,調(diào)整其長(zhǎng)度。設(shè)置窗體上所用的五條直線和1個(gè)Timer控件的屬性。 圖5.5(b) 例5.6初始界面(2)編寫(xiě)代碼 分析:題目要求每一個(gè)控件表示1盞燈,程序運(yùn)行時(shí),每盞燈分別以不同的顏色,在不同的時(shí)刻交換變化,這一功能通過(guò)Timer事件來(lái)

27、實(shí)現(xiàn)。不同時(shí)間段的變化用全局變量控制,顯示不同的效果。(3)運(yùn)行程序,驗(yàn)證運(yùn)行結(jié)果 程序運(yùn)行后,出現(xiàn)如圖5.5(a)所示運(yùn)行界面,五個(gè)不同顏色的線條從左至右在不同時(shí)刻與白色交替顯示。(思考:如將本題目中的5個(gè)Line控件用一Line控件數(shù)組來(lái)實(shí)現(xiàn),如何操作)說(shuō)明: 本題對(duì)線條顏色的設(shè)置是在程序運(yùn)行時(shí),通過(guò)使用VB顏色常量來(lái)實(shí)現(xiàn)的。VB顏色符號(hào)常量與常量值的對(duì)應(yīng)如表5.5所示。 表5.5 VB顏色常量常量值說(shuō)明VBBlack&H0黑VBRed&HFF紅VBGreen&HFF00綠VBYellow&HFFFF黃VBBlue&HFF0000藍(lán)VBMagenta&HFF00FF紫紅VBCyan&HFF

28、FF00青色VBWhite&HFFFFFF白5.4.2 形狀控件(Shape)1 、用途 Shape控件可以用來(lái)畫(huà)矩形,正方形,橢圓,圓,圓角矩形及圓角正方形,默認(rèn)為一個(gè)矩形,通過(guò)設(shè)置其Shape屬性可以畫(huà)出多種圖形。2 、重要屬性(1)Shape屬性 Shape屬性用于設(shè)定幾何圖形的類型,其值與對(duì)應(yīng)的幾何類型如表5.6所示: Shape屬性值幾何類型0-Rectangle矩形(默認(rèn)值)1-Square正方形2-Oval橢圓形3-Circle圓形4-RoundedRectangle圓角矩形5-RoundSquare圓角正方形表5.6 Shape屬性值與對(duì)應(yīng)的幾何類型關(guān)系表(3)FillStyl

29、e屬性 表示形狀內(nèi)的填充格式。其值與對(duì)應(yīng)的填充格式如表5.7所示。表5.7 FillStyle屬性設(shè)置FillStyle屬性值對(duì)應(yīng)的含義0-Solid實(shí)心1-Transparent透明2-HorizontalLine水平線3-VerticalLine垂直線4-UpwardDiagonal左上對(duì)角線5-DownwardDiagonal右下對(duì)角線6-Cross交叉線7-DiagonalCross對(duì)角交叉線(2)BorderWidth屬性 表示Shape控件邊框的寬度。其值是一個(gè)整數(shù),默認(rèn)為1。 (4)FillColor屬性 表示形狀內(nèi)的填充格式顏色,當(dāng)FillStyle屬性為1時(shí),該屬性無(wú)效。(5

30、)BorderColor屬性 用來(lái)設(shè)置邊框的顏色,默認(rèn)值為黑色。5.5.1 列表框(ListBox)5.5.2 組合框控件(ComboBox)5.5 列表框(ListBox)與組合框(ComboBox)5.5.1 列表框(ListBox)1、 用途 列表框控件常用來(lái)顯示一個(gè)項(xiàng)目的列表如【例5.1】,用戶可從中選擇一項(xiàng)或多項(xiàng),如果項(xiàng)目總數(shù)超過(guò)了列表框可顯示的項(xiàng)目數(shù),列表框會(huì)自動(dòng)添加滾動(dòng)條,以方便用戶以滾動(dòng)的方式來(lái)選擇列表框項(xiàng)。列表框最主要的特點(diǎn)是只能從其中選擇,不能直接修改其中的內(nèi)容。2 、重要屬性(1)Columns屬性 該屬性用來(lái)確定列表框的列數(shù)。其屬性設(shè)置值及相應(yīng)功能如下:0(默認(rèn)值);以

31、單列的方式顯示列表項(xiàng),垂直滾動(dòng)列表項(xiàng)。1n:以多列的方式顯示列表項(xiàng),水平滾動(dòng)列表項(xiàng)。圖5.6為Columns屬性取不同值時(shí)列表框的顯示效果。圖5.6 設(shè)置Columns屬性(2)List屬性 該屬性用于設(shè)置或返回列表項(xiàng)的內(nèi)容??梢灾苯釉趯傩源翱谥休斎?,輸入一個(gè)列表項(xiàng)以后按“Ctrl+Enter“,可緊接著輸入下一項(xiàng)。圖5.7為設(shè)置List屬性的屬性窗口。圖5.7 List屬性的屬性窗口(3)MultiSelect 屬性 該屬性用于設(shè)置一次可以選擇的列表項(xiàng)數(shù)。對(duì)于一個(gè)標(biāo)準(zhǔn)列表框,該屬性的設(shè)置值決定了用戶能否在列表框中進(jìn)行多項(xiàng)選擇。 MultiSelect屬性的設(shè)置值見(jiàn)表5.8。 屬性描述0-No

32、ne每次只能選擇一項(xiàng),如果選擇另一項(xiàng)則會(huì)取消對(duì)前一項(xiàng)的選擇。此為系統(tǒng)默認(rèn)值1-Simple可以同時(shí)選擇多個(gè)列表項(xiàng),后續(xù)的選擇不會(huì)取消前面的所選項(xiàng)。可以用鼠標(biāo)或空格鍵進(jìn)行選擇或取消2-Extended可以選擇指定范圍內(nèi)的列表項(xiàng)。其方法是:按下Shift鍵連續(xù)選擇;按下Ctrl不連續(xù)選擇多項(xiàng)表5.8 MultiSelect 屬性設(shè)置(4)Text屬性 返回程序運(yùn)行時(shí)用戶所選擇項(xiàng)目的文本內(nèi)容,等于List(ListIndex)。(5)Style屬性 該屬性用于確定列表框的外觀,只能在設(shè)計(jì)時(shí)設(shè)置。其取值可以為0-Standard(標(biāo)準(zhǔn)形式)和1-Checked(復(fù)選框形式),區(qū)別如圖5.8所示。當(dāng)取值

33、為1時(shí),列表框的MultiSelect屬性只能設(shè)置為0。圖5.8 不同外觀風(fēng)格的列表框(6)ListIndex屬性 該屬性只能在程序中設(shè)置或引用。ListIndex 值表示執(zhí)行是選中的列表項(xiàng)序號(hào)。如果未選中任何項(xiàng),則ListIndex的值-1。(7)Sorted屬性 指定列表部分項(xiàng)目是否按字母表的順序排列,True-排序,F(xiàn)alse-不排序。3 、事件: 列表框接收Click和DblClick事件,但有時(shí)不用編寫(xiě)Click事件過(guò)程代碼,而是當(dāng)單擊一個(gè)命令按鈕或發(fā)生DblClick事件時(shí),讀取Text屬性(此屬性的值為最后一次選中的表項(xiàng)的文本,不能直接修改text屬性。4 、常用方法(1)Add

34、Item方法 該方法用于在程序運(yùn)行時(shí)向列表框增加一個(gè)列表項(xiàng),其使用格式為: 列表框名.AddItem 要增加的列表項(xiàng),列表項(xiàng)序號(hào)(2)RemoveItem方法 該方法用于刪除列表框中指定的列表項(xiàng),其使用格式為: 列表框名.RemoveItem 列表項(xiàng)序號(hào)(3)Clear方法 該方法用于清除列表框中的所有列表項(xiàng),執(zhí)行該方法后,列表框的ListCount將被設(shè)置為0.其使用格式為: 列表框名.Clear例如,要清除列表框List1中的全部?jī)?nèi)容,則實(shí)現(xiàn)的語(yǔ)句如下:List1.Clear【例5.7】編寫(xiě)一個(gè)能對(duì)列表框進(jìn)行項(xiàng)目添加、修改和刪除操作的應(yīng)用程序,如圖5.9所示。因?yàn)椴荒苤苯訉?duì)列表框中的內(nèi)容進(jìn)

35、行添加、修改和刪除操作,所以利用了一個(gè)文本框。列表框(Lstbooks)的項(xiàng)目在Form_Load中用Additem方法添加。添加(Cmdadd)按鈕的功能是將文本框中的內(nèi)容添加到列表框,刪除(Cmddel)按鈕的功能是刪除列表框中選定的項(xiàng)目。如果要修改之后再按修改確定(Cmdmod_ok)按鈕更新列表框。初始時(shí),修改確定按鈕是不可選的,即它的Enabled屬性為False。圖5.9 【例5.7】運(yùn)行結(jié)果分析: 主要事件過(guò)程是Form_Load( )和幾個(gè)按鈕的Click事件。該Form_Load事件要求完成:向列表框中添加列表項(xiàng);其它幾個(gè)按鈕分別用來(lái)實(shí)現(xiàn)添加,刪除,修改等功能,主要使用的AddItem和RemoveItem方法。 本例主要是對(duì)列表框控件的綜合應(yīng)用,在使用過(guò)程讀者應(yīng)注意掌握以下知識(shí)點(diǎn):列表框常用屬性的使用:如List屬性、Index屬性、Text屬性和ListIndex屬性的應(yīng)用;列表框常用方法的使用:如把一個(gè)項(xiàng)目加入列表框的AddItem方法和從列表

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論