vb语言程序设计教程ppt课件_第1页
vb语言程序设计教程ppt课件_第2页
vb语言程序设计教程ppt课件_第3页
vb语言程序设计教程ppt课件_第4页
vb语言程序设计教程ppt课件_第5页
已阅读5页,还剩241页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VisualBasic程序设计教程,第一章VisualBasic的基本知识,1.1认识VisualBasic语言1.2窗体,1.1.1VisualBasic的特点1、可视化的设计平台(*)2、面向对象的设计方法(OOP)3、事件驱动的编程机制(*)4、结构化的设计语言5、充分利用Windows资源6、开放的数据库功能与网络支持7)完备的help联机帮助功能,1.1.2设计VisualBasic应用程序的步骤例:编写应用程序完成功能:当用户在应用程序窗体中用鼠标单击命令按钮时,窗体中显示:“祝你成功!”。,设计VisualBasic应用程序的步骤:,第一步:创建窗体第二步:编写程序代码第三步:运行程序第四步:保存程序第五步:生成EXE文件,1.1.3面向对象程序设计的概念,类对象容器对象属性方法事件事件过程事件驱动,1.2窗体1.2.1窗体的属性窗体的基本属性:Name、height、Width、Left、Top、Enabled、Visible、ForeColor和Image。Name名称:所建对象的名称,每创建一个对象,系统都提供一个默认的名称,可在属性窗口的Name栏进行修改,名称是程序中引用对象的标识符,不显示在窗体上。Height,Width,Top,Left:Height和Width决定了控件对象显示的大小;Top和Left决定了控件对象在窗体中的位置.窗体的左上角为原点,单位为twip。,Enabled:决定控件是否允许操作True允许用户进行操作,并对操作作出响应;False禁止用户进行操作,呈暗淡色。Visible:决定控件是否可见True程序运行时控件可见;False程序运行时控件隐含起来看不到,但存在.ForeColor前景色:设置控件的前景色(正文颜色,若控件有正文,该属性才有效),其值是一个16进制的常数,在属性窗口中,提供有调色板供用户选择。BackColor背景色:设置控件中正文背景的颜色。,Caption:决定窗体标题栏显示的内容MaxButton:最大化按钮(其值为True或False)MinButton:最小化按钮(其值为True或False)Icon:设置窗体最小化的图标ControlBox:设置窗口右上角的控制菜单(其值为True或False)Picture:设置窗体中显示的图片BorderStyle:设置窗体的边框有无,及形式WindowsState:设置窗体在运行时的显示状态Normal0(缺省值)正常。Minimized1最小化(最小化为一个图标)Maximized2最大化(扩大到最大尺寸),1.2.2窗体的事件,1.2.3窗体的方法,第一章END,2.1基本数据类型2.2变量与常量2.3运算符和表达式2.4常用内部函数2.5编码规则,第二章VisualBasic语言基础,2.1基本数据类型数据描述客观事物的数、字符以及所有能输入到计算机中并被计算机程序加工处理的符号的集合称为数据。VB的基本数据:P13表2.1*VB中有多种数据类型,不同的数据类型所占的存储空间不一样。,2.1.1数值(Numeric)型数据VB提供了6种数值型的数据,如下:1、整型(Integer)即常规型数据优点:运算速度较快,所占内存少缺点:可表示数的范围相对小一些。表示方式:十进制、八进制、十六进制2、长整型(Long)数的表示范围大于整型(232)3、字节型(Byte)表示无符号的整数,范围0255。,4、单精度(Single)可表示最多7位有效数字的数。可用定点形式和浮点形式来表示。单精度的定点形式是在该范围内含有小数的数。如:-3.4120.0+1.234.00069单精度的浮点形式使用科学计数法,即以10的整数次幂表示的数,以“E”来表示底数10。如:-3.4E5120.0E-51.234E+12,5、双精度数(Double)最多可表示的15位有效数字的数。也有定点和浮点两种表示法。双精度的定点形式是在该范围内含有小数的数,如:-31.123456789129。双精度的浮点形式使用科学计数法,即以10的整数次幂表示的数,以“D”来表示底数10。如:-3.412334D52,120.12567D-45,6、货币型(Currency)支持小数点右面四位和小数点左面15位,是一个精确的定点数据类型。,2.1.2字符型(String)数据字符型数据一切可打印的字符和字符串,它是用双引号括起来的一串字符。如:”abc”,”123”,2.1.3布尔(Boolean)型数据False(假)0True(真)非0值,与数值型转换,2.1.4日期(Date)型数据表示日期和时间,可以表示多种格式的日期和时间,用“#”符号把表示日期和时间的值括起来。如#11/18/2000#,#2000-11-18#,#11/18/200010:28:56pm#2.1.5对象(Object)型数据可用来表示应用程序中或某些其他应用程序中的对象。,2.1.6可变(Variant)类型数据能够表示所有系统定义的数据,当把它们赋予Variant型数据时,不必在这些数据间进行转换,VB会自动完成任何必要的转换。例如:SomeValue=18SomeValue=SomeValue-15SomeValue=U说明:可以是窗体,图片框或打印机.缺省是窗体.,是一个或多个表达式,可以是数值表达式或字符串表达式.输出多个表达式时,各表达式之间的分隔符可以用:逗号,或分号;.在语句行末尾使用分隔符的情况:使用分号则会?使用逗号则会?Print具有计算和输出的双重功能.对于表达式总是先计算后输出.如:Print3+3,例:使用Print方法在窗体中直接输出字符串或数值表达式的值.,PrivateSubForm_Click()dimaasintegera=123Print123PrintaPrintVisualBasicPrintPrinta*2Print123;a,VisualBasicEndSub,2、与PRINT方法有关的函数(1)Tab(n)函数特点:1)当TAB(x)与输出项之间以分号分隔时输出项按x指定的位置显示。2)TAB(x)与输出项之间是逗号分隔时,该TAB(x)无效,仅逗号起作用。3)当打印的当前位置超过x是,输出项在下一行指定的x位置输出。4)如果指定位置x大于行宽,则先进行xMOD行宽的计算,再用余数作为指定位置显示。,例:PrintTAB(6);3PrintTAB(6),3PrintHELLO,CHINA;TAB(6);3PrintTAB(86);3(2)Spc函数Spc函数输出n个空格,其格式为:Spc(n)例:PRINTTAB(6);3;Spc(20);4,3、使用位置属性精确地把文本输出到窗体、图片框或打印页上。CurrentX和CurrentY.例:P423.1,PrivateSubForm_Activate()Dimaasstring,wasinteger,hasintegerMe.FontSize=30a=VisualBasicw=Me.TextWidth(a)h=Me.TextHeight(a)Me.CurrentX=(Me.ScaleWidth-w)/2Me.CurrentY=(Me.ScaleHeight-h)/2PrintaEndSub,3.1.2信息对话框输出信息MsgBox函数在对话框中输出信息,等待用户单击按钮,并返回一个整数以确认用户单击了哪个按钮(P44)。格式为:变量=MsgBox(,),说明:P43信息内容指定在对话框中出现的文本对话框类型指定对话框中出现的按钮和图标,一般有3个内容。对话框标题指定对话框中出现的标题Msgbox()返回的值指明了在对话框中选择了哪一个按钮。第二个参数的值可以是数值,也可以是符号常量如果省略了某些选项,必须加入相应的逗号分隔符。若不需要返回值,则可以使用MsgBox的命令形式。,第二个参数包含的内容:,3.2数据输入的基本方法,3.2.1赋值语句LET赋值语句可以将指定的值赋给某个内存变量或对象的某个属性变量。格式:LET=,3.2.2用InputBox函数输入数据InputBox函数显示一个能接受用户输入的对话框,并返回用户在对话框中输入的信息。格式为:变量=InputBox(,,XPOS,YPOS)例:h=InputBox(请输入你的姓名,输入,张三),说明信息内容指定在对话框中出现的文本对话框标题指定对话框中出现的标题默认内容可以指定输入框中显示的默认文本。XPOS可以指定输入框与屏幕左边的距离YPOS可以指定输入框与屏幕上边的距离用户单击“确定”:返回文本框内容到变量中用户单击“取消”:返回一个零长度的字符串。,3.3常用基本语句,3.3.1注释与暂停1、注释语句格式:Rem或,3.3.2加载对象语句Load在程序运行的过程中,有时需要添加新的窗体或为控件数组增加新的元素,这类操作可以通过加载对象语句Load来完成。语法格式:Load对象名功能:把对象名代表的对象,如窗体、控件数组元素等加载到内存中,以供程序使用。说明:使用Load语句可以加载窗体,但不显示窗体。当VB加载窗体对象时,先把窗体属性设置为初始值,再执行Load事件过程。例如:LoadForm2Form2.Visible=True,3.3.3卸载对象Unload语句当要结束应用程序而从内存当中卸载窗体或要从内存当中卸载某些控件时,可以使用Unload语句。其语法格式为:Unload对象名说明:“对象名”是要卸载的窗体对象或控件的名称,3.3.4结束语句(End)End语句强制终止代码的执行。End语句提供了一种强迫终止程序的方法VisualBasic程序正常结束应该卸载所有的窗体。与End不同,Stop不会关闭任何文件,或清除变量。,3.3.5暂停语句(Stop)Stop语句用来暂停语句的执行。Stop语句主要作用是把解释程序设置为中断模式,以便对程序进行检查和调试。,3.4常用标准控件及应用,VisualBasic应用程序的用户界面多数情况下是在窗体上添加适当的控件完成的。了解一些最常用的控件和控件的基本属性,如命令按钮、标签、文本框等,就能完成一些简单程序的界面设计。学习这些控件就是学习它们的属性,事件,方法。,3.4.1控件的基本属性,Name属性Caption属性Enabled属性Visible属性Height属性BackColor和ForeColor属性Font属性,3.4.2焦点与Tab键序1.焦点焦点是用于描述对象接收鼠标或键盘输入的能力。我们称当前被操作的对象获得了焦点(Focus)。焦点对象才有接收鼠标或键盘输入的能力。当对象具有焦点时,才能接收用户的输入。要将焦点赋给对象(窗体或控件),有以下几种方法:(1)用鼠标选定对象。(2)按快捷键选定对象。(3)按Tab键或Shift+Tab键在当前窗体的各对象之间切换焦点。(4)在代码中用SetFocus方法来设置焦点。,2.Tab键序Tab键序是指用户按Tab键时,焦点在控件间移动的顺序。通过改变控件的TabIndex属性值,可以改变默认的按Tab键移动焦点的顺序。,注意:当控件接收焦点时,会发生GotFocus事件;当控件失去焦点时,会发生LostFocus事件。可以使用SetFocus方法在代码中设置焦点。TabIndex属性和TabStop属性:TabIndex属性决定控件接收焦点时的顺序TabStop属性决定焦点是否能够停在该控件上,3.4.3命令按钮命令按钮(CommandButton)当用户用鼠标单击命令按钮,或者选中命令按钮后按回车键时,就会触发该命令按钮相应的事件过程。1.常用属性(Name,Enabled,Visible)(1)Default属性:对应“Enter”(2)Cancel属性:对应“Esc”(3)Style属性:设置命令按钮的外观,默认值为0表示以标准的Windows按钮方式显示;其值为1时,表示以图形按钮显示,此时可用Picture,DownPicture和DisabledPicture属性来分别指定按钮在正常、被按下和不可用3种状态下的图片。(4)Caption属性,2.常用事件和方法事件:命令按钮最常用的事件是Click(单击)事件,但不支持DblClick(双击)事件。方法:命令按钮常用的方法是SetFocus方法。,3.4.4标签控件标签(Label)主要用来显示比较固定的提示性信息,常作为提示或输出信息的控件,其默认名称(Name)为Label1,Label2,。1.常用的属性(1)Alignment属性:设置标签中文本的对齐方式;(2)AutoSize属性:确定标签的大小是否根据标签的显示的内容自动调整大小;(3)BorderStyle属性:设置标签的边框,可以取两种值;(4)BackStyle属性:设置标签的背景模式;(5)Caption属性:标签内显示内容;(6)Wordwrap属性:改变标签垂直方向的大小。,2.常用事件和方法事件:标签可触发Click,DblClick等事件。方法:标签支持Move方法,用于实现控件的移动。,3.4.5“文本框”控件(TextBox)1、常用属性文本框没有Caption属性(1)Maxlength属性(2)Multiline属性(3)PasswordChar属性注意:只有在Multiline属性被设置为False的前提下,PasswordChar属性才能起作用。(4)ScrollBars属性注意:使文本框出现滚动条的前提是Multiline属性必须设置为True。(5)SelStart属性、Sellength属性和SelText属性(6)Text属性(7)Locked属性,2.常用事件和方法事件:Click,DblClick,Change(内容改变)、GotFocus(获得焦点)、LostFocus(失去焦点)方法:SetFocus方法和Move方法。,例:P583-9,3.4.6滚动条1滚动条的用途滚动条控件的作用是为那些不能自动支持滚动的应用程序和控件提供滚动功能。2常用属性Min、Max属性Value属性SmallChange(最小变动值)属性LargeChange(最大变动值)属性3常用事件Scroll事件:当用鼠标拖动滚动块时,即触发Scroll事件。Change事件:当改变Value属性值时,即触发Change事件。,例3-11:设计一个调色板应用程序,如图所示。,3.4.7PictureBox(图形框)图形框控件的主要作用是为用户显示图片,也可以作为其他控件的容器。属性:1.Picture属性图片框对象名.Picture=LoadPicture(“图形文件名”)2.Autosize属性:设置为True时,图形框能自动调整大小与显示的图片匹配。方法:1.Print:图片框对象名.Print2.Cls:图片框对象名.Cls,第三章END,第四章选择结构程序设计,4.1选择结构的概念4.2条件表达式4.3选择结构程序设计4.4配合选择功能的控件4.5选择程序设计综合举例,4.1选择结构程序设计概念特点:根据给定的条件为成立与否,而决定从各种不同的解决方案中选择某一个方案来执行。条件语句的功能是:根据条件表达式的值有选择地执行一组语句。,4.2关系表达式和逻辑表达式4.2.1关系运算符和关系表达式关系运算符主要是对比较来说的。关系表达式是由关系运算符把两个算术表达式连接起来的式子。一般形式:,VB提供的关系运算符有:=(等于)(大于)(不等于)=(大于或等于)=(小于或等于),数值型数据按其大小进行比较;日期型数据看成“yyyymmdd”的8位整数,按数值大小进行比较;字符型数据按其ASCII码值进行比较。比较字符串时,从第一个字符开始比较。常见字符值的大小:空格数字大写字母0(数学表达式)?(VB表达式),VB提供的逻辑运算符有:逻辑运算符含义例AND逻辑与ABANDBCOR逻辑或ABORBCNOT逻辑非NOTABXOR逻辑异或ABXORBC,逻辑运算符之间的优先级为:,4.2.3运算符的优先顺序一个逻辑表达式内可能包括逻辑运算符、关系运算符和算术运算符,它们有一个优先顺序的问题,它们的优先顺序如下:,4.3选择结构程序设计4.3.1条件语句1)IfThen语句单行结构格式If条件表达式Then语句块结构格式If条件表达式Then语句块EndIf,2)IfThenElse语句IfThenElse语句也有两种语法格式。单行结构格式If条件表达式Then语句1Else语句2块结构格式If条件表达式Then语句块1Else语句块2EndIf,3)条件语句嵌套及多分支条件语句(1)If语句的嵌套(2)带ElseIf的If语句的嵌套If条件表达式1Then语句块1ElseIf条件表达式2Then语句块2ElseIf条件表达式3Then语句块3.ElseIf条件表达式n-1Then语句块n-1Else语句块nEndIf,4.3.2情况选择语句SelectCaseSelectCase测试表达式Case取值列表1语句块1Case取值列表2语句块2CaseElse语句块nEndSelect,说明:是必要参数,是任何数值表达式或字符串表达式在Case子句中,为必要参数,用来测试其中是否有值与相匹配。其形式有:表达式:Case3表达式to表达式:指定一个范围Case2to9CaseatofIs关系运算表达式:CaseIs100,可选参数,是一条或多条语句CaseElse子句用于指明其他语句系列,当测试条件和所有的Case子句中的值都不匹配时,则会执行这些语句。,4.3.3IIf函数格式IIf(条件表达式,“真”的返回值,“假”的返回值)功能函数分别返回“条件表达式”为真和为假时的取值。“真返回值”和“假返回值”可以是任何表达式,,4.4提供简单选择的控件4.4.1使用“框架”控件(Frame)“框架”控件也是一种容器控件,在框架控件中的控件可以随着框架一起移动。框架控件的常用属性有:Name,Caption,Font等。注意:框架控件另一重要作用是:用来对选项按钮进行分组。,4.4.2选项按钮(OptionButton)一、使用选项按钮组(一般用框架(Frame)控件来组织一个选项组)1、常用属性caption,alignmentvalue:控件的选择状态(True,False)style:使用图形选项按钮2、事件click,4.4.3复选框(CheckBox)选项按钮组属于多项中选择一项的选择,若许选择多项的情况,则可以采用多哥复选框控件。1、常用属性caption,alignmentvalue:决定复选框的状态0假(没选中)1真(选中)2暗(缺省)style2、事件click,4.4.4计时控件器(Timer)计时器控件(Timer)按指定时间间隔重复的发生它的timer事件。主要属性:Enable:定时器是否开始工作的设置Interval:设置定时器触发的周期,以毫秒计算,取值范围为:064767唯一事件:Timer,例:设计一个电子时钟。,例:设计一个跑秒表。,例:屏幕滚动字幕,第四章END,第五章循环结构程序设计,5.1循环概念5.2循环结构及循环程序5.3循环程序设计举例,5.1循环结构程序设计的概念VB提供的设计循环结构的语句有:DoLoopWhileWendForNextForEachNext,条件成立,需重复执行的语句,是,否,执行后续语句,5.2循环结构及循环程序,5.2.1设计循环结构的基本原理构造循环结构的三个要素(1)构造循环体:需要重复执行的语句(2)设置循环出口:停下重复工作的条件人为约定条件方式计数方式(3)初始化,5.2.2用循环语句写循环程序1)WHILE循环结构格式:WHILE循环体WEND,执行过程:(1)对“条件”进行求值,判断条件是“真”还是“假”;(2)如果“条件”为真,则执行循环体,执行完之后再转到(1)执行;如果“条件”为“假”,则转到(3);(3)结束循环体的执行,跳到WEND的下一个语句执行。,2)Do.Loop共有三大类语法格式下面分别介绍之:无条件循环结构前测型循环结构后测型循环结构有五种语法形式:,(1)无条件循环型语法格式:Do循环体Loop退出循环语句:EXITDO,(2)当型DoLoop循环,DoWhileExitDoLoop,DoUntilExitDoLoop,(3)直到型DoLoop循环,DoExitDoLoopWhile,DoExitDoLoopuntil,3)ForNext语句当已知循环次数时,可用ForNext循环。For循环使用一个循环变量,每重复一次循环后,循环变量会自动增加或减少。流程图:,格式为:For=ToStepExitForNext,5.3循环程序设计举例:1、计算1+2+3+100的结果。2、判断输入的数是否是素数。方法:判断一个自然数n(n3)是否素数,只要依次用2-n作除数去除n,若n不能被其中任何一个数整除,则n即为素数.,5.4列表框与组合框控件5.4.1列表框(ListBox)1)常用属性(1)Name属性(2)List属性该属性是一个字符型数组,存放列表框或组合框的选项。List数组的下标从0开始。,(3)ListIndex该属性只能在代码中设置或引用。ListIndex的值表示程序运行时被选定选项的序号。如果未选中任何选项,则ListIndex的值为-1。(4)ListCount该属性只能在代码中设置或引用。其值表示列表框或组合框中项目的数量。(5)Sorted该属性只能在属性窗口设置。其决定在程序运行期间列表框或组合框的选项是否按字母顺序排列显示。,(7)Text属性只能在代码中设置或引用。其表示被选定的文本内容,该属性不能被赋值,只能使用。如:Label1.caption=List1.textCombo1.additemCombo1.text,(6)Selected该属性只能在代码中设置或引用,是一个逻辑数组,其元素对应列表框中相应的项,表示对应的项在程序运行过程中是否被选中。如果List1.Selected(0)=True,表示第一项被选中。,2)事件列表框:Click事件和DblClick事件3)方法(1)AddItem:把一个选项加入列表框或组合框。格式如下:对象.AddItemitem,index,(2)RemoveItem:从列表框或组合框中删除一个选项。格式如下:对象.RemoveItemindex,(3)Clear方法:可以清除列表框或组合框的所有内容。格式如下:对象.Clear说明:对象:可以是列表框或组合框;,4)列表框表项的输出输出列表框中的表项的常用方法:用鼠标单击列表框内某一表项,则该表项值存放在Text属性中。指定索引号以获取表项的内容。,5.4.2组合框的常用属性(1)Style属性决定组合框的类型和行为,它的值为0,1或2,1,0,2,下拉式组合框,简单组合框。,下拉式列表框,(2)事件组合框:Click事件,keypress(style=0,1)(只有简单组合框才能接收DblClick事件),第五章END,第六章数组,6.1数组的概念6.2数组的声明和应用6.3动态数组及声明6.4ForEachNext循环语句6.5控件数组,6.1数组的概念,6.1.1数组与数组元素6.1.2数组的下标与维数,6.1.1数组与数组元素1、数组:如果某些数据是有内在联系的,是具有相同属性的(如10个学生的成绩),可以把这批数据看作一个有机的整体,称为数组(array)用序号或下标来区分各个数据。,概念:是用一个统一的名称来表示的、顺序排列的一组变量。,2、数组元素:数组中的变量称为数组元素,用序号来标识它们。可以用数组名及一个序号的标识一个数组元素。如:a(5)表示名称为a的数组中序号为5的那个数组元素(变量)。,数组元素,6.1.2数组的下标与维数1数组的下标数组的下标可以是常数、变量、表达式或另一个数组的元素。下标值可以是正整数、0和负整数,如果带有小数部分将会自动地对它四舍五入取整。,2数组的维数如果数组元素只使用一个下标就可以标明元素的位置,则称这个数组为一维数组。例如:a(2),s(5)如果数组元素要使用二个下标才能标明元素的位置,则称这个数组为二维数组。例如:a(2,2),s(3,4),1)指定下标的上界Dim数组名(下标上界)As类型名Dim数组名(第一维下标上界,第二维下标上界)As类型名,2)指定下标的取值范围Dim数组名(下标下界To下标上界)AS类型名Dim数组名(下标下界To下标上界,第二维的下界to上界)AS类型名,6.2.1数组声明语句,6.2数组的声明和应用,用Array函数,根据数据表生成一个一维数组。Array函数返回一个包含数据表中数据的Variant类型数组,其使用格式为:变体名=Array(数据表)例如:dimaasvarianta=array(2,5,6,8,10,5,9),6.2.2Array函数,其中:“变体名”是预先定义的类型为变体的数组名;“数据表”是一个用逗号隔开的值表,这些值用于给函数返回的Variant所包含的数组各元素赋值;只能生成一维数组。下标默认为0开始,如有OptionBase1,则为1开始。,6.2.3数组应用,例6-1:斐波那契(Fibonacci)数列如下:1,1,2,3,5,8,13,21,试求出该数列的前30项。,假定有n个数的序列,存放在数组a(1ton)中要求按递增的次序排序。算法的步骤如下:,例6-6:数组排序,(1)第1轮:先将a(1)与a(2)比较,若a(2)a(1),则将a(1)与a(2)的值交换,a(1)存放较小者。再将a(1)与a(3)、a(n)比较,并依次作出同样的处理,n个数中的最小者放入a(1)中,完成了第一轮比较。(2)第2轮:将a(2)与a(3)、a(n),并依次作出同样的处理,第一轮余下的n-1个数中的最小者放入a(2)中,完成了第二轮比较。(3)继续进行第3轮、第四轮、直到第n-1轮,余下的a(n)就是n个数中的最大者。,排序过程如下:,原始数据869327,a(1)a(2)a(3)a(4)a(5)a(6)第1轮交换后289637,a(2)a(3)a(4)a(5)a(6)第2轮交换后239687,a(3)a(4)a(5)a(6)第3轮交换后236987,a(4)a(5)a(6)第4轮交换后236789,a(5)a(6)第5轮交换后236789,例:对已知存放在数组中的6个数,用选择排序按递增顺序排序。,静态数组-在声明时已确定了大小的数组,其在程序运行过程中是不变的。动态数组-在声明时未给出数组的大小(省略括号中的下标),当要使用它时,随时用ReDim语句重新指出数组的大小。建立动态数组的方法:使用Dim语句声明下标括号内为空的数组,然后在过程中用ReDim语句指明该数组的大小。,6.3动态数组,6.3.1建立动态数组(1)声明动态数组DimDynArray()(2)用Redim分配实际元素个数ReDim数组名(下标,下标2)As类型,6.3.2保留动态数组的内容每次执行ReDim语句时,当前存储在数组中的值都会全部丢失。当希望改变数组大小,但又不丢失数组中原有的数据,使用具有Preserve关键字的ReDim语句就可做到这点。UBound函数引用数组下标的上界:UBound(数组名,维序号)LBound函数引用数组下标的下界:LBound(数组名,维序号)例如:ReDimPreserveArray(UBound(Array)+1)注意:在用Preserve关键字时,只能改变多维数组中最后一维的上界。,6.3.3数组刷新语句数组刷新语句(Erase)可以作用于固定数组和动态数组,清除大小固定的数组的元素的内容,释放动态数组占用的存储空间。其语法格式为:Erase数组名表说明:对固定大小(静态)数组,Erase语句将数组重新初始化;对于动态数组,Erase将释放动态数组所使用的内存空间。,6.4ForEachNext语句ForEachNext语句是专门用于数组或集合的循环语句。对数组或集合中的每个元素逐个重复循环。功能:对数组元素进行查询,显示或读取。循环的次数与数组元素的个数相等。,格式:ForEachInExitForNext其中:内的内容实际就是数组或集合中的每个元素,用一个变量代表,是一个数组名,没有括号上下界。,注意:不能用此语句对普通的数组元素作“赋值”的操作,因为语句中的表示数组元素的值,不是数组元素本身。但是可以对控件数组中的每个控件的属性作赋值操作。,6.5控件数组6.5.1控件数组的概念控件数组是由一组相同类型的控件组成。他们共用一个控件名,具有相同的name属性。当建立控件数组时,系统给每个元素赋一个唯一的索引号(Index),通过属性窗口的Index属性,可以知道该控件的下标是多少,第一个是0。为了区分控件数组的各个元素,VB会把下标值传送给过程(即返回给index):PrivateSubCommand1_Click(IndexAsInteger),6.5.2控件数组的建立。3种方法:1、改变控件的名称2、复制现有控件3、指定控件的索引值,6.5.3控件数组的使用一般用于实现控件和选项按钮分组。1、命令按钮组例:单击每个命令按钮时显示按钮对应的序号。2、选项按钮组3、标签组,第六章END,第七章过程,7.1通用过程7.2参数传递7.3过程的嵌套与递归调用7.4变量、过程的作用域7.5多窗体与SubMain过程,在VisualBasic中最常使用下列两种通用过程:Sub过程不返回值,称为子过程。Function过程返回值,称为函数过程。,7.1通用过程,1)Sub过程的定义两种定义方法:(1)利用“工具”菜单下的“添加过程”命令定义,7.1.1Sub过程,(2)利用代码窗口直接定义定义格式如下:Private|PublicStaticSub(形参)语句组ExitSub语句组EndSub,2)Sub过程的调用Sub过程不能够被直接执行,只能够通过其他过程调用它,才能被执行。Sub过程的调用是一句独立的调用语句,有两种形式:Call子过程名(实参表列)子过程名实参表列,1)函数过程的定义格式:Private|PublicStaticFunctionAS=ExitFunctionEndFunction,7.1.2Function过程,2)函数过程的调用函数过程的调用:除了事先需要定义函数外,调用FUNCTION函数的方法与调用标准函数的方法相同。其形式为:函数过程名(参数列表)如:m=fact(5)由于函数过程名返回一个值,故函数过程不能作为单独的语句加以调用,它必须作为表达式或表达式的一部分,再配以其他的语法成分构成语句。,7.2参数传递7.2.1形式参数与实际参数的概念1、形式参数形式参数在定义通用过程时,出现在Sub或Function语句中的变量名,是接收数据的变量。2、实际参数实际参数在调用Sub或Function过程时,传送给Sub或Function过程的常量、变量或表达式。,7.2.2参数按地址传递和按值传递1)按值传递如果调用语句中的实际参数是常量或表达式,或者定义过程时用ByVal关键字,就可以按值传递。按值传递时,传递的只是变量的副本!在过程中对形参的变化不会影响变量本身.如果定义过程时没有用ByVal而又要求变量按值传递时,可以先把变量变成一个表达式,把变量转换成表达式的最简单的方法就是把它放在括号内。,2)按址传递让过程根据变量的内存地址去访问变量的内容,即形式参数和实际参数使用相同的内存地址单元,这样通过子过程就可以改变变量本身的值。系统缺省按地址传递参数。在按址传递调用时,实际参数必须是变量,而常量或表达式无法传址。,3)数组参数的传递在VB中允许参数是数组,数组只能通过传址方式进行传递,在传递数组时还要注意以下事项:(1)在实参列表和形参列表中放入数组名,忽略维数的定义,但圆括号不能省略。(2)如果要传递数组的某一个元素,则只须直接写上该数组元素。如:Calltest(4,(3)),7.3过程的嵌套与递归调用嵌套在一个过程中调用另一个过程递归过程直接或间接地调用其自身,7.3.1过程的嵌套调用,主程序,调用Sprg1,EndSub,Sprg1,调用Sprg2,EndSub,Sprg2,EndSub,过程的嵌套图解,7.3.2过程的递归调用使用递归调用的条件是:可以把要解决的问题转化为一个新的问题,而这个新的问题的解法仍与原来的解法相同,只是所处理的对象有规律地递增或递减。可以用上述转化过程使问题得到解决。有一个明确的结束递归的条件。,7.4变量、过程的作用域7.4.1代码模块的概念,1)窗体模块由于VisualBasic应用程序是基于对象的,所以应用程序的代码结构就是该程序在屏幕上物理表示的模型。根据定义,对象包含数据和代码。在屏幕上看到的窗体代表属性,这些属性定义了窗体的外观和内在特性。应用程序中的每个窗体都有一个包含其代码的相关的窗体模块(文件扩展名为.FRM)。窗体模块的创建,保存和移出操作。,每个窗体模块都包含:事件过程,即代码部分,其中有为响应特定事件而执行的指令;控件。在窗体模块中,对窗体上的每个控件都有一个对应的事件过程集;窗体模块还可包含通用过程,它对来自任何事件过程的调用都作出响应。窗体变量的说明、外部过程的窗体级声明。,2)标准模块标准模块(具有.bas文件扩展名)可以包含类型、常数、变量、外部过程和公共过程的公共的或模块级的声明。可将那些与特定窗体或控件无关的代码放入另一类型的模块标准模块(文件扩展名为.BAS)中。如果一个过程可能用来响应几个不同对象中的事件,应该将这个过程放在标准模块中,而不应在每一个对象的事件过程中重复相同的代码。,3)类模块类模块(具有.cls文件扩展名)与窗体模块类似,只是没有可见的用户界面。可以使用类模块创建含有方法和属性代码的自己的对象。用类模块(文件扩展名为.CLS)创建对象,这些对象可被应用程序内的过程调用。标准模块只包含代码,而类模块既包含代码又包含数据,可视为没有物理表示的控件。,7.4.2变量的作用域变量的作用域决定了哪些子过程和函数过程可以访问该变量。1、局部(过程级)变量指在过程内用Dim语句声明的变量(或不加声明直接使用的变量),只能在本过程中使用的变量,别的过程不可访问。2、窗体(模块级)变量指在一窗体/模块的任何过程,即在“通用声明”段中用Dim语句或用Private语句声明的变量,可被本窗体/模块的任何过程访问。,3、全局变量指只能在标准模块的任何过程或函数外,即在“通用声明”段中用Public语句声明的变量,可被应用程序的任何过程或函数过程。下面标准模块文件中进行不同级的变量声明:PublicPaAsintegerPrivateMbstring*10Subf()DimFaAsintegerEndSub,全局变量,窗体/模块级变量,局部变量,7.4.3变量的生存期1、动态变量:指程序运行进入变量所在的过程时,才分派该变量的内存单元,过程执行结束后变量的空间被释放。用DIM语句在过程中声明的局部变量都属于动态变量。2、静态变量:在程序运行过程中可保留变量的值,每次调用过程时,用Static说明的变量保持原来的值,而用Dim声明的变量,每次调用过程时,重新初始化。,静态变量的声明形式如下:Static变量名AS类型StaticFunction函数名(参数列表)AS类型StaticSub过程名(参数列表)若在函数、过程名前加Static,表示该函数、过程内的局部变量都是静态变量。下面的例子比较Dim和Static两者说明变量的区别。,7.4.4过程的作用域1、窗体/模块级指在某个窗体或标准模块内定义的过程,定义的子过程或函数过程前加Private关键字,过程只能被本窗体(在本窗体内定义)或本标准模块(在本标准模块内定义)中的过程调用。2、全局级指在窗体或标准模块内定义的过程,其默认是全局的,也可以加Public关键字进行说明。全局级过程可供该应用程序的所有窗体或标准模块中的过程调用,但根据过程所处的位置不同,调用方式有区别:,(1)在窗体定义的过程,外部过程要调用时,必须在过程名前加该过程名所在窗体名(2)在标准模块定义的过程,外部过程均可调用,但过程名必须唯一,否则要加标准模块名。,3调用其他模块中的过程的格式调用窗体过程的格式:Call窗体名.sub过程名(参数表)窗体名.sub过程名参数表窗体名.function过程名(参数表)调用标准模块中的过程的格式:Call模块名.sub过程名(参数表)模块名.sub过程名参数表模块名.function过程名(参数表),7.5多窗体与SubMain过程在一个VB应用程序中,允许创建多个窗体,多个标准标块和类模块。本节简要地讨论有关多窗体编程的有问题。7.5.1多窗体处理添加窗体删除窗体保存窗体设置启动窗体有关语句和方法:load,unload,show,hide,7.5.2SumMain过程有时在程序启动时不需要加载任何窗体,而是首先执行一段程序代码,例如,需要根据某种条件来决定显示几个不同窗体中的哪一个?要做到这一点,可以在标准模块中创建一个名为Main的Sub过程,把首先要执行的程序代码放在该SubMain过程中,并指定SubMain为“启动对象”。在一个工程中只能有一个SubMain过程。,第七章END,第八章鼠标键盘事件,8.1鼠标器和键盘8.2键盘和鼠标事件的应用,8.1.1键盘事件,KeypressKeydown和keyup,PrivateSubText1_KeyPress(KeyAsciiAsInteger)PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)PrivateSubText1_KeyUp(KeyCodeAsInteger,ShiftAsInteger)Shift的含义:三位二进制b2b1b0altctrlshift,8.1.2鼠标事件,MousedownMouseupMousemove,PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle),PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle),PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle),Button:12左右,8.2鼠标和键盘事件的应用,例8-1设计程序,从键盘输入字符时,在窗体上立即显示所键入的字符和该字符的ASCII码。双击窗体时,清除窗体上显示的内容。,例8-3编写一个英文打字练习程序。要求程序实现功能如下:在一个标签内随机产生40个字母的范文;当焦点进入文本框时开始计时,不断显示所用时间;在文本框按产生的范文输入相应的字母,不断统计当前的正确率。,例8-4编写程序,在鼠标左键单击窗体位置显示“*”,如图8-2所示,当鼠标右键单击窗体时清除窗体信息。,例:在窗体上多次单击鼠标左键,画出如图所示连接各单击点的连续折线,单击鼠标右键则在折线终点与起点之间自动画出连线,形成封闭区域。,第八章END,第九章图形操作,9.1图形操作基础9.2绘图属性9.3图形方法9.4绘图方法的应用9.5图形控件,9.1图形操作基础9.1.1坐标系统在VB中,每个对象定位于存放它的容器内,对象定位都要使用容器的坐标系。每个容器都有一个坐标系。构成一个坐标系的三要素是:坐标原点、坐标度量单位、坐标轴的长度与方向。,1)坐标的概念坐标系统是一个二维网格,使用窗体中的坐标,可定义网格上的位置:(x,y),2)坐标刻度与单位沿坐标轴定义位置的测量单位,统称为刻度。ScaleMode:决定对象坐标的度量单位,共有8种单位形式。如图:注意:ScaleMode属性默认值为:twip(缇)1英寸=1440缇1厘米=567缇1缇=0.001763cm例如语句:Form1.ScaleMode=7,厘米(centimiter),字符(默认为高12磅,宽20磅的单位),象素(pixed,与显示器分辨率有关),属性设置,说明,0,1,2,3,Tiwp(默认值),磅(point),每英寸72磅,用户定义(User),ScaleMode属性设置,4,5,6,英寸(inch),毫米(millimeter),7,9.1.2自定义坐标系统在VB中允许用户自己定义对象的坐标系统,即通过坐标属性或坐标方法重新定义对象的坐标系统。1用坐标属性定义坐标系统可以使用对象的ScaleLeft、ScaleTop、ScaleWidth和ScaleHeight四个属性,来创建自定义刻度。,Scaletop:控制容器对象顶端的坐标Scaleleft:控制容器对象左边的坐标这两个属性值可形成起始坐标例:Form1.ScaleLeft=-250:Form1.ScaleTop=250ScaleHeight:决定对象内部水平方向的单元数ScaleWidth:决定对象内部垂直方向的单元数例:Form1.ScaleHeight=-500Form1.ScaleWidth=500,2使用坐标方法定义坐标系统使用坐标方法Scale定义对象的坐标系统。Scale方法其语法如下:对象.Scale(xLeft,yTop)-(xRight,yBotton)其中:1、对象可以是窗体、图形框或打印机。2、(xLeft,yTop)表示对象左上角的坐标值,3、(xRight,yBotton)表示对象右下角的坐标值。,9.2绘图属性9.2.1当前坐标窗体或图形框或打印机的CurrentX、CurrentY属性给出这些对象在绘图时的当前坐标。注意:当使用Cls方法后,CurrentX,CurrentY属性值为0。,9.2.2线宽对象:窗体、图形框或打印机;DrawWidth属性:画线的宽度或点的大小;单位:象素,最小值为1。,9.2.3线型DrawStyle属性:画线的形状;格式:对象名.DrawStyle=number,9.2.4填充封闭图形的填充方式由FillStyle、FillColor这两个属性设置。1)FillColor:指定填充图案的颜色、默认的颜色与ForeColor相同2)FillStyle:指定填充的图案,共有8种图案,属性设置如图:,FillStyle属

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论