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

下載本文檔

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

文檔簡介

1、第5章 數(shù)組 在用計(jì)算機(jī)解決實(shí)際問題時,經(jīng)常會遇到對批量數(shù)據(jù)進(jìn)行處理的情況,如為了統(tǒng)計(jì)100個學(xué)生的成績,按簡單變量來處理會很不方便,由此引入了數(shù)組,極大的提高了此類問題的處理效率。本章以數(shù)組對批量數(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ì)一個用于對學(xué)生成績排名的應(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)所示用戶界面。將所需控件:兩個標(biāo)簽(Label),兩個列表框(Listbox)和一個命令按鈕(command)分別放到適當(dāng)位置,進(jìn)行相應(yīng)的屬性設(shè)置。具體控件屬性設(shè)置如下表5.1所示。 圖5.1(b) 【例5.1】用戶界面控件名稱(name)屬性屬性值窗體(Form1)caption學(xué)生成績排名標(biāo)簽(Label1)caption排名前數(shù)據(jù)標(biāo)簽(Label2)caption排序后名次命令按鈕(Comman

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

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

5、主要內(nèi)容之一。(3)排序交換數(shù)據(jù)時,應(yīng)讓姓名和成績同時交換,若只交換成績,則最終結(jié)果會張冠李戴?!纠?.2】在窗體上顯示6種可以使用的形狀,通過控件數(shù)組來實(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ì)過程如下:先將控件Shape放置在窗體上,并將其激活;執(zhí)行復(fù)制命令(Ctrl+C),將該控件復(fù)制;執(zhí)行粘貼命令(Ctrl+V),將顯示一個對話框,詢問“已經(jīng)有一個控件為Shape1,是否創(chuàng)建控件數(shù)組?”選擇“是”,窗體左上角將出現(xiàn)一個控件,

6、它就是控件數(shù)組的第二個元素。執(zhí)行粘切命令(Ctrl+V),建立控件數(shù)組的其它元素。將其放在合適的位置并可用菜單欄的“格式”對其進(jìn)行設(shè)置。(2)編寫代碼 在窗體中只放置控件數(shù)組,而要輸入對應(yīng)的標(biāo)號需通過print方法來實(shí)現(xiàn),對于Shape1控件數(shù)組中各元素的形狀由Shape控件的Shape屬性來完成,形狀的填充由Shape控件的FillStyle屬性實(shí)現(xiàn),具體的過程如下:Private Sub Form_Click()FontSize = 12CurrentX = 280Print 0; 設(shè)置形狀對應(yīng)的標(biā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)可見CurrentX = CurrentX + 500Print i;Next iEnd Sub (3) 運(yùn)行程序,驗(yàn)證結(jié)果 運(yùn)行程序,單擊窗體后出現(xiàn)如圖5.2(a)所示結(jié)果。說明:(1)在設(shè)計(jì)界面時使用了Shape控件,這個控件及其相關(guān)的內(nèi)容將在本章作詳細(xì)的講解。(2)編寫代碼使用了控件數(shù)組Shape1,注意掌握創(chuàng)建數(shù)組控件的方法的使用,對于建立控件數(shù)

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

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

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

11、,定義了這個維的大小。它有兩種表示格式: 或 下界和上界必須使用數(shù)值型常量表達(dá)式,一般直接使用整型常數(shù),它表示數(shù)組元素的下標(biāo)應(yīng)在下界到上界的范圍內(nèi),超出范圍將出現(xiàn)運(yùn)行錯誤。 在缺省狀態(tài)下,起始下標(biāo)(下界值)為0,則Dim Score(100),表示聲明了一個有101個元表的數(shù)組,它的每個元素分別為Score(0),Score(1)、Score(100)??梢允褂脤iT語句重新設(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)其它屬性 幫助上下文:指定一個唯一的數(shù)值作為幫助文本的標(biāo)識符,可根據(jù)該數(shù)值在幫助文件中查找適當(dāng)?shù)膸椭黝}。 協(xié)調(diào)位置:與OLE功能有關(guān),一般取0值。 復(fù)選(Checked)屬性: 如果選中(),在初次打開菜單項(xiàng)時,該菜單項(xiàng)的左邊顯示“”。在菜單條上的第一級菜單不能使用該屬性。 有效(Enabled)屬性: 如果選中(),在運(yùn)行時以清晰的文字出現(xiàn);未選中則在運(yùn)行時以灰色的文字出現(xiàn),不能使用該菜單項(xiàng)。 顯示窗口列表(WindowList)屬性: 當(dāng)菜單要包括一個打開的所有MDI(多文檔界面)子窗口的列表時,選中()此項(xiàng)。5

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

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

15、數(shù)組和使用數(shù)組元素是不同的,在使用過程注意區(qū)別。2 數(shù)組元素賦初值(1)利用循環(huán)結(jié)構(gòu)for i=1 to 10a(i)=0 a數(shù)組的每個元素值為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ù)時應(yīng)注意以下幾點(diǎn): Array函數(shù)用來為數(shù)組元素賦值,其格式為: 數(shù)

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

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

18、ext類似,都是用來執(zhí)行指定重復(fù)次數(shù)的循環(huán)。但For Each.Next 語句專門用于數(shù)組或?qū)ο蠹现械拿恳怀蓡T。語法格式為: For Each 成員 In 數(shù)組名 循環(huán)體 Exit For Next 成員說明:(1)“成員”是一個Variant 變量,它實(shí)際上代表數(shù)組中每一個元素。(2)本語句可以對數(shù)組元素進(jìn)行讀取、查詢或顯示,它所重復(fù)執(zhí)行的次數(shù)由數(shù)組中元素的個數(shù)確定。也就是說,分別對數(shù)組中的第一個元素、第二個元素、最后一個元素,按序執(zhí)行一次循環(huán)體。For Each.Next 循環(huán)語句在不知道數(shù)組元素個數(shù)時非常有用?!纠?.4】利用For Each.Next 循環(huán)語句來求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ù)組中的每個元素賦值 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ù)組是由一組相同類型的控件組成,這些控件共用一個相同的控件名字,具有的相同屬性設(shè)

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

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

22、ick(Index As Integer)Label1.Caption = cmdopt(Index).CaptionLabel2.Caption = =Select Case Index 通過Index的值決定執(zhí)行哪一個按鈕操作 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 除法錯誤!, vbCritical, 出錯 Else Label3.Caption = Val(Text1.Text) / Val(Text2.Text) End IfEnd SelectEnd Sub通過本例,希望讀者注意以下知識點(diǎn):控件數(shù)組是針對控件建立的,因此與普通數(shù)組的定義不一樣??梢酝ㄟ^兩種方法來建立控件數(shù)組:一種是【例5.5】也就是本例中使用的方法,還有一種是【例5.2】中使用的方法,注意具體方法的使用;為了區(qū)分控件數(shù)組中的各個元素,Visual Basic把下標(biāo)值傳送給一個過程。本例中,單擊上述控件數(shù)組中的任意命令按

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

25、同顏色的線條。2 、重要屬性(1)x1,x2,y1,y2屬性 用來設(shè)定一條直線的兩個端點(diǎn)坐標(biāo),即(x1,y1)和(x2,y2)。在運(yùn)行時,可以通過改變x1,x2,y1,y2的屬性來移動它或調(diào)整它的大小。(2)BorderWidth屬性 用來設(shè)定直線的粗細(xì)。其值是一個整數(shù)值,默認(rèn)為1.(3)BorderColor屬性用來設(shè)定直線的顏色,默認(rèn)值為黑色。(4)BorderStyle屬性用來設(shè)定直線的類型。設(shè)置值所對應(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】制作一個5色閃爍彩燈。窗體中有五個直線控件和1個計(jì)時器,界面設(shè)計(jì)如圖5.5(a)所示。每一直線控件表示1盞燈。程序運(yùn)行時,每盞燈分別以各種顏色(紅、藍(lán)、黃、綠、青)交換變化,形成閃爍效果。圖5.5(a) 例5.6運(yùn)行結(jié)果操作步驟:(1)設(shè)計(jì)用戶界面 設(shè)置初始界面如圖5.5(b)所示,將直線放置在合適的位置,調(diào)整其長度。設(shè)置窗體上所用的五條直線和1個Timer控件的屬性。 圖5.5(b) 例5.6初始界面(2)編寫代碼 分析:題目要求每一個控件表示1盞燈,程序運(yùn)行時,每盞燈分別以不同的顏色,在不同的時刻交換變化,這一功能通過Timer事件來

27、實(shí)現(xiàn)。不同時間段的變化用全局變量控制,顯示不同的效果。(3)運(yùn)行程序,驗(yàn)證運(yùn)行結(jié)果 程序運(yùn)行后,出現(xiàn)如圖5.5(a)所示運(yùn)行界面,五個不同顏色的線條從左至右在不同時刻與白色交替顯示。(思考:如將本題目中的5個Line控件用一Line控件數(shù)組來實(shí)現(xiàn),如何操作)說明: 本題對線條顏色的設(shè)置是在程序運(yùn)行時,通過使用VB顏色常量來實(shí)現(xiàn)的。VB顏色符號常量與常量值的對應(yīng)如表5.5所示。 表5.5 VB顏色常量常量值說明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控件可以用來畫矩形,正方形,橢圓,圓,圓角矩形及圓角正方形,默認(rèn)為一個矩形,通過設(shè)置其Shape屬性可以畫出多種圖形。2 、重要屬性(1)Shape屬性 Shape屬性用于設(shè)定幾何圖形的類型,其值與對應(yīng)的幾何類型如表5.6所示: Shape屬性值幾何類型0-Rectangle矩形(默認(rèn)值)1-Square正方形2-Oval橢圓形3-Circle圓形4-RoundedRectangle圓角矩形5-RoundSquare圓角正方形表5.6 Shape屬性值與對應(yīng)的幾何類型關(guān)系表(3)FillStyl

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

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

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

32、ne每次只能選擇一項(xiàng),如果選擇另一項(xiàng)則會取消對前一項(xiàng)的選擇。此為系統(tǒng)默認(rèn)值1-Simple可以同時選擇多個列表項(xiàng),后續(xù)的選擇不會取消前面的所選項(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)行時用戶所選擇項(xiàng)目的文本內(nèi)容,等于List(ListIndex)。(5)Style屬性 該屬性用于確定列表框的外觀,只能在設(shè)計(jì)時設(shè)置。其取值可以為0-Standard(標(biāo)準(zhǔn)形式)和1-Checked(復(fù)選框形式),區(qū)別如圖5.8所示。當(dāng)取值

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

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

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

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論