


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.1循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的概念實(shí)際的數(shù)據(jù)處理中,常需要進(jìn)行一些大量重復(fù)的操作如求:1+2+3+ +n1!+2!+3!+ .+n!這些操作都可有用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)VB中有多種循環(huán)結(jié)構(gòu),最常用的有 Do丄oop結(jié)構(gòu)和For.Next結(jié)構(gòu)5.2 DoLoop語句了/循環(huán)休、1繼續(xù)循環(huán)的條件DO循環(huán)的格式無條件循環(huán)DO循環(huán)體繼續(xù)循環(huán)的條件循環(huán)體LOOP當(dāng)循環(huán)前測(cè)試型DO WHILE 繼續(xù)循環(huán)的條件循環(huán)體LOOP當(dāng)循環(huán)后測(cè)試型終止循環(huán)條件循環(huán)體循環(huán)休DO循環(huán)體LOOP WHILE 繼續(xù)循環(huán)的條件直到循環(huán)前測(cè)試DO UNTIL 終止循環(huán)的條件循環(huán)體LOOP直到循環(huán)后測(cè)試型DO循環(huán)體LOOP
2、 UNTIL 終止循環(huán)的條件另外可以用EXIT DO語句終止循環(huán)例(p94-1.vbp)用exit do退出循環(huán)操作Private Sub Comma nd1_Click()Dim Sum As Sin gle, x As Si ngleSum = 0Dox = Val(I nputBox("e nter a value")If x = 0 Then Exit DoSum = Sum + xPrin t "sum=" SumLoopEnd Sub例 5-1(P95-1.VBP)計(jì)算 1+2+3+ .+100可以用當(dāng)循環(huán)來實(shí)現(xiàn)。Private Sub Co
3、mma nd1_Click()'當(dāng)循環(huán)Dim s As In teger, n As In tegers = 0: n = 1Do While n = 100s = s + nn = n + 1LoopLabel2.Capti on = "1+2+3+.+100=" & sEnd Sub循環(huán)體終止循環(huán)條件n1當(dāng)n=100s0直到口100s-s+nnn+1輸出sPrivate Sub Comma nd2_Click()'直到循環(huán)Dim s As In teger, n As In tegers = 0: n = 1Do Un til n > 10
4、0s = s + nn = n + 1LoopLabel2.Caption = "1+2+3+.+100=" & s & "(直到循環(huán))"End Sub1、 2、 3、100,試計(jì)算其累加和Private Sub Form_Load()Label1.Caption ="今有 100 個(gè)數(shù):Label2.Captio n =""Comma nd1.Captio n = "&C計(jì)算"End Sub例5-2(p96-1.vbp)判斷一個(gè)正整數(shù)是否是素?cái)?shù)。選用當(dāng)循環(huán)。Private Sub
5、 Comma nd1_Click()Dim n As Integer, i As Integer, a As StringSelect Case Val(Text1.Text)Case Is < 3MsgBox "請(qǐng)輸入一個(gè)大于 2 的整數(shù)! ", vbInformation + vbOKOnly," 注意"Case Is > 2147483647MsgBox "此數(shù)太大! ", vbInformation + vbOKOnly," 注意"Case Elsen = Val (Text1.Text)s =
6、 0: i = 2Do While i <= Sqr( n) And s = 0 If n Mod i = 0 The ns = 1Elsei = i + 1End IfLoopIf s = 0 The na ="是一個(gè)素?cái)?shù)”Else輸入一個(gè)正整數(shù)nI2? s0 (s為整除標(biāo)志)當(dāng)I二 Vn and s二0如果 n mod 1=0-真SlT _T n 弔 x|請(qǐng)輸入一個(gè)正整數(shù):綢J斷素?cái)?shù)997是一個(gè)素?cái)?shù)a ="不是一個(gè)素?cái)?shù)"End IfLabell.Caption = Str(n) & aEnd SelectTextl.SetFocusEnd Sub
7、例5-3(p97-1.vbp)計(jì)算n。計(jì)算公式:分析:分子為2保持不變?nèi)舻趎項(xiàng)的分母為p”,則第n+1項(xiàng)的分母為p”“ = . 2 p” 第1項(xiàng)除外,第2項(xiàng)的分母為 20,p的初值為0若前n項(xiàng)的乘積為sn,則前n+1項(xiàng)乘積為s計(jì)2SnPni輸入小數(shù)點(diǎn)后面有效數(shù)字位數(shù)mt"-Spsqr(2+p)直到Itp|<0. lin輸岀周率pi二s第1項(xiàng)的乘積為2,s的初值為2 通過前后兩個(gè)乘積的差,來控制循 環(huán)。從而得流程圖:Private Sub Comma nd1_Click()Dim m As Integer, p As Double, s As DoubleDim pi As Do
8、uble, f As Stri ng , t As Doublem = Val(Text1.Text)p = 0: s = 2Dot = s: p = Sqr(2 + p): s = s * 2 / p Loop Until Abs(t - s) < 0.1 八 m f = String(m - 1, "#")Text2.Text = Format(s, "0." & f) Text1.SetFocusEnd Sub例5-4輸入兩個(gè)正整數(shù),求它們的最大公約數(shù)(P98-VBP。用輾轉(zhuǎn)相除法,m n是兩個(gè)正整數(shù),r是余數(shù),用直到循環(huán)操作的流程圖
9、: 注:若m<n第一次作除法時(shí)r=m,第二作除法就會(huì)正常進(jìn)行。Private Sub Comma nd1_Click()Dim m As Integer, n As Integer, r As Integerm = Val(Text1.Text)n = Val(Text2.Text)輸入整數(shù) n注:叫11不能同時(shí)為0rm/n的余數(shù)除數(shù)作被除數(shù))n-r(余數(shù)作除數(shù)直到工二0輸岀最后一次作除法的除數(shù)mIf n * m = 0 The nMsgBox "兩個(gè)數(shù)都不能為 0 ! “"Exit SubEnd IfDor = m Mod nm = nn = rLoop Un ti
10、l r = 0Text3.Text = mEnd Sub5.3 For Next 語句FOR循環(huán)結(jié)構(gòu)一一計(jì)數(shù)循環(huán)FOR-NEXT循環(huán)結(jié)構(gòu)格式FOR循環(huán)變量=循環(huán)變量初值TO循環(huán)變量終值STEP循環(huán)變量增量 循環(huán)體NEXT循環(huán)變量FOR-NEXT循環(huán)結(jié)構(gòu)由三部分組成:FOR語句:即循環(huán)起始語句(又稱為循環(huán)說明語句),說明循環(huán)變量的初值、 增量(步長(zhǎng))和終值,實(shí)現(xiàn)對(duì)循環(huán)次數(shù)的控制,如上例中的i便是循環(huán)變量。循環(huán)體:給出循環(huán)操作語句組或程序段 NEXT語句:即循環(huán)終端語句,給 出了循環(huán)操作結(jié)束的位置,每次執(zhí)行到 next語句,循環(huán)變量都按步長(zhǎng)增值。 注意:FOR語句與NEXT語句必須成對(duì)出現(xiàn),缺一不
11、可; FOR語句必須在NEXT語句之前; FOR語句中的循環(huán)變量與 NEXT語句中的循環(huán)變量必須為同一變量 如果步長(zhǎng)為+1,則“STEP何省略.FOR-NEXT循環(huán)的執(zhí)行過程循環(huán)變量取得初值將循環(huán)變量的當(dāng)前值與終值比較: 如果循環(huán)變量的當(dāng)前值沒有超過終值,程序執(zhí)行循環(huán)體中的操作,遇next語句 后循環(huán)變量按步長(zhǎng)增值,然后又回到FOR語句,重復(fù)循環(huán)變量的當(dāng)前值與終值比 較的操作; 如果循環(huán)變量超過終值,程序終止循環(huán),跳過循環(huán)體,執(zhí)行next語句的后繼語 句.說明:注意程序的終止條件是循環(huán)變量的值超過終值”,而不是循環(huán)變量的值等于 終值”。如上例中,當(dāng)i=100,執(zhí)行了 s=s+i后,程序又回到f
12、or語句,i=i+1,i=101, 這時(shí)循環(huán)變量的值超過了終值,程序終止循環(huán),執(zhí)行 next之后的語句。當(dāng)循環(huán)體內(nèi)沒有對(duì)循環(huán)變量進(jìn)行修改時(shí),循環(huán)的次數(shù)可以直接從根據(jù)循環(huán)變 量的初值、終值和步長(zhǎng)計(jì)算出來:循環(huán)次數(shù)=|循環(huán)變量終值循環(huán)變量初值1|步長(zhǎng)|注意:如果在循環(huán)體中對(duì)循環(huán)變量進(jìn)行了修改,上述公式將不成立。循環(huán)變量應(yīng)盡量使用整型變量,以免出現(xiàn)誤差。因?yàn)閷?shí)型變量在存儲(chǔ)和運(yùn)算 過程中會(huì)出現(xiàn)誤差,至使循環(huán)次數(shù)多一次或少一次。循環(huán)變量初值和終值可以是正值、負(fù)值或零。步長(zhǎng)可以是正值或負(fù)值。注意:循環(huán)變量超過終值,是指沿循環(huán)變量變化的方向超過終值;所以當(dāng)步長(zhǎng)為正 時(shí),循環(huán)變量必須大于終值才終止循環(huán);當(dāng)步長(zhǎng)
13、為負(fù)時(shí),循環(huán)變量必須小于終值才 終止循環(huán).當(dāng)步長(zhǎng)為零時(shí),循環(huán)永不終止,循環(huán)變量可以在循環(huán)體中引用,也可以不引用,由程序需要定(7)EXIT FOR 語句 可以實(shí)現(xiàn)提前終止for-next循環(huán)。FOR i = 1 TO 100sum = sum + i * iIF sum >= 100 THEN EXIT FORNEXT iPRINT sum 例5-5利用for循環(huán)結(jié)構(gòu)顯示1000以內(nèi)的所有能被37整除的自然數(shù)字符串變量忍一Sri 從 1 到 1000如果n mod 37=0真&str(n)輸 Feral輸出數(shù)字串忍Private Sub Comma nd1_Click() Dim
14、 a As String, n As In teger a =""For n = 1 To 1000If n Mod 37 = 0 The na = a & Str( n) & vbCrLf End Ifill3148I185222259296333370創(chuàng)按開始按鈕 ,可以在文 本框中顯示 所有1000以內(nèi) 能被37整NextText1.Text = aEnd Sub注:Text1屬性 Multiline 設(shè)置為 True,屬性 ScrollBars設(shè)置為2 (Vertical),運(yùn)行時(shí)才會(huì)出現(xiàn) 垂直滾動(dòng)條,且這兩個(gè)屬性都只能在窗體設(shè)計(jì)時(shí) 設(shè)置,在運(yùn)行時(shí)這
15、兩個(gè)屬性是只讀的,不能更改。例5-6(p101-1.vbp)求從1000到1100之間的所有素?cái)?shù)程序流程如右圖:是一個(gè)用fornext實(shí)現(xiàn)的雙重循環(huán), 外層循環(huán)依次生成1000到1100之間的 各個(gè)數(shù),內(nèi)層循環(huán)對(duì)每一個(gè)數(shù)進(jìn)行測(cè) 試,測(cè)試后退出內(nèi)層循環(huán)后判斷:若s=0,是素?cái)?shù),輸出該數(shù);若s<>0,不是素?cái)?shù),n自動(dòng)加1,進(jìn)入 下一輪外循環(huán),準(zhǔn)備測(cè)試下一個(gè)數(shù)Private Sub Comma nd1_Click()Dim a As String, n As In tegerDim i As In teger, s As In tegera =""For n = 10
16、01 To 1100 Step 2s = 0For i = 2 To Sqr( n)If n Mod i = 0 The ns = 1Exit ForEnd IfNextIf s = 0 The n a = a & Str( n) & vbCrLfNextText1.Text = aEnd Sub字符串變量亂一"d 從1000到 1100(整除標(biāo)志)i 從 2 到 sqr (n)n mod i=0真E退出內(nèi)層循環(huán)s=0真輸出n冠 Foral10091013101910211031103310391049按開始按鈕, 可以在文本框 中顯示所有從1000到1100之 間的
17、素?cái)?shù)5.4列表框與組合框列表框(ListBox):是用戶可以從中進(jìn)行選擇的滾動(dòng)列表組合框(ComboBox)將文本框和列表框的功能結(jié)合在一起。用戶可通過在組合框中輸入文本來選定項(xiàng)目,也可從列表中選定項(xiàng)目列表框李寧4華梅 偉春紅 張王關(guān)Z1筍列表框示例-Bra列表中 的第一項(xiàng)是 ListI ndex=0 , ListCount 始終比最大的ListBox控件顯示項(xiàng)目列表,從其中可以選擇一項(xiàng)或多項(xiàng)。如果項(xiàng)目總數(shù)超過了可顯示的項(xiàng)目數(shù),就自動(dòng)在ListBox控件上 添加滾動(dòng)條1屬性基本屬性丄istBox最常用的屬性有 Name、Enabled、Visiblet禾口 Index(控件數(shù)組中用)等.Lis
18、t屬性:返回或設(shè)置控件的列表部分的項(xiàng)目object .List (index) = string object對(duì)象表達(dá)式,一個(gè) ListBox對(duì)象。In dex列表中具體某一項(xiàng)目的號(hào)碼。stri ng子符串表達(dá)式,指定列表項(xiàng)目。列表是一個(gè)字符串?dāng)?shù)組,數(shù)組的每一項(xiàng)都是一列表項(xiàng)目,在設(shè)計(jì)時(shí)可以通過屬 性瀏覽器得到。List數(shù)組的下標(biāo)是從0開始的,也就是說,第一個(gè)元素的下標(biāo)是0可在設(shè)計(jì)狀態(tài)添置項(xiàng)目,用Ctrl+Enter回車換行參見例(p102-1.vbp)。Listindex屬性:返回或設(shè)置控件中當(dāng)前選擇項(xiàng)目的索引在窗體設(shè)計(jì)時(shí)不可 用,只能在程序中設(shè)置和引用。說明表達(dá)式List(List1.Lis
19、tIndex)返回當(dāng)前選擇項(xiàng)目的字符串ListI ndex 值大 1。對(duì)于可以做多重選擇的控件,該屬性的行為取決 于所選擇項(xiàng)目的個(gè)數(shù)。如果只選擇了一個(gè)項(xiàng)目, Listindex返回該項(xiàng)目的 索引。在多重選擇中(MultiSelect=1/2) , Listindex返回包含在焦點(diǎn)矩形內(nèi)的項(xiàng)目的索引,而不管該項(xiàng)目是否被選。例(P102-1.VBP)Private Sub List1_Click()Textl = List1.List(0)Text2 = List1. List(List1. Listindex)End SubListCount屬性:返回控件的列表部分項(xiàng)目的個(gè)數(shù)。該屬性只能在程序中
20、設(shè) 置和引用.列表中最后一個(gè)元素的下標(biāo)=ListCount-1Selected屬性:返回或設(shè)置在ListBox控件中的一個(gè)項(xiàng)的選擇狀態(tài)。該屬性 是一個(gè)與List屬性一樣、有相同項(xiàng)數(shù)的布爾值數(shù)組。在窗體設(shè)計(jì)時(shí)是不可用 的。格式:objectSelected(ndex) = booleanObject對(duì)象表達(dá)式,其值是一個(gè) ListBox對(duì)象。in dex控件中項(xiàng)的索引號(hào)。Boolean 個(gè)用來指定項(xiàng)是否被選中的布爾表達(dá)式其值為:True表示項(xiàng)被選中,False (缺省值)表示項(xiàng)沒有被選中。說明:此屬性對(duì)能夠復(fù)選是尤其有用的。可以快速檢查在列表中哪些項(xiàng)已被選 中。也可以從代碼中使用該屬性選中或取消
21、選中列表中的一些項(xiàng)。Sorted屬性:返回一個(gè)值,指定控件的元素是否自動(dòng)按字母表順序排序,該屬性只能在設(shè)計(jì)狀態(tài)設(shè)置當(dāng)值為:True列表中的項(xiàng)目按字符碼順序排序。False (缺省值)列表中的項(xiàng)目不按字母表順序排序。Text屬性:ListBox控件返回列表框中詵擇的項(xiàng)目:返回值總與表達(dá)式 list(listlndex)的返冋值相同。只能在程序中設(shè)置和引用.在運(yùn)行時(shí)為只讀??梢?用Text屬性來確定當(dāng)前選擇的項(xiàng)目。(p102-2.vbp)Private Sub List1_Click()Textl = List1.List(0)Text2 = Listl.TextEnd SubMultiSelec
22、t屬性:返回或設(shè)置一個(gè)值,該值指示 是否能夠在ListBox控件中進(jìn)行復(fù)選以及如何進(jìn)行復(fù)選。在運(yùn)行時(shí)是只讀的0 (缺省值)不允許復(fù)選。1簡(jiǎn)單復(fù)選。鼠標(biāo)單擊或按下 SPACEBAR (空格鍵)在列表中選中或取消 選中項(xiàng)。(箭頭鍵移動(dòng)焦點(diǎn)。)2擴(kuò)展復(fù)選。按下 SHIFT并單擊鼠標(biāo)或按下 SHIFT以及一個(gè)箭頭鍵(上 箭頭、下箭頭、左箭頭、和右箭頭)將在以前選中項(xiàng)的基礎(chǔ)上擴(kuò)展選擇到當(dāng)前 選中項(xiàng)。按下 CTRL并單擊鼠標(biāo)來在列表中選中或取消選中項(xiàng)Style屬性值為:常數(shù)值描述VbListBoxStandard0(缺省值)標(biāo)準(zhǔn)的。ListBox控件按它在 Visual Basic老版本中的樣 子顯示;即
23、,象是文本項(xiàng)的列表。VbListBoxCheckbox1復(fù)選框。在 ListBox控件中,每一個(gè)文本項(xiàng)的邊上都有一個(gè)復(fù)選框。在ListBox中可以選擇多項(xiàng)。2.方法Additem方法 用于將項(xiàng)目添加到 ListBox控件,語法格式:objectAddItem item, indexItem必需的。字符串表達(dá)式,它用來指定添加到該對(duì)象的項(xiàng)目。Index可選的。是整數(shù),它用來指定新項(xiàng)目或行在該對(duì)象中的位置。對(duì)于ListBox控件的首項(xiàng),index為0。說明:如果所給出的index值有效,則item將放置在object中相應(yīng)的位置。 如果省略index,當(dāng)Sorted屬性設(shè)置為 True 時(shí),ite
24、m 將添加到恰當(dāng)?shù)呐?序位置,當(dāng)Sorted屬性設(shè)置為False時(shí),item將添加到列表的結(jié)尾Removeitem方法:用以從 ListBox控件中刪除一項(xiàng)。語法格式:objectRemoveltem indexobject必需的。一個(gè)對(duì)象表達(dá)式,其值為應(yīng)用于”列表中的一個(gè)ListBox對(duì)象。index必需的。一個(gè)整數(shù),它表示要?jiǎng)h除的項(xiàng)或行在對(duì)象中的位置。對(duì)于ListBox中的首項(xiàng),in dex = 0。Clear方法:用于清除ListBox的內(nèi)容。語法格式:object.Clearobject所在處代表一個(gè)對(duì)象表達(dá)式,其值為列表中的一個(gè)ListBox對(duì)象。例5-7(p102-3.vbp)用列
25、表框顯示1000到1100之間的素?cái)?shù)Private Sub Comma nd1_Click()10091013101910211031103310391049按開始按鈕, 可以在文本框 中顯不所有從1000到1100之 間的素?cái)?shù)Dim n As In tegerDim i As In teger, s As In tegerFor n = 1001 To 1100 Step 2s = 0For i = 2 To Sqr( n)If n Mod i = 0 The ns = 1Exit ForEnd IfNextIf s = 0 Then Listl.Addltem nNextEnd Sub例5
26、-8(p103-1.vbp)同構(gòu)數(shù)是一個(gè)整數(shù),它恰好出現(xiàn)在其平方的右端,例如5*5=25,25*25=125 ,即卩5和25都是同構(gòu)數(shù)。求10000以內(nèi)的同構(gòu)數(shù)11從1到9999 (for循環(huán))情況n (select選擇,n為測(cè)試表達(dá)式)n*2 mod 10輸出d, n*2n*2 mod 100輸出兒n*2n"2 mod 1000輸出叫iT2n2 mod 10000輸出n, rT21 位同構(gòu)數(shù) n: n=n*n mod 102 位同構(gòu)數(shù) n: n=n*n mod 1003 位同構(gòu)數(shù) n: n=n*n mod 10004 位同構(gòu)數(shù) n: n=n*n mod 10000 可以用for循環(huán)
27、中嵌套select選擇語句來實(shí)現(xiàn),流程如圖:Private Sub Comma nd1_Click()Dim n As LongFor n = 1 To 10000Select Case nCase n * n Mod 10List1.AddItem Format( n, ” ") & Format(n * n, ”)Case n * n Mod 100List1.AddItem Format( n, " ") & Format(n * n, "")Case n * n Mod 1000List1.AddItem Format(
28、 n, " ") & Format(n * n, "")Case n * n Mod 10000List1.AddItem Format( n, " ") & Format(n * n, "")152563625625765776376141376625390625J按開始按辺, 可以?shī)Y列表框 中顯S10000以 內(nèi)所有同構(gòu)數(shù)同構(gòu)數(shù)nn的平方End SelectNextEnd Sub例5-9算術(shù)練習(xí)程序(P104-1 .VBP )。出題部分由窗體的Activate事件過程實(shí)現(xiàn)Activate事件當(dāng)一
29、個(gè)窗體對(duì)象成為活動(dòng)窗口時(shí)發(fā)生。程序中用Forml.Tag來存放生成的題目數(shù)。答題部分通過文本框的KeyPress事件過程實(shí)現(xiàn)。程序中用Listl.Tag來存放完成 的題目數(shù)。注意:窗體設(shè)計(jì)時(shí)或初始化控件時(shí)必須把程序使用的Tag賦值為0,否則編譯時(shí)會(huì)報(bào)類型不匹配,因?yàn)門ag默認(rèn)為字符串型。由于屬性 Tag是附加在各控件 的,在這里相當(dāng)于窗體文件(模塊)級(jí)的變量,共窗體內(nèi)各過程共享.Private Sub Form_Load()初始化控件Labell.Captio n =""Label1.BackStyle = 1Label1.BackColor = QBColor(15)Te
30、xt1.Text =""Frame1.Captio n =""Label2.Captio n =""Label3.Captio n =""Command1.Caption =" 關(guān)閉(&C)"Image1.Picture = LoadPicture("D:notevbasicVB3EXAMPLEPOINT02.ICO")Form1.Tag = 0 '強(qiáng)制使Tag屬性為數(shù)值List1.Tag = 0End SubPrivate Sub Form_Activate
31、()'出題過程Dim a As In teger, b As In teger, p As In tegerRan domize (Time)a = In t(10 + 90 * Rnd)b = In t(10 + 90 * Rnd)p = Int(2 * Rnd)Select Case pCase 0Label1.Caption = a & "+" & b & "="Text1.Tag = a + bCase 1Label1.Capti on = a & "-" & b & &
32、quot;="Textl.Tag = a - bEnd SelectForml.Tag = Forml.Tag + 1Textl.SelStart = 0Textl.Text =""End SubPrivate Sub Text1_KeyPress(KeyAscii As In teger)'答題過程Dim frm As Strin g, item As StringIf KeyAscii = 13 The nfrm = ”!"If Val (T ext1.Text) = Text1.Tag The nitem = Format(Label1.C
33、aptio n & Text1.Text, frm) & " V"'生成一個(gè)列表項(xiàng)List1.Tag = List1.Tag + "1"Elseitem = Format(Label1.Caption & Text1.Text, frm) & " x "End IfList1.AddItem item, 0Label2.Caption ="共"& Form1.Tag & "題,"& Chr(13) & "正確率為:
34、"Label3.Capti on = Format(List1.Tag / Form1.Tag, "#0.0#%")Form_ActivateEnd IfEnd Sub選擇和移動(dòng)數(shù)據(jù)例 5-10(P105-VBP)相互移動(dòng)。注:listbox的style.Multiselect屬性只能在窗體設(shè)計(jì)時(shí)完成,在程序運(yùn)行時(shí)是只 讀的,不能更改。本例中:List1.Style=1(帶復(fù)選框),List2.Multiselect=2(擴(kuò)展復(fù) 選,即多項(xiàng)選擇),列表框的其它屬性都取默認(rèn)值。Private Sub Form_Load()初始化控件Label1.Caption =&
35、quot;經(jīng)營(yíng)商品"Label2.Caption ="需采購(gòu)商品"Label3.Caption = "Ctrl或Shift+鼠標(biāo)左鍵可以在右框中選擇多項(xiàng)數(shù)據(jù)”Command1.Caption =" 選項(xiàng)右移"Command2.Caption =" 全部右移"Command3.Caption =" 選項(xiàng)左移"Command4.Caption =" 全部左移"Listl.Addltem "電冰箱"Listl.Addltem "洗衣機(jī)"Lis
36、tl.Addltem "彩色電視機(jī)"Listl.Addltem "組合音響"Listl.Addltem "影碟機(jī)"Listl.Addltem "電水壺"Listl.Addltem "飲水機(jī)"Listl.Addltem "微波爐"Listl.Addltem "照相機(jī)"Listl.Addltem "計(jì)算機(jī)"Listl.Addltem "電話機(jī)"End SubPrivate Sub Comma nd1_Click()
37、9;選項(xiàng)右移Dim i As In tegeri = 0Do While i < List1.ListCo untIf List1.Selected(i) = True ThenList2.AddItem List1 丄 ist(i)List1.RemoveItem (i)Elsei = i + 1End IfLoopEnd SubPrivate Sub Comma nd2_Click()'全部右移Dim i As In tegerFor i = 0 To List1.ListCou nt - 1List2.AddItem (List1. List(i)NextList1.Cle
38、arEnd SubPrivate Sub Comma nd3_Click()'選項(xiàng)左移Dim i As In tegeri = 0Do While i < List2.ListCo untIf List2.Selected(i) = True The n List1.Addltem (List2.List(i) List2.RemoveItem (i)Elsei = i + 1End IfLoopEnd SubPrivate Sub Comma nd4_Click()'全部左移Dim i As In tegerFor i = 0 To List2 丄 istCou nt
39、- 1List1.AddItem (List2.List(i)NextList2.ClearEnd Sub542 組合框組合框控件將文本框和列表框的功能結(jié)合在一起。有了這個(gè)控件,用戶可通過 在組合框中輸入文本來選定項(xiàng)目,也可從列表中選定項(xiàng)目。組合框向用戶提供了供選擇的列表。如果項(xiàng)目數(shù)超過了組合框能夠顯示的項(xiàng)目 數(shù),控件上將自動(dòng)出現(xiàn)滾動(dòng)條。用戶即可上下或左右滾動(dòng)列表。 此外,組合框節(jié)省了窗體的空間。組合框的樣式每種樣式都可在設(shè)計(jì)時(shí)或運(yùn)行時(shí)來設(shè)置,而且每種樣式都Visual Basic常數(shù)來設(shè)置組合框的樣式(Style)。有三種組合框樣式。使用數(shù)值或相應(yīng)的下拉式組合框簡(jiǎn)單組合框vbComboDro
40、pDow nvbComboSimple下拉式列表框vbComboDropDow nList卜拉式組合框 Jx|旨o(jì)ral重慶交通學(xué)院在缺省設(shè)置(Style = 0)下,組合框?yàn)橄吕浇M框 在屏幕上只顯示文本編輯框和一個(gè)下拉箭頭。用戶 可(象在文本框中一樣)直接輸入文本,也可單擊 組合框右側(cè)的附帶箭頭打開選項(xiàng)列表。選定某個(gè)選項(xiàng)后,將此選項(xiàng)插入到組合框頂端的文本部分中。當(dāng)控件獲得焦點(diǎn)時(shí),也可按ALT+ DOWN ARROW 鍵打開列表。西"財(cái)e華I回田重慶交通學(xué)院 mi簡(jiǎn)單組合框(Style = 1 )將組合框Style屬性 設(shè)置為1將指定一個(gè)簡(jiǎn)單的組合框,任何時(shí)候 都在其內(nèi)顯示列表。I
41、重慶商學(xué)院為顯示列表框部分,必須將列表框繪制得足夠 大。當(dāng)選項(xiàng)數(shù)超過可顯示的限度時(shí)將自動(dòng)插入 一個(gè)垂直滾動(dòng)條。用戶可直接輸入文本,也可從 列表中選擇。象下拉式組合框一樣,簡(jiǎn)單組合框也允許用戶輸入那些不在列表 中的選項(xiàng)。下拉式列表框(Style = 2 )下拉式列表框(Style = 2 )與正規(guī)列表框相似一它顯示項(xiàng)目的列表,用戶必須從中選擇。但下拉式列表框與列表框的不同之處在于,除非單擊框右側(cè)的箭頭,否則不顯示列表。這種列表框 與下拉式組合框的主要差別在于,用戶不能在列 表框中輸入選項(xiàng),而只能在列表中選擇。當(dāng)窗體 上的空間較少時(shí),可使用這種類型的列表框。例(P107-1.VBP) ComboB
42、ox 的三種形式Private Sub Form_Load()Combo3.Text ="組合框樣式0"Combo2.Text ="組合框樣式1"'Combol.Text ="組合框樣式2"End Sub注:過程中最后一句編譯不能通過,因?yàn)橄吕斜砜虻奈谋究虿糠质侵蛔x的, 不能寫入新的數(shù)據(jù)項(xiàng)。注意:當(dāng)組合框的樣式為0或1,即為下拉式組合框和簡(jiǎn)單組合框時(shí),在它的 列表框中選擇的數(shù)據(jù)項(xiàng),會(huì)立即在它的文本框中顯示出來,在它的文本框中輸入的數(shù)據(jù),可以用語句:組合框名.Addltem 組合框名.Text,index添加到它的列表框中。下
43、拉列表框Style=2例5-11(P108-1.VBP)前面算術(shù)練習(xí)程序中的列表框改為組合框,在窗體設(shè)計(jì) 時(shí),設(shè)置Style=2(DropdownList,下拉列表框),并增加一個(gè)重置按鈕,可重復(fù) 練習(xí)。Private Sub Form_Load()'初始化控件Label1.Captio n =""Label1.BackStyle = 1Label1.BackColor = QBColor(15)Text1.Text =""Frame1.Captio n =""Label2.Captio n =""Labe
44、l3.Captio n =""Command1.Caption =" 關(guān)閉(&C)"Command2.Caption =" 重置(&R)"Image1.Picture =LoadPicture("D:notevbasicVB3EXAMPLEPOINT02.lCO")Form1.Tag = 0 '強(qiáng)制使Tag屬性為數(shù)值Combo1.Tag = 0End Sub Foral重置(B)關(guān)閉(C)Private Sub Form_Activate()'出題過程Dim a As Integer
45、, b As Integer, p As IntegerRandomize (Time)a = Int(10 + 90 * Rnd)b = Int(10 + 90 * Rnd)p = Int(2 * Rnd)Select Case pCase 0Label1.Caption = a & "+" & b & "=" Text1.Tag = a + bCase 1 Label1.Caption = a & "-" & b & "="Text1.Tag = a - bEnd
46、 SelectForm1.Tag = Form1.Tag + 1Text1.SelStart = 0Text1.Text = ""End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer) 答題過程 Dim frm As String, item As StringIf KeyAscii = 13 Thenfrm = "!"生成一個(gè)列表項(xiàng)正確率為: "If Val(Text1.Text) = Text1.Tag Thenitem = Format(Label1.Capti on & Te
47、xtl.Text, frm) & " V Combo1.Tag = Combo1.Tag + 1Elseitem = Format(Label1.Capti on & Textl.Text, frm) & " x End IfCombo1.AddItem item, 0Combo1.ListIndex = 0Label2.Caption = " 共" & Form1.Tag & " 題," & Chr(13) & "Label3.Caption = Format(Com
48、bo1.Tag / Form1.Tag, "#0.0#%") Form_ActivateEnd IfEnd SubPrivate Sub Command2_Click() 重置過程Forml.Tag = 0Combol.Tag = 0Combol.ClearLabel3.Caption ="歡迎重新開始!"Label2.Captio n =""Form_ActivateTextl.SetFocusEnd SubPrivate Sub Comma nd1_Click()Un load Me簡(jiǎn)單組合框Style=1End Sub例5-12(P109-1.VBP)簡(jiǎn)易抽獎(jiǎng)機(jī)使用簡(jiǎn)單組合框,在窗體設(shè)計(jì)時(shí)設(shè)置Style=1(Simple Combo)Private Sub Form_Load() 初始控件Frame1.Caption = ”請(qǐng)輸入?yún)⒓映楠?jiǎng)的號(hào)碼”Label1.Caption ="輸入所有抽獎(jiǎng)號(hào)碼后,按開始按鈕,將得到中獎(jiǎng)號(hào)碼Comma nd1.Captio n =" 開始"Command2.Caption = ”自動(dòng)生成抽
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 與業(yè)內(nèi)人士交流的計(jì)劃制定方式
- 2025年酒店、廚房設(shè)備用品項(xiàng)目發(fā)展計(jì)劃
- 七年級(jí)數(shù)學(xué)下冊(cè)教學(xué)計(jì)劃、單元分析、全冊(cè)教案(生本)、總結(jié)
- 七年級(jí)下冊(cè)《直方圖》課件與練習(xí)
- 河南省三門峽市2024-2025學(xué)年高一上學(xué)期1月期末考試 數(shù)學(xué) 含解析
- 2025年繞線絞線設(shè)備項(xiàng)目合作計(jì)劃書
- 構(gòu)建需求實(shí)現(xiàn)的進(jìn)度監(jiān)控系統(tǒng)
- 2025年微污染防控設(shè)備項(xiàng)目發(fā)展計(jì)劃
- 2025年通信設(shè)備、計(jì)算機(jī)及其他電子設(shè)備項(xiàng)目發(fā)展計(jì)劃
- 2025年CO2氣體保護(hù)藥芯焊絲項(xiàng)目建議書
- 2023年河南省鄭州市一模道德與法治試題(含答案)
- 2023年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招(語文)試題庫(kù)含答案解析
- FZ/T 54024-2019錦綸6預(yù)取向絲
- EHS工作總結(jié)報(bào)告
- 紀(jì)委書記政治畫像
- 聚氯乙烯(PVC)課件
- 裝飾施工工藝課件
- 2022年云南省中考數(shù)學(xué)試卷及答案
- 30453自考機(jī)電一體化技術(shù)及應(yīng)用小抄
- 《老人與?!氛n件31張 統(tǒng)編版高中語文選擇性必修上冊(cè)
- 旅游規(guī)劃收費(fèi)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論