1、单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,第,7,章,过程,例,2-1,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,7,章,过程,过程,第七章,本章内容,通用过程,参数传递,嵌套调用,过程、变量的作用域,程序举例,多窗体与,Sub Main,过程,Function,过程,Sub,过程,引言,在,VB,中的两种过程:,(,1,)由系统提供过程,系统提供的,内部函数过程,(,如,sqr,函数,),和,事件过程,(,click,事件)。,(,2,)由用户自定义过程,用户根据实际应用的需要而自行设计的过程,这样的过程称为“,通用过程,”,引言
2、通用过程分为两类:,函数过程:以,Function,保留字开始的过程。,子程序过程:以,Sub,保留字开始的过程;,例,5.19,求解,s=1!,+2!+3!+,+10!,的值,采用两种不同解法,(,1,)解法一:采用,两重循环,,外循环,10,次,每次循环计算一次阶乘,把每次阶乘值累加起来,即得求解结果。,Dim s As Long,t As Long,s=0,For j=1 To 10,计算,10,个阶乘,t=1,计算,1,个阶乘前,先赋初值,For k=1 To j,计算,j!,,需要循环,j,次,t=t*k,连乘,j,次,Next k,s=s+t,把每次计算得到的阶乘值,t,累加,N
3、ext j,Print s,阶乘,n!(n!,123n),Private Sub,Form_Load,(),Show,Dim t As Long,s As Long,i As Integer,t=1,For i=1 To 5,t=t*i,Next i,s=t,例,7.2,计算,5!+10!,t=1,For i=1 To 10,t=t*i,Next i,s=s+t,Print 5!+10!=;s,End Sub,因为计算,5!,和,10!,都要用到阶乘,n!(n!,123n),所以把计算,n!,编成,Sub,过程。,Private Sub,Form_Load,(),Show,Dim y As L
4、ong,s As Long,Call Jc(5,y),s=y,Call Jc(10,y),s=s+y,Print 5!+10!=;s,End Sub,程序运行结果:,5!+10!,3628920,Private Sub,Jc,(n As Integer,t As Long),Dim i As Integer,t=1,For i=1 To n,t=t*i,Next i,End Sub,注意参数,n,及,t,的调用情况,例,7.2,计算,5!+10!,过程有两个重要作用:一是把一个复杂的任务分解为若干个小任务,可以用过程来表达,从而使任务更易理解,更易实现,将来更易维护;二是代码重用,使同一段代码
5、多次复用。,过程的作用,过程调用示例,把相同的任务编成相对独立的“子过程”,当,事件过程,需要执行这个任务时,可使用调用语句,(,如,Call),实行调用。子过程执行完后,会返回,事件过程,中调用语句,Call,的后续语句继续执行,调用过程,Call,SubA,Call,SubA,Call,SubB,子过程,SubA,子过程,SubB,通用过程,例,7.1,Sub,过程示例,Private Sub,Form_Load,(),Show,Call mysub1(30),Call mysub2,Call mysub2,Call mysub2,Call mysub1(30),End Sub,程序运行结
6、果,Private Sub mysub1(n),Print,String(n,*),End Sub,Private Sub mysub2(),Print*;Tab(30);*,End Sub,Sub,过程,参数,n,无参数,Sub,过程的定义,格式:,Static,Public,|,Private,Sub,过程名,(,参数表列,),语句块,Exit Sub,语句块,End Sub,功能:定义一个以,为名的,Sub,过程。,(1),在,VB,中,,Sub,过程又称为子过程。,(2),在子过程中如果没有形参,调用时括号()必须省略。,Call mysub2,或,mysub2,Sub,过程的调用,格
7、式:,Call,过程名,(,实参列表,),或,过程名 实参列表,说明:,实参的个数、类型、顺序应与相应的形参保持一致,子过程中如果没有形参,则调用中也无实参。,第,2,种调用方式与第,1,种相比,结果一样,只是去掉,Call,和一对括号,(),。,例如,调用名为,mysub1,的过程:,Call mysub1(30)mysub1 30,函数过程,StaticPublic|Private,Function,函数过程名,(,参数列表,),As,类型,语句块,函数名,=,返回值,Exit Function,语句块,函数名,=,返回值,End Function,功能:定义一个以,为名的,Functio
8、n,过程,。,函数过程体,函数过程说明,1.,As,类型:返回值的类型,2.,函数名,=,返回值,函数过程必须返回函数值,而函数名就代表了函数值,在函数体内至少对函数名赋值一次。若不赋值则默认返回值为,0,或空串或空值。,函数名本身就是变量。,函数过程的调用,形式:,变量名,=,函数过程名(实参列表),或,print,函数过程名,(,实参列表,),功能:调用一个已定义的,Function,过程。,jiechen(5),jiechen(6),jiechen(7),a=jiechen(5),b=jiechen(6),c=jiechen(7),Print jiechen(5)+jiechen(6)+
9、jiechen(7),将,n!,的,Sub,过程改为,Function,过程。,Private Sub,Form_Load,(),Show,Dim s As Long,s=Jc(5)+Jc(10),Print 5!+10!=;s,End Sub,Function,Jc,(n As Integer)As Long,Dim i As Integer,t as Long,t=1,For i=1 To n,t=t*i,Next i,Jc,=t,End Function,例,7.3,计算,5!+10!,Function,Jc,(n%)As Long,Dim i As Integer,Jc,=1,For
10、i=1 To n,Jc,=,Jc,*i,Next i,End Function,因为计算,5!,和,10!,都要用到阶乘,n!(n!,123n),所以把计算,n!,编成,Sub,过程。,Private Sub,Form_Load,(),Show,Dim y As Long,s As Long,Call Jc(5,y),s=y,Call Jc(10,y),s=s+y,Print 5!+10!=;s,End Sub,Private Sub,Jc,(n As Integer,t As Long),Dim i As Integer,t=1,For i=1 To n,t=t*i,Next i,End S
11、ub,例,7.2,计算,5!+10!,把求两个数中的大数编成,Function,过程,过程名为,Max,Private Sub,Form_Load,(),Show,Dim a As Single,b As Single,c As Single,Dim s As Single,a=,Val(InputBox,(,输入第一个数,),b=,Val(InputBox,(,输入第二个数,),c=,Val(InputBox,(,输入第三个数,),s=,max(a,b),Print,最大数是,:;,max(s,c),End Sub,Function,max(m,!,n!)As Single,If m n T
12、hen,max=m,Else,max=n,End If,End Function,调用,调用,例,7.4,输入三个数,求出它们的最大数,实参传给形参,(,a,m,),通过函数名,max,带回一个结果,把求两个数中的大数编成,Sub,子过程,过程名为,Max,Private Sub,Form_Load,(),Show,Dim a As Single,b As Single,c As Single,Dim s As Single,m As Single,a=,Val(InputBox,(,输入第一个数,),b=,Val(InputBox,(,输入第二个数,),c=,Val(InputBox,(,输
13、入第三个数,),Call,max(a,b,s),Call,max(s,c,m),Print,最大数是,:;m,End Sub,Sub,max(m,!,n!,t!),If m n Then,t=m,Else,t=n,End If,End Function,例,7.4,输入三个数,求出它们的最大数,函数过程与,Sub,过程的区别,(1),函数名,是一个变量,它有值,有类型,在函数体中至少赋值一次,并通过它可带回一个结果;而,Sub,过程名,,它无值,无类型,在,Sub,过程体内不能赋值,不能通过它带回结果。,注意:,Sub,过程若要带回结果,必须通过形参与实参的地址传递得到结果,调用时可得到多个参
14、数值。,函数过程与,Sub,过程的区别,(2),调用时,子过程调用是一句独立的语句。格式:,Call,过程名,(,实参列表,),或,过程名 实参列表,函数过程不能作为单独的语句加以调用,必须参与表达式运算。,变量名,=,函数过程名(实参列表),或,print,函数过程名,(,实参列表,),a=jiechen(5),b=jiechen(6),c=jiechen(7),Print jiechen(5)+jiechen(6)+jiechen(7),说明,:,(,1,)如果仅仅为实现一个动作,而无任何返回结果,只能用,Sub,子过程,实现。,(,2,)如果需要返回一个结果,既可用函数过程实现也可用子过
15、程实现。,(,3,)如果需要返回多个结果,可用函数过程实现也可用子过程实现,同时必须结合其他的形式,如全局变量、传地址(实参形参间的传递)等。,函数过程与,Sub,过程,函数过程定义的方法,自定义函数过程有两种方法:,(1),利用“工具”菜单下的“添加过程”命令定义,生成一个函数过程的框架。,(2),利用代码窗口手工输入代码的方式建立函数过程。,通用过程,(Sub/Function),过程可以保存在两种模块中:,窗体模块,(.,frm,),和,标准模块,(.bas),(1),在窗体模块中创建通用过程:,可以在代码窗口中直接键入来创建,Sub,过程,选择“工具”菜单中的“添加过程”命令,(2),
16、在标准模块中创建通用过程:,选择,“,工程,”,菜单中的,“,添加模块,”,命令,保存为一个独立的,“,.bas,”,文件,举例:,把例,7.3,的函数,max(m,n),存放在模块文件中,创建通用过程的方法,参数的传递,参数传递,:指主调过程的实参传递给被调过程的形参。,形参,:是指在定义过程时出现在参数列表中的,变量名或数组名,,这些变量名只能在过程内部使用,形式参数不能是常量。,实参,:是调用过程中已组织好的准备传给形参的,常量、变量、表达式,或,数组控件对象,等。,s=,max(a,b),Function,max(m,n)As Single,End Function,实参,形参,定义过
17、程和调用过程的示例:,调用过程:,Call Mysub(100,计算机,,,1.5),定义过程:,Sub,Mysub(t,As,Integer,s,As,String,y,As Single),“,形实结合,”是按照位置结合的,即第一个实参值,(100),传送给第一个形参,t,,第二个实参值,(“,计算机”,),传送给第二个形参,s,,第三个实参值,(1.5),传送给第三个形参,y,。,参数传递的方式,地址传递,:缺省或加“,ByRef,”,,形参得到的是实参的地址,当形参值改变时实参的值也改变,也叫,双向传递,。,值传递,:在形参前加“,ByVal,”,,形参得到的是实参的值,形参值的改变不
18、会影响实参的值。也叫,单向传递。,注意,:无论哪种传递,实际参数必须与定义过程时的形式参数在个数、类型、顺序上保持一一对应。,设置两个通用过程,Test1,和,Test2,,分别按值传递和按地址传递,Private Sub,Form_Load,(),Dim x As Integer,Show,x=5,Print,执行,test1,前,,x=;x,Call test1(x),Print,执行,test1,后,,test2,前,,x=;x,Call test2(x),Print,执行,test2,后,,x=;x,End Sub,Sub test1(ByVal t As Integer),t=t+5
19、End Sub,Sub test2(s As Integer),s=s-5,End Sub,运行结果,执行,Test1,前,,x=5,执行,Test1,后,,Test2,前,,x=5,执行,Test2,后,,x=0,例,7.5,参数传递方式示例,按值传递,按地址传递,传递方式示意图,5,Form_Load,(),test1(),x,t,实参,形参,(a),值传递,5,x,s,(b),地址传递,实参和形参共享单元,0,Form_Load,(),test2(),5,10,因为计算,5!,和,10!,都要用到阶乘,n!(n!,123n),所以把计算,n!,编成,Sub,过程,采用,Print,直接
20、在窗体上输出结果。,Private Sub,Form_Load,(),Show,Dim y As Long,s As Long,Call Jc(5,y),s=y,Call Jc(10,y),s=s+y,Print 5!+10!=;s,End Sub,程序运行结果:,5!+10!,3628920,Private Sub,Jc,(n As Integer,t As Long),Dim i As Integer,t=1,For i=1 To n,t=t*i,Next i,End Sub,注意参数,n,及,t,的调用情况,例,7.2,计算,5!+10!,把求两个数中的大数编成,Sub,子过程,过程名为
21、Max,Private Sub,Form_Load,(),Show,Dim a As Single,b As Single,c As Single,Dim s As Single,m As Single,a=,Val(InputBox,(,输入第一个数,),b=,Val(InputBox,(,输入第二个数,),c=,Val(InputBox,(,输入第三个数,),Call,max(a,b,s),Call,max(s,c,m),Print,最大数是,:;m,End Sub,Sub,max(m,n,t),If m n Then,t=m,Else,t=n,End If,End Function,调
22、用,调用,例,7.3,输入三个数,求出它们的最大数,在一个过程,(Sub,过程和,Function,过程,),中调用另外一个过程。,例,7.5,输入两个数,n,、,m,,求组合数,C,n,m,的值,C,n,m,=,n!,m!(n-m,)!,7.3,过程的嵌套调用,Private Sub,Form_Load,(),Show,m=,Val(InputBox,(,输入,m,的值,),n=,Val(InputBox,(,输入,n,的值,),If m n Then,MsgBox,输入数据错误,0,检查错误,End,End If,Print,组合数是:,;,Calcomb(n,m),End Sub,Pri
23、vate Function,Calcomb(n,m),Calcomb,=,Jc(n,)/(,Jc(m,)*,Jc(n,-m),End Function,Private Function,Jc(x,),t=1,For i=1 To x,t=t*i,Next i,Jc,=t,End Function,程序中,采用了过程的嵌套调用方式。在事件过程,Form_Load,(),中调用了,Calcomb,过程,而在,Calcomb,过程中调用了三次,jc,过程。,调,用,调,用,过程的嵌套调用,a=,Calcomb(n,m,),b=,Jc(n,),事件过程,Form_Load,Function,过程,Ca
24、lcomb(n,m,),Function,过程,Jc(x,),结束,开始,变量的作用域,作用域,:变量、过程随所处的位置不同,可被访问的范围。,应用程序,(.,vbp,),文件,至少有一个或若干个窗体模块,(.,frm,),文件,其它模块如类模块,(.,cls,),文件等,可以有一个或若干个标准模块,(.bas),文件,事件过程,(sub),子过程,(sub),函数过程,(function),子过程,(sub),函数过程,(function),自定义属性过程,自定义方法过程,自定义事件过程,通用过程,(Sub/Function),过程可以保存在两种模块中:,窗体模块,(.,frm,),和,标准
25、模块,(.bas),(1),在窗体模块中创建通用过程:,可以在代码窗口中直接键入来创建,Sub,过程,选择“工具”菜单中的“添加过程”命令,(2),在标准模块中创建通用过程:,选择,“,工程,”,菜单中的,“,添加模块,”,命令,保存为一个独立的,“,.bas,”,文件,举例:,把例,7.3,的函数,max(m,n),存放在模块文件中,创建通用过程的方法,变量的作用域,局部变量:,在,窗体模块,(.,frm,),和,标准模块,(.bas),的,过程内,声明的变量,只能在本过程中使用。,窗体,/,模块级变量,:在,窗体模块,(.,frm,),和,标准模块,(.bas),“,通用声明,”段中用,D
26、im,语句或用,Private,语句 声明的变量,可被本窗体,/,模块的任何过程访问。,全局变量,:在,标准模块,(.bas),“,通用声明”段中用,Public,语句声明的变量,可被本应用程序的,各,窗体模块,(.,frm,),和,标准模块,(.bas),任何过程或函数访问。,1.,局部变量,在一个,过程内部,用,Dim,或,Static,声明的变量称为局部变量。只能在本过程中有效。在一个窗体中,不同过程中定义的局部变量可以同名。例如,在一个窗体中定义,Private Sub Command1_Click(),Dim Sum As Integer,Sum=1,.,End Sub,Privat
27、e Sub Command2_Click(),Dim Sum As Single,Sum=1.5,.,End Sub,这两个同名变量,Sum,没有任何联系,在窗体模块的,“通用声明”,段中声明的变量称为模块级变量,可以在一个窗体的不同过程中使用。,Dim,n As Integer,Private Sub Command1_Click(),n=1,End Sub,Private Sub Command2_Click(),n=n+1,End Sub,如果用,Private,或,Dim,来声明,则该变量只能在本窗体,(,或本模块,),中有效,在其他窗体或模块中不能引用该变量。以,Public,声明的
28、变量,允许在其他窗体和模块中引用,,Form1.n,2.,模块级变量,全局变量要在,标准模块,文件,(.bas),中的,通用声明,部分用,Global,或,Public,语句来声明。,全局变量可以被应用程序中任何一个窗体和模块直接访问。,格式:,Global,变量名,As,数据类型,Public,变量名,As,数据类型,3.,全局变量,生存期,即变量能够保持其值的时间,分为,动态变量,和,静态变量,1.,动态变量,程序运行进入变量所在的过程时,才为变量分配内存单元,退出过程时,该变量占用的内存单元自动释放,其值消失。当再次进入该过程时,所有的动态变量将重新初始化。,使用,Dim,关键字,在过程
29、中声明的局部变量属于动态变量,2.,静态变量,退出该过程时变量值被保留,即变量所占的内存单元没有释放。当以后再次进入该过程时,原来的变量值可以继续使用,使用,Static,关键字,在过程中声明的局部变量属于静态变量,变量的生存期,Private Sub Command1_Click(),Dim a As Integer,a,是动态变量,Static b As Integer,b,是静态变量,a=a+1,每次进入过程时,a,值为,0,b=b+1,每次进入过程时,b,保持上次的值,End Sub,静态变量(局部变量),用,Dim,声明的变量,:每次调用都对变量重新初始化;过程体结束,变量的内容自动
30、消失,存储单元释放。,用,Static,声明的变量,:过程体结束后,不释放存储单元。每次调用过程,变量保持原来的值。其声明形式为:,Private Sub Command1_Click(),Static,变量名,AS,类型,局部静态变量,End Sub,静态变量(局部变量),Static Function,函数名,(,参数列表,)As,类型,Static Sub,子过程名,(,参数列表,),说明,:,过程名前加,Static,,表示该过程内的局部变量都是静态变量。,Static Sub Subtest(),Dim t As Integer,t=2*t+1,Print t,End Sub,Pri
31、vate Sub Command1_Click(),Call Subtest,End Sub,运行后,,3,次单击命令按钮,执行结果为:,1,3,7,例,7.6,Static Sub,语句示例,将,Static Sub,改为,Private Sub,,,运行后,,3,次单击命令按钮,执行结果为:,1,1,1,Private,在窗体模块的,“通用声明”,段中以,Public,声明的变量,允许,在其他窗体和模块中引用,格式为:,Form1.n,过程的作用域,窗体,/,模块级,:加,Private,关键字的过程,只能在被定义的本窗体或本模块的任何过程中调用。,全局级,:加,Public,关键字(缺省
32、的过程,可供该应用程序的所有窗体和所有标准模块中的过程调用。,例,设计两个窗体,编写两段程序代码,验证全局级过程与窗体级过程的不同。,Private,多窗体处理,在多窗体程序中,每个窗体可以有自己的界面和程序代码,完成不同的操作,1.,添加窗体,通过“工程”菜单中的“添加窗体”命令来实现,2.,删除窗体,选择“工程”菜单中的“移除”命令,3.,保存窗体,选择“文件”菜单中的“保存”或“另存为”命令,4.,设置启动窗体,在“工程,/,工程属性”对话框中设置,多窗体与,Sub Main,过程,(1)Load,语句,格式:,Load,窗体名称,例如:,Load Form2,功能:将一个窗体装入内存
33、说明:此时仅能引用窗体中的控件及各种属性,但运行时窗体并不显示到屏幕上。,(2),UnLoad,语句,格式:,UnLoad,窗体名称,功能:清除内存中的窗体。,有关语句和方法,(3)Show,方法,格式,:窗体名称,.Show,例如:,Form2.Show,功能:将一个窗体装入内存,并在屏幕上显示。,(4)Hide,方法,格式:,窗体名称,.Hide,功能:隐藏指定的窗体,即不在屏幕上显示,但仍保存在内存中,因此它与,UnLoad,的作用是不一样的。,有关语句和方法,创建,3,个窗体和,1,个标准模块,(1),主窗体,(Form1),本窗体上建立了“,输入数据,”,(Command11),
34、计算,”,(Command12),和“,结束,”,(Command13),三个命令按钮,设置为启动窗体,例,7.7,多窗体应用示例,计算两数之和及积,启动,窗体,主窗体,输入两个数,计算,定义全局变量,Private Sub Command11_Click(),主窗体“输入数据”按钮,Form1.Hide,隐藏主窗体,Form2.Show,显示“输入数据”窗体,End Sub,Private Sub Command12_Click(),主窗体“计算”按钮,Form1.Hide,隐藏主窗体,Form3.Show,显示“计算”窗体,End Sub,Private Sub Command13_
35、Click(),主窗体“结束”按钮,Unload Form1,Unload Form2,Unload Form3,End,End Sub,先卸载所有已打开的窗体,(2)“,输入数据”窗体,(Form2),这是在主窗体上单击了“输入数据”按钮后弹出的窗体,用于输入运算数,x,和,y,。窗体上建立了,2,个文本框,(,Text21,和,Text22,),和,1,个“返回”命令按钮,(Command21),Text21,Text22,(2)“,输入数据”窗体,(Form2),代码:,Private Sub Command21_Click(),“,输入数据”窗体的“返回”按钮,X=Val(Text21
36、Text),Y=Val(Text22.Text),Form2.Hide,隐藏“输入数据”窗体,Form1.Show,显示主窗体,End Sub,(3)“,计算”窗体,(Form3),Private Sub Command31_Click(),“,计算”窗体的“加法”按钮,Text31.Text=X+Y,End Sub,Private Sub Command32_Click(),“,计算”窗体的“乘法”按钮,Text31.Text=X*Y,End Sub,Private Sub Command33_Click(),“,计算”窗体的“返回”按钮,Form3.Hide,隐藏“计算”窗体,Form1
37、Show,显示主窗体,End Sub,Text31,(4),标准模块,(,Modulel,),由于在各窗体之间需要使用公共变量来传送数据,所以建立一个标准模块,Modulel,,对用到的,全局变量,X,和,Y,进行声明,程序一般从,启动窗体的,Form_Load,过程,开始执行,有时在程序启动时不加载任何窗体,而是首先执行一段程序代码,此时可把要执行的程序代码放在,Sub Main,过程中,并指定,Sub Main,为“启动对象”。,应用程序在运行时会先执行,Sub Main,过程,Sub Main,过程存放在标准模块中。在一个工程中只能有一个,Sub Main,过程,设置,Sub Main
38、过程为“启动对象”的方法:,在“工程属性”对话框的“通用”选项卡中,从“启动对象”下拉列表框中选中“,Sub Main”,Sub Main,过程,创建,2,个窗体和,1,个标准模块,例,7.8,Sub Main,过程示例,标准模块,标准模块是独立于窗体的程序单位,其扩展名为,.bas,。,1.,全局变量声明,使用,Public,关键词对变量和常量进行声明,其作用域为整个工程。,2.,模块级变量声明,用,Dim,关键词声明的变量和常量,其有效范围仅限于本模块内。,3.,通用过程,用户自定义的子程序和函数。一般用,Public,关键词声明的通用过程和,Sub Main,过程放在标准模块中。,例,
39、7.9,将判断一个数是否为素数编成一个函数,然后通过调用该函数求,500,1000,数中的所有素数,把这些素数显示在列表框中。,(1),分析:素数也称质数,就是只能被,1,和它本身整除,而不能被其他整数整除的整数。例如,2,,,3,,,5,,,7,是质数,而,4,,,6,,,8,,,9,则不是。判断某数,m,是否是素数的算法是:对于,m,,从,k=2,,,3,,,4,,,,,m-1,依次判别能否被,k,整除,只要有一个能整除,,m,就不是素数,否则,m,是素数。,7.6,程序举例,列表框,List1,标签,Label1,命令按钮,Command1,Private Sub Command1_Cl
40、ick(),求素数,按钮,Dim t As Integer,List1.Clear,清除列表框中的内容,For t=500 To 1000,If,FnPrime(t,)Then,根据,t,是否素数返回函 数值真或假,List1.AddItem t,若是素数,则存入列表框中,End If,Next t,Label1.Caption=500,1000,数中共有,&List1.ListCount&,个素数,End Sub,Function,FnPrime(m,As Integer)As Boolean,Dim k As Integer,f As Boolean,f=True,设置,f,来表示判断状态
41、初值为,True,For k=2 To m-1,If m Mod k=0 Then,f=False,End If,Next k,FnPrime,=f,返回函数值,End Function,在窗体上建立,3,个文本框,使之以不同效果显示文字“,2008,年世界奥运会将在中国北京市举行,”,第一个文本框,Text1,从左到右逐字显示,直到把整行文字显示出来;,第二个文本框,Text2,使文字从左到右作水平移动;,第三个文本框,Text3,以闪动方式显示文字,设计阶段,运行阶段,例,7.11,动态文字,Dim txt As String,n As Integer,k As Integer,Priv
42、ate Sub,Form_Load,(),n=0,txt=,年世界奥运会将在中国北京市举行,k=,Len(txt,),Text1.ForeColor=RGB(255,0,0),红色,Text2.ForeColor=RGB(0,0,0),黑色,Text3.ForeColor=RGB(0,0,255),蓝色,End Sub,Private Sub Timer1_Timer(),n=n+1,模块级变量,n,是关键参数,If n=k Then,Text1.Text=,Left(txt,n),逐次取,n,个汉字,,n,每次加,1,Text2.Text=Space(2*(k-n)+,Left(txt,n),Else,n=0,Text1.Text=,Text2.Text=,End If,If n Mod 2=0 Then,以,2,个定时时间为,1,个周期,显示及清除交替进行,Text3.Text=txt,n,为偶数时显示,Else,Text3.Text=,n,为奇数时清除,End If,End Sub,每次减少,2,空格,1,个汉字占,2,个字符位置,每次增加,1,个汉字,






