VB 神童教程第二章第十节——综合示例四

在上一节,我们制作了一个 Style 为 0 的列表程序,现在我们来制作一个 Style 为 1 的列表程序。


虽然仅仅是 Style 的改变,但整个程序发生了完全的变化。本节中的程序更为科学,而且只需改动几行代码,同样适合上一节的程序。


在编制本节程序前,我们有必要对 For ··· Next ···循环结构语句做个了解。


一、For 循环语句:


在实际生活中,我们经常会遇到一些操作并不复杂,但需要重复多次处理的情况,如人口统计、银行利率的计算等,为此,Visual Basic 提供了循环语句来专门解决此类情况。


循环语句的具体情况,我们将在以后的章节中阐述,本节我们只是针对 For 循环语句做个大致的了解。


1、For ··· Next ···语句的一般格式:


For 变量 = Start To End [Step]


[需要循环的语句]


[Exit For]


Next 变量


说明:


(1)、For 后的“变量”与 Next 后的“变量”为同一个,“变量”应该是数值类型的。


(2)、Start 代表的是循环的初始值,End 代表的是循环的终值。假设从 1 到 100 进行循环,那么,循环初值是 1 ,终值是 100 ;假设从 1 到 50 进行循环,那么初值是 1 ,终值是 50 。


(3)、To 是循环中的关键字,表示从初值到终值的范围,不能省略。


(4)、Step 是步长值,代表变量的增量,既可以是正数(递增循环),也可以是负数(递减循环),但不能为 0 ,如果步长值为 1 即默认状态,可以省略不写。


(5)、需要循环的语句,既可以是一个,也可以是多个语句,但必须放在 For 与 Next 之间。


(6)、Exit For:当程序执行到此处,自动退出本层循环。


(7)、需要循环的语句与 Exit For 都可以省略,这时表示的是一个无内容的空循环,主要做为程序延迟使用。


2、示例一:


编写一个程序,用来计算 1 到 100 间所有整数的和是多少。


(1)、程序界面与控件属性:


程序界面与控件属性如图一,为了让大家看得更为清楚,我们将标签控件的 BoderStyle 属性设为 1 。



图一



(2)、程序功能:


用户点击“开始”按钮(CmdStart)开始计算,完成后将结果用标签(LblShow)显示出来。


(3)、书写代码:


“开始”按钮的点击事件:


Private Sub CmdStart_Click()


x = 0


For y = 1 To 100


x = x + y


Next y


LblShow.Caption = "最后的结果是:" & x


End Sub


说明:


(1)、1 到 100 中所有整数的和可以这样来看:1+2+3+······+100 ,即 100 次相加,那么这重复的 100 次相加可以通过 For 循环来完成。


(2)、程序中 y 只是用来决定循环次数的变量,通常的,我们会利用其他变量来编写程序,这里的 X 就是一个求和累加器,它的初值是 0 ,终值则是我们最后需要的数值。


(3)、X = X +y ,是指变量 X 与 y 相加后将新的值赋给 X 。当 X 为初始的 0 时,y 进入第一次循环即 y = 1 ,X + Y = 1 ;系统将 X = 1 记录下来,然后进入第二次循环即 y =2 ,X + Y = 3 (1 + 2),然后将 X = 3 记录下来并进入第三次循环,以此类推。这就将 1+2+3+······+100 的最终值算了出来。


(4)、经过第一百次循环,程序执行 Next y 后的语句,即将最后结果用标签显示出来。


3、示例二:


计算 1 到 100 间所有奇数的和。


只需将上例中的“开始”按钮的循环程序加上步长值即可。代码如下:


Private Sub CmdStart_Click()


x = 0


For y = 1 To 100 Step 2


x = x + y


Next y


LblShow.Caption = "最后的结果是:" & x


End Sub


二、列表程序二:


1、程序界面:


最终的程序界面如图二:



图二



跟上一节的内容相比,带复选框的选择是通过勾选复选项前面的复选框来确定一个表项是否被选中的,它可以一次选中多个表项并一次移动多个表项。


上一节的程序,一次只能移动一个表项。


2、前后两种程序的区别:


上一节的程序中,对单个表项进行移动,首先加入了是否选中的判断,然后再进行移动;全部移动,首先对目标框清零,再进行移动。它们虽然比较好理解,但程序的有效性却不佳。


本节的程序,对单个与全部表项进行移动,都采用循环法,可以一次移动多个表项。


3、程序代码:


(1)、窗体的载入事件(Form_Load)跟上一节一样:


Private Sub Form_Load()


LstLeft.AddItem "刘德华"


LstLeft.AddItem "张学友"


LstLeft.AddItem "郭富城"


LstLeft.AddItem "黎 明"


LstLeft.AddItem "谭咏麟"


LstLeft.AddItem "梅艳芳"


LstLeft.AddItem "张曼玉"


End Sub


(2)、向右按钮的点击事件(CmdRight):


Private Sub CmdRight_Click()


Dim X As Integer


While LstLeft.SelCount > 0


For X = 0 to LstLeft.LstCount - 1


If LstLeft.Selected(X) = True Then


LstRight.AddItem LstLeft.List(X)


LstLeft.RemoveItem X


Exit For


End If


Next X


Wend


End Sub


(3)、全部向右按钮的点击事件(CmdAllRight)


Private Sub CmdAllRight_Click()


Dim X As Integer


For X = 0 to LstLeft.ListCount - 1


LstRight.AddItem LstLeft.List(X)


Next X


LstLeft.Clear


End Sub


(4)、以此类推,输入向左按钮(CmdLeft)与全部向左按钮(CmdAllLeft)的点击事件,最后按 F5 键运行程序。