1、NoImageVisual Basic程序设计第八章 过程 子程序和函数楼诗风主要内容 子程序(子程序(Sub过程)过程)函数(函数(Function过程)过程)参数传递参数传递过程的嵌套调用和递归调用过程的嵌套调用和递归调用鼠标和键盘事件鼠标和键盘事件 自定义子程序Public|Private|Static Sub Public|Private|Static Sub ( 参数及其类型列表参数及其类型列表 ) End SubEnd Sub例如:交换两个变量内容的子程序:例如:交换两个变量内容的子程序: Public Sub Swap (x,y)Public Sub Swap (x,y) dim
2、 t dim t t=x : x=y : y=tt=x : x=y : y=tEnd SubEnd Sub自定义函数Public|Private|Static Function Public|Private|Static Function ( 参数及其类型列表参数及其类型列表 )As As ( (内含内含: : = ) )End Function End Function 注意:函数与子程序的区别注意:函数与子程序的区别(1 1)函数必须有返回值,子程序没有。)函数必须有返回值,子程序没有。(2 2)如果不指明函数的类型(即其返回值的类型),)如果不指明函数的类型(即其返回值的类型), 则其类
3、型是变体型(则其类型是变体型(VariantVariant型)型) (3 3)函数用在表达式中,子程序不能。)函数用在表达式中,子程序不能。子程序的调用格式:Call (参数列表参数列表)或者 参数列表参数列表子程序和函数的参数形参形式参数,定义部分所使用的参数。实参实在(实际)参数,调用时传递给子程序或函数的参数。例如:下面的x和y是形参,a和b是实参。定义子程序 Swap:Sub Swap (x,y) Dim t t = x : x = y : y = xEnd Sub调用子程序 Swap: . Swap a , b 交换 .参数的传递方式在子程序或函数的调用过程中,实参内容传递给相应的形
4、参可以有两种方式:传址和传值传址(ByRef) :将实参地址传给形参。传值(ByVal) :将实参的值传给形参。区别:传址时,形参与实参是同一个内存区域,因而实参随形参的改变而改变。传值时,形参被单独分配内存并获得实参的值,因而形参的改变并不改变实参的值。传值和传址的区别形参 x 实参a:形参 y 实参 b:54321定义子程序 Swap:Sub Swap (x,y) Dim t t = x : x = y : y = xEnd Sub调用子程序 Swap: . Swap a , b 交换 .Swap 传址传址 x: a:y: b:54321 Swap 传值传值54321实例:求直角三角形的斜
5、边Private Sub Root(ByVal a, ByVal b, c) c = Sqr(a 2 + b 2)End Sub调用: Root 3 , 4, z Print z打印结果 5 c ba自定义函数的实例用函数求直角三角形的斜边Public Function Hyp(x !, y !) As Single Hyp = Sqr(x 2 + y 2)End Function调用: Print Hyp (3,4) 打印结果 5变量与过程的作用域变量与过程的作用域在声明变量和过程时:v在什么地方声明? 过程内部 过程外部(模块的通用段)v用什么关键字? Dim Static Private
6、 Public变量的作用域v过程级v模块级v全局变量过程的作用域v模块级v全局级Static:作用?变量声明格式:Dim|Public|Private|Static Dim|Public|Private|Static as as 有效范围:过程模块全局(公用)隐式声明和显式声明:Option Explicit组合声明:例: dim i as integer, j as single, s as string或: dim i%, j!, s$VB应用程序的组成VB应用程序 .vbp窗体模块 .frm标准模块 .bas类模块 .cls函数过程(Function)事件过程子程序(Sub)函数过程(F
7、unction)子程序(Sub)变量的作用域过程级:在过程内部声明,使用Dim或Static关键字。只能在过程内部使用。模块级:在模块的通用段声明,使用Dim 或Private关键字。可以在该模块的所有过程中使用。全局:在模块的通用段声明,使用Public关键字。可以在整个应用程序中使用。如果是在窗体模块内声明,则引用时需要在变量名前面加窗体名。例如:Form1.a变量的生存期动态变量:声明时产生(分配内存),过程结束立即释放。用Dim声明。静态变量:过程结束后不释放内存,其值保留。下次访问该过程时仍有效。用Static声明。变量的作用域作用域:过程级模块级全局变量窗体标准模块声明方式DimS
8、taticDimPrivatePublic声明在:过程内模块的通用声明段本模块其他过程:不能用能用其他模块:不能用能用,但要加窗体名.能用过程的作用域模块级:用Private关键字声明全局级:用Public关键字声明v在标准模块内声明:可以直接调用v在窗体模块内声明:需要在过程名前面指定对象(窗体)名。静态(Static):该过程内所有过程级变量均为静态变量。鼠标事件Click单击DblClick 双击MouseDown按下MouseUp 放开MouseMove移动DragDrop拖放DragOver拖过有关问题同时发生时的先后次序事件过程中的参数Button区分左右键Shift键盘配合X,Y
9、指针位置有关属性有关方法MouseDown和MouseUp事件Button参数,由按下的鼠标键决定:1左键,2右键,4中键Shift参数,由先按下的键盘键决定:1键2键4 键先按下多键时,数值相加与鼠标有关的属性MousePointer 指针形状MouseIcon 自定义指针形状当MousePointer99时的指针形状DragModev 0手工,1自动v自动:可以拖动,此时Click事件和 MouseDown事件失效v手工:需编程(用Drag方法)才能拖动DragDrop事件发生在目标对象,而不是被拖动对象上参数:Source As Control,X As Single,Y As SingleSource 被拖动对象X,Y 放下时的X,Y坐标有关属性v DragMode: 0手工,1自动v DragIcon:拖动时的图标Drag方法:Drag ActionAction:0取消,1开始(缺省),2结束DragOver事件在拖动越过一对象时发生参数: Source As Control,X As Single,Y As SingleSource 被拖动对象X,Y 放下时的X,Y坐标State0进入时,1退出时,2在其中
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。