




免费预览已结束,剩余61页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章 记事本程序设计3.1 记事本程序特点及设计目的记事本程序是Windows系统提供给用户的一个简单的文本编辑器,用于编辑、阅读文本格式的文件(一般以.txt为文本文件后缀)。本章以Visual Basic的文本框控件为主要对象,设计自己的记事本程序,除了Windows系统的记事本主要功能外,还增加了自动翻页功能,即在设定时间内自动向后滚动一行,而无需人工翻页阅读。3.1.1 记事本程序设计目的记事本程序设计的主要目的如下:1)进一步掌握Visual Basic窗口对象、文本框对象的基本属性和事件。2)掌握Visual Basic组合框、检查框、单选按钮对象基本属性、方法和事件。3)了解文件的基本概念、分类。掌握文本文件和二进制文件的存储格式以及它们的读写方法。4)掌握分支条件、DoLoop循环、With与End With等基本语句。5)掌握子程序的定义与调用方法。6)掌握下拉菜单和弹出菜单的设计及其代码编写。7)掌握Windows提供的通用对话框对象,应用该对象实现文件选择、字体选择和颜色选择功能。8)掌握Visual Basic 6.0的自定义类型,并利用自定义类型实现应用程序的参数保存功能。9)掌握MsgBox等基本函数。10)掌握给Visual Basic工程添加控件和对象的方法。11)了解Visual Basic6.0工具栏和状态栏的设计与代码编写。12)了解Visual Basic6.0的剪贴板对象,并应用该对象实现剪切、复制、粘贴等编辑功能。13)了解App对象。14)通过API函数SendMessage,了解与文本框有关的消息,利用这些消息,获取光标所在位置、文档的修改标志等信息。15)了解对象类型变量,了解FSO对象模型16)了解OLE拖放操作17)了解文件操作语句和文件系统控件3.1.2 记事本程序的功能记事本程序的主要功能是显示、编辑文本文件。设计的主要内容如下:1)利用文本框TextBox对象,实现文本的显示与编辑。2)编辑菜单,实现文件新建、打开、保存功能;文字复制、剪切与粘贴功能等3)利用通用对话框,选择文字显示的字体和颜色。4)实现自动翻页或滚动功能。5)利用状态栏,显示文档当前位置。6)具备参数设置功能,将是否滚动、滚动速度等参数保存到特定的二进制文件中3.2 基本语法要求3.2.1 对象变量的定义与赋值Visual Basic6.0除了可以定义普通变量保存整数、小数、字符串、日期以外,还可以定义特殊的变量类型,即对象类型变量,用于保存对象信息。所有的Visual Basic6.0对象都属于Object类型,可以定义一个Object类型的变量,用于保存一个文本框对象Text1或一个AutoCAD对象。所有控件类型的对象又都属于Control类型,可以定义一个Control类型的变量,用于保存一个文本框对象Text1或一个命令按钮对象Command1。Visual Basic6.0使用的每种对象都具有自己所属的类型,如文本框对象都属于TextBox类型、命令按钮对象都属于CommandButton类型等。可以定义一个TextBox类型的变量,用于保存一个文本框对象Text1。Visual Basic6.0究竟可以使用多少对象类型并不确定,与计算机系统中安装了多少应用程序有关,如果安装了AutoCAD,则可以使用AutoCAD对象。对象类型变量定义与普通类型变量定义采用相同的关键词:Dim、Private、Static、Public和Global。例如: Dim O1 As Object Dim C1 As Control Dim T1 As TextBox Dim E1 As Excel.Application Dim F1 As Form Dim D1 As DataBase以上语句分别定义了对象类型、控件类型、文本框类型、Excel应用程序类型、窗口类型、数据库类型的变量。也可以采用类型定义语句DefObj将以某些字母开头的变量统一定义成Object类型,如DefObj O-Q语句将所有以字母O、P、Q开头的变量均定义成Object类型。对象类型变量定义的目的是用于保存某个对象,而上述定义的各个对象类型变量仅仅进行了定义,变量中并没有真正保存任何对象,也就是说,对象并不存在,这样的变量不能用于实际操作,只有给对象类型变量赋值以后,对象才存在,也就可以操作这些变量。如上面的变量T1,只是说明它能够保存TextBox类型的对象,并不存在一个称为T1的文本框对象,只有将某个TextBox类型的对象赋值给T1后才存在这样的对象,才可以操作它。对象类型变量是一种特殊的变量,其赋值方法与普通变量有所区别,在赋值语句前加上关键词Set 。如将文本框Text1赋值给TextBox类型的变量T1,采用如下格式:Set T1=Text1前面的Set一定不能省,否则运行时出错。某些对象类型的变量,可以在定义时直接创建一个新对象,定义格式如下:Dim fs As New FileSystemObject上面的语句定义了一个FileSystemObject类型(文件系统对象)的对象变量fs,由于采用了New关键词,表示在定义时就创建fs对象,以后不需要再给fs变量赋值,直接使用该变量即可。能够采用New关键词定义的变量并不多,如Object、Control、TextBox、CommandButton等类型都不能采用New关键词创建。通常情况下,对象类型变量定义时As或New后面是该变量的类型,而不是一个具体的对象,如前面的FileSystemObject、TextBox、Control、Form、DataBase等,但有一个特例:具体的某个窗口对象可以作为一个新的类型,即可以定义一个新的变量,其类型为某个已经存在的具体窗口: Dim f1 As New Form2这里的变量f1是以窗口Form2为类型的一个新变量,由于采用了New关键词,该变量在定义时就可以存在,可以直接采用如下语句显示这个新的窗口: f1.Show采用这种方法定义的只有某个具体窗口,其它的各种控件对象都不能采用这种方法定义,下面这些定义是错误的:Dim T1 As Text1Dim C1 As Command1对象类型的变量用于保存对象的有关信息,需要占用一定的资源,在使用完对象类型变量后,应该释放其占用的资源,即将常量Nothing赋值给对象变量: Set t1=Nothing在Visual Basic6.0的集成开发环境中,新创建的工程只能使用少量几种对象类型,如果需要使用其它对象类型,必须将其引入到当前工程中(“Project”菜单的“References”子菜单,参见第一章1.3.4节),如前面的FileSystemObject、Excel.Application等都需要通过“References”子菜单将它们引入到当前工程。3.2.2 Select Case分支语句第二章介绍并使用了If条件语句,If条件广泛应用于各种条件判断的场合,在条件分支比较少的情况下,If条件层次结构比较清楚,当条件分支比较多时,若干个Else If使得整个条件分支结构变得很复杂,为此,Visual Basic提供了另外一种层次清晰的条件分支语句Selecte Case,其格式如下:Select Case 变量或表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 . Case Else 语句块n+1End SelectSelect Case后面的变量或表达式为测试表达式,它类型可以是数值型、字符串型、日期型等,根据测试表达式的值,决定程序的流程。一旦测试表达式与某个Case后的表达式列表匹配,则执行这个Case后面的语句,完成后跳出这个分支结构,执行End Select以后的语句;如果所有Case后的表达式都不与测试表达式匹配,则执行Case Else后的语句。每个Case分支后面的表达式列表可以由四种不同形式组成:l 单个常量、变量或表达式l 用“,”逗号分隔的几个常量l 用 To连接的某个范围的常量l 用Is和比较符号、30表示某个变量或表达式等于1或3到10或大于30。每个Select Case语句必须与一个End Select配对使用。Select Case往往应用于分支较多且只有一个比较变量或表达式的场合。Select Case可以自己嵌套使用,即每个Case分支的执行语句块部分又可以使用其它Select Case分支语句。也可以与If条件嵌套使用。【例3.1】 采用Select Case分支条件,根据变量Score的值,在标签Label1中显示“优”、“良”、“中”、“及格”和“不及格”。Select Case Score Case 90 To 100 Label1.Caption=优 Case 80 To 89 Label1.Caption=良 Case 70 To 79 Label1.Caption=中 Case 60 To 69 Label1.Caption=及格 Case Is60 Label1.Caption=不及格 Case Else Label1.Caption=成绩超过范围EndSelect上述代码的每个分支都是用To表示的一个范围,可以对其进行适当处理,用Score10作为测试表达式,这里的“”是整除运算符,0到100的数据整除10的结果为0到10。Select Case Score10 Case 9 To 10 Label1.Caption=优 Case 8 Label1.Caption=良 Case 7 Label1.Caption=中 Case 6 Label1.Caption=及格 Case Is100 Then Exit Do Loop Label1.Caption=SumEnd SubPrivate Sub Command1_Click() Dim i AsInteger, Sum As Integer i=1 Do While i100 Sum=Sum+i i=i+1 Loop Label1.Caption=SumEnd Sub为了调试本示例,需要先在窗口中添加一个标签对象Label1和一个命令按钮对象Command1。【例3.3】 应用DoLoop循环计算的近似值,要求满足精度10-6,其近似公式如下:观察这个公式,分式的分母实际是一个等差级数,后项比前项大2。由于循环次数未知,采用DoLoop,在循环体内判断精度,满足精度时采用Exit Do语句结束循环。代码如下:Private Sub Command1_Click() Dim pi As Double, pi1 As Double, m As Long , i As Long pi=4 : m=3 : pi1=pi : i=1 Do pi=pi+4*(-1)i/m If Abs(pi1-pi)10(-6) Then Exit Do m=m+2 : i=i+1 pi1=pi Loop Label1.Caption=piEnd Sub 代码中的“”为乘方运算符,Abs为计算绝对值的函数(参见3.4.6节的表3.1)。用(-1)i表示每次计算是加法还是减法,变量i开始时为1,采用减法,随后i加1变成2,第二次循环采用加法,以此类推。利用变量pi1记录上次计算的结果,与本次计算结果差值的绝对值就是其精度,与要求的精度10-6比较,小于要求精度则退出。在文件读取和数据库访问时,经常使用DoLoop循环,在其循环体内每次读取一行数据,其结束的条件是到达文件或数据库的结尾。3.2.4 WhileWend循环WhileWend循环是早期的一种循环格式,与前面DoLoop循环的格式二功能完全一致,现在已经很少使用这种循环格式,其格式如下:While 条件 循环体Wend采用While Wend循环实现例3.2功能的代码如下:Private Sub Command1_Click() Dim i AsInteger, Sum As Integer i=1 While i=100 Sum=Sum+i i=i+1 Wend Label1.Caption=SumEnd Sub3.2.5 With与End With语句在程序代码中,经常需要对同一个对象的多个属性和方法进行处理,每个属性和方法前面都需要加上对象名称和点号“.”,大量重复的对象名称书写较为麻烦,特别是对象名称较长时,更是如此。Visual Basic提供了With和End With语句,用于简化这类语句的书写方法,语法格式如下:With 对象名称 .属性 .方法End With在With和End With语句中,点号前面的对象可以省略。如代码: Text1.Left=0 Text1.Top=0 Text1.Width=Me.ScaleWidth Text1.Height=Me.ScaleHeight可以替换成: With Text1 .Left=0 .Top=0 .Width=Me.ScaleWidth .Height=Me.ScaleHeight End With3.2.6 Type与End Type语句(自定义类型)Visual Basci提供了整数、小数、字符等各种数据类型,而在实际应用时,往往这些已有类型并不能满足需求,因此需要用户自己定义新的数据类型存放特殊的数据。自定义类型用Type和End Type语句定义,可以将各种基本类型组合成一个新的类型,作为一个整体看待,可以采用新定义的类型定义变量。Type和End Type的格式如下:Public|Private Type 类型名称 成员 As 类型 成员 As 类型 End Type Public和Private表示自定义类型的使用范围。一般将自定义类型定义在模块(Module)中,使得整个工程的任何地方都可以使用,可以省略Public。如果在某个窗口或类模块中自定义新类型,前面的Private不能省。在自定义类型中,对每个成员指定其类型,可以是基本数据类型,也可以是已经定义的新类型。如果需要将用新类型定义的变量保存到二进制文件中,其中的字符串类型成员必须定义成定长字符串。例如,定义一个新的类型保存学生信息,采用如下格式: Type STUDENT Name As String*10 Age As Integer Class As String*30 End Type一旦采用Type和End Type语句定义了新类型,就可以用该类型定义变量,其定义方法与普通类型变量定义方法一致。 Dim stu1 As STUDENT以上定义的新变量stu1是STUDENT类型的,对这样的变量操作需要针对其各个成员,采用点号“.”访问其成员: stu1.Name= 张三 stu1.Age= 20 stu1.Class= 机06-13.2.7 Enum与End Enum语句(枚举类型)枚举类型是一种特殊的自定义类型,它包含某个数据的所有可能取值,例如,对于星期数据,只有星期一到星期日这七个取值。Enum和End Enum的格式如下:Public|Private Enum 类型名称 成员=常量表达式 成员=常量表达式 End Enum 每个成员的常量表达式被看作Long类型数据,可以省略,默认第一个成员等于0,后面以此类推。Public和Private的说明与自定义类型相同。例如,定义星期枚举类型如下: Enum WEEKNAME Sunday Monday Tuesday Wednesday Thusday Friday Saturday End Enum其中的成员Sunday等于0,Monday等于1Saturday等于6。采用枚举定义的类型也可以作为新类型看待,能够用于定义新的变量: Dim a As WEEKNAME a= Saturday3.3 子程序定义与调用Visual Basic6.0中将子程序和函数统称为过程,用于提高代码的利用率,所有的子程序和函数都可以被其它子程序或函数直接或间接调用。某些子程序也可以被自身调用,这样的调用称为递归调用。在第二章的示例中,已经接触了子程序,每个对象的事件处理程序就是一个标准的子程序。3.3.1 子程序的定义子程序采用关键词Sub和End Sub定义,其格式如下:Public|Private|Static Sub 子程序名(参数表) 子程序体 Exit SubEnd Sub Public关键词表示该子程序可以被当前工程的所有其它子程序或函数调用;Private关键词表示该子程序只能被当前窗口或模块中的子程序或函数调用;Static关键词表示该子程序内部的所有局部变量均为静态变量。如果省略这三个关键词,则默认为Private。第二章的所有事件处理子程序前均有Private关键词。子程序在正常状态下应该运行到End Sub语句才结束,有时也可以根据条件提前采用语句Exit Sub结束子程序。参数表是在调用子程序时要传递给子程序的参数变量列表,在这里称为形参(调用时实际赋给它的内容称为实参,二者的位置和类型一定要一致)。参数表的格式如下:ByVal|ByRef 参数1, ByVal|ByRef 参数2,关键词ByVal表示按值传递,调用时将实参的值传递过来,这样的参数在子程序内部不能被改变;关键词ByRef表示该参数按地址传递,调用时将实参在内存中的地址传递过来,这样的参数在子程序内部可以被改变。如果某个参数前面没有ByVal或ByRef关键词,则默认为按地址传递,即参数在子程序内部可以改变。子程序的名称与变量名称一样,也是由字母、数字和下划线组成,且必须以字母开头(汉字及其它国家的文字也能够作为子程序名称的组成部分,但使用不方便,一般不采用)。Visual Basic6.0中创建子程序的方法参见第二章2.8.7节有关Main子程序的创建方法。编写如下两个子程序,实现两个数据交换:Sub Swap1(a As Integer, b As Integer) Dim c As Integer c=a : a=b : b=cEnd SubSub Swap1(ByVal a As Integer, ByVal b As Integer) Dim c As Integer c=a : a=b : b=cEnd Sub子程序Swap1包括两个Integer类型的参数a和b,都没有采用ByVal或ByRef关键词,表示它们在Swap内部可以被改变。子程序Swap2同样包括两个Integer类型的参数a和b,都用ByVal修饰,表示它们不能被改变。3.3.2 子程序的调用子程序的调用采用两种方法:l 子程序名 实参表l Call 子程序名 (实参表) 注意这两种方法的区别:采用第一种方法时,实参表前后不能用小括弧括起来,子程序名与第一个参数之间用空格隔开。采用第二种方法时,如果有实参,则实参前后一定要用小括弧括起来。实参表将实际的参数内容或地址传递给形参,必须与形参在个数、顺序和类型方面保持一致。对于上面的子程序Swap1,可以采用如下方法调用: Swap1 x,y Call Swap1 x,y使用下面的代码比较子程序Swap1和Swap2:Private Sub Form_Click() Dim x1 As Integer, y1 As Integer Dim x2 As Integer, y2 As Integer x1=10 : y1=20 x2=10 : y2=20 Swap1 x1, y1 Swap2 x2, y2 MsgBox x1= & x1 & ; y1= & y1 & x2= & x2 & ; y2= & y2上述代码中的Msgbox是一个函数,用于弹出一个提示对话框,该函数的说明见3.5.4节。其提示内容用字符串连接运算符“&”将几个部分连在一起。当在窗口空白区域单击时,弹出如下对话框:图3.1 交换程序的运行结果由图3.1可见,子程序Swap1实现了两个变量的内容交换,而子程序Swap2并没有实现两个变量的内容交换。虽然Swap2内部代码与Swap1完全一致,但由于其两个参数采用ByVal修饰,它们的值不能返回。调用子程序时按值传递实参的形式有四种:l 形参用ByVal修饰,实参采用变量名l 无论形参是否用ByVal修饰,实参采用常量l 无论形参是否用ByVal修饰,实参采用表达式l 无论形参是否用ByVal修饰,实参采用“(变量)”对于前面的子程序Swap1,尽管形参没有采用ByVal修饰,采用下面三个语句调用时,同样不能实现交换: Swap1 10, 20 Swap1 x1+1, y1+2 Swap1 (x1), (y1)3.3.3 关于静态变量第二章已经介绍过静态变量的概念,是采用Static关键词在子程序内部定义的变量。前面已经提到,在定义子程序时也可以采用Static关键词将这个子程序内部的所有局部变量作为静态变量。静态变量的特点是其内容在两次调用该子程序之间保持不变,而其它子程序又不能使用这些变量。在分析子程序运行结果时,一定要注意静态变量与普通变量的区别。编写子程序P1以及调用它的事件处理子程序Form_DblClick(窗口的双击事件)如下:Sub P1() Static a As Integer Dim b As Integer a=a+1 b=b+1 MsgBox a= & a & ; b= & bEnd SubPrivate Sub Form_DblClick() P1End Sub 程序运行时在窗口空白区域双击四次以后,弹出的对话框如下:图3.2 静态变量运行效果3.4 基本对象3.4.1 窗口对象Form的其它事件与方法第二章已经介绍了窗口对象的主要属性和事件,本章需要利用Form的其它几个事件和方法。1)Resize事件当窗口的大小发生变化时触发该事件。当窗口创建后第一次显示时也会触发该事件。对于记事本程序,其窗口中放置的文本框对象应该占据整个窗口的客户区,为此,需要在窗口的Resize事件中调整其位置和大小。Visual Basic6.0中,处理窗口Resize事件的子程序格式如下:Private Sub Form_Resize()End Sub2)Unload和QueryUnload事件关闭某个窗口时会触发这两个事件,在这个事件中可以根据条件取消窗口的关闭动作。一般将Unload或QueryUnload事件处理子程序看作窗口的最后一个被执行的子程序,往往用于进行必要的善后工作,如释放资源、保存文件等等。Visual Basic6.0中,处理窗口Unload事件的子程序格式如下:Private Sub Form_Unload(Cancel As Integer)End Sub该子程序带有一个参数Cancel,如果在该子程序中给Cancel参数赋值1,则取消关闭动作。QueryUnload事件除了通知关闭窗口动作外,还提供关闭窗口的原因。其处理子程序格式如下:Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)End Sub其中包含两个参数:Cancel参数与UnLoad事件处理子程序的该参数功能一致;UnloadMode参数表示关闭窗口的原因,其含义如下:l 0:由点击窗口右上角的关闭按钮引起l 1:由Unload语句引起l 2:由关闭Windows系统引起l 3:由Windows系统的任务管理器结束进程引起l 4:由关闭父窗口引起一般情况下,并不关心由谁引起的关闭动作,而是需要在关闭窗口时处理善后工作,主要使用的是Unload事件。记事本程序需要在关闭窗口时提示保存文件,也就需要处理Form的Unload事件。3)PopupMenu方法Form对象的PopupMenu方法用于在指定位置弹出一个右键菜单。其使用格式如下:窗口对象.PopupMenu Menu, Flags, X, Y, DefaultMenu该方法最多带五个参数,它们的含义如下:l Menu:需要弹出显示的菜单对象名称l Flags:弹出菜单标志l X、Y:弹出菜单左上角显示的位置l DefaultMenu:缺省选择的菜单项目只有第一个参数是必须的,其它参数一般均省略。3.4.2 文本框对象TextBox的其它属性和事件本章使用文本框控件作为文本文件内容的显示与编辑工具,需要用到另外几个重要属性:MultiLine、ScrollBars、SelStart、SelLength和SelText属性。MultiLine用于设置文本框对象是否可以显示多行文字,如果该属性为Flase,即使文本框的Text属性中包含回车换行,也不能以多行形式显示。ScrollBars用于设置文本框是否显示滚动条,该属性往往与MultiLines一起使用,在多行显示时滚动显示其所有内容。SelStart属性表示文本框中选中文字的起始位置,SelLength属性表示文本框中选中文字的数量,SelText属性则表示文本框中选中的文本。文本框对象还有一个与选中有关属性HideSelection,表示文本框对象失去焦点时是否显示其中的选中状态,为False表示显示其选中状态,为True则不显示其选中状态。SelStart和SelLendth配合可以在文本框中选中指定的文本,下面代码将文本框Text1中的文字都选中:Text1.SelStart=0Text1.SelLength=Len(Text1.Text)为了实现通过资源管理器拖放文件到记事本中显示,本章还需要用到文本框的OLEDropMode属性和OLEDragDrop事件。OLEDropMode属性设置为0-None,表示不能够将文本框对象作为OLE拖放的目标;设置为1-Manual,表示文本框对象可以作为OLE拖放的目标,并通过程序代码实现文件内容的显示。拖放Drag是将某个对象拖动到另外对象的动作。如果在同一个窗口中实现的拖放,称为普通拖放,用Drag表示,如果是在不同窗口或不同应用程序之间拖放,则称为OLE拖放,用OLEDrag表示。记事本程序需要从资源管理器中把文件拖放过来,因而需要使用OLEDrag,而文本框对象的OLEDragDrop事件则是将另外一个窗口或应用程序中的某个对象拖动并放置到文本框对象时触发的事件。Visual Basic6.0中,处理文本框OLEDragDrop事件的子程序格式如下:Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, _ Button As Integer, Shift As Integer, X As Single, Y As Single)End Sub该子程序的参数较多,第一个参数Data最为重要,表示拖放过来的对象,是DataObject类型的参数;第二个参数Effect表示拖放效果;Button、Shift、X、Y参数的含义与第二章介绍的MouseDown等事件相同。由于Data参数属于DataObject类型,它也是一个对象类型的参数,包含有若干的属性和方法。本章用到其中的一个属性Files,表示拖放过来的文件,由一个或多个文件组成,用序号表示某个文件,其中序号1表示第一个文件,对于单个文件的拖放,就使用Data.Files(1)表示。3.4.3 检查框对象CheckBox检查框用于选择某个选项,也称为复选框,是一种多选多工具,可以从多个选项中选择多个项目。检查框的类型是CheckBox,在某个窗口上创建新的检查框对象时,其名称默认取为Check1、Check2等。Caption属性表示检查框提示内容,利用其Caption属性,可以定义其访问键,如果检查框Check1的Caption属性设置为“倾斜(&I)”,则其标题显示成“倾斜(I)”,按下Alt+I就可以选中Check1对象,相当于用鼠标点击它;Value属性表示检查框对象的选择状态,其取值有三种:0表示没有选中;1表示选中;2表示当前检查框为灰色,不能选。检查框对象与命令按钮对象类似,也可以通过Style、BackColor、Picture、DownPicture、DiablePicture属性设置其背景颜色和图形。检查框对象使用的主要事件是Click事件(也不能接收双击事件DbClick)。3.4.4 单选按钮对象OptionButton单选按钮也用于选择某个选项,又称单选框,是一种多选一工具,只能从多个选项中选择一个项目。单选按钮的类型是OptionButton,在某个窗口上创建新的单选按钮对象时,其名称默认取为Option1、Option2等。Caption属性表示单选按钮提示内容,利用其Caption属性,可以定义其访问键,如果检查框Option1的Caption属性设置为“宋体(&S)”,则其标题显示成“宋体(S)”,按下Alt+S就可以选中Option1对象,相当于用鼠标点击它;Value属性表示单选按钮对象的选择状态,其取值有两个:False表示没有选中;True表示选中。单选按钮对象与命令按钮对象类似,也可以通过Style、BackColor、Picture、DownPicture、DiablePicture属性设置其背景颜色和图形。单选按钮对象使用的主要事件是Click事件(也不能接收双击事件DbClick)。由于单选按钮只能实现多选一,如果一个窗口中具有几组选项,必须先将它们分组,能够实现分组的对象包括:框架对象Frame、图片框对象PictureBox。设计界面时,必须将同一组单选按钮放置在一个框架对象或图片框对象上。图3.3所示窗口界面综合应用了检查框和单选按钮,一组单选按钮用于选择字体名称,另外一组单选按钮用于选择字体大小。图3.3 单选按钮和检查框对象应用部分检查框对象和单选按钮对象的事件处理子程序代码如下:Private Sub Check1_Click() If Check1.Value=0 Then Label1.FontBold=False Else Label1.FontBold=True End IfEnd SubPrivate Sub Option1_Click() Label1.FontName= 宋体End SubPrivate Sub Option1_Click() Label1.FontSize= 20End Sub3.4.5 组合框对象ComboBox组合框用于以下拉形式从多个选项中选取一项,它既支持选择,又支持直接输入,是Windows应用程序中使用比较广泛的控件。组合框的类型是ComboBox,在某个窗口上创建新的组合框对象时,其名称默认取为Combo1、Combo2等。组合框的主要属性包括:List、ListCount、ListIndex、Text、Sorted、Locked、ItemData以及Style。List属性代表组合框对象的所有选项,实际上是一个数组,其起始序号为0,第一个选项为List(0)。List的内容可以在属性窗口中直接输入,也可以通过组合框的AddItem方法添加。ListCount属性表示组合框的选项数量。ListIndex属性代表当前选中的某一项的序号。如果当前没有选中任何一项,该属性等于-1。Text属性代表当前选中项目的内容或输入的内容。Sorted属性表示其中选项是否按字母排序,如果为True,则按字母排序。Locked属性控制组合框是否能够选择或输入。ItemData属性是与每个选项对应的一组数值。通过这个数组,可以给某个选项提供一个额外的数值。例如,某个组合框的项目为课程,其中包括:“英语”、“计算机基础”、“力学”等,可以采用ItemData属性存放每门课的学分。Style属性表示组合框的样式。共有三种不同的样式。样式0(默认样式)为下拉式组合框。它在窗口上只显示一个输入框和一个下拉小箭头。用户可以直接在输入框中输入内容,也可以点击下拉小箭头,打开下拉框选择所需选项。样式1为简单组合框。它在窗口上显示一个输入框以及选项显示框,选项显示框中列出所有选项供用户选择。样式2为下拉列表框,与样式0类似,也显示一个输入框和一个下拉小箭头。但用户不能从输入框输入内容,只能通过下拉框选择。样式2适用于只能选择特定选项的场合。使用时需要注意:通过Text属性给其赋值时,所赋值内容一定要是其选项中的某一项,否则出错。例如,组合框中包括“教师”、“学生”两个选项,而给其Text属性赋值“研究生”就会出错。采用样式2的组合框时,不能采用类似Combo1.Text=语句给其赋值。获取或设置组合框的当前内容,可以采用两种方法:l 利用Text属性,如Combo1.Text。l 利用List属性和ListIndex属性,如Combo1.List(Combo1.ListIndex)。采用这种方法一定要先判断一下ListIndex是否大于等于0,如果不大于等于0,表示没有选中任何选项。组合框的主要方法包括:AddItem、RemoveItem和Clear。AddItem方法用于在程序运行时给组合框添加选项,其格式如下: 组合框名称.AddItem 选项,位置如果省略位置参数,则添加到最后。位置编号从0开始。例如,给Combo1对象添加选项“中国”,采用语句Combo1.AddItem 中国。RemoveItem方法用于在程序运行时删除组合框中某个选项,其格式如下: 组合框名称.RemoveItem 序号删除按序号进行,某个选项删除后,其后面的所有序号自动减1,删除时一定要注意这个问题,尽量从后往前删除,否则容易出错。例如:Combo1中当前选项为“中国”、“美国”、“英国”、“法国”,执行以下两条语句: Combo1.RemoveItem 0 Combo1.RemoveItem 1剩余的选项为“美国”和“法国”,而不是“英国”和“法国”,其原因在于:以序号0删除选项后,选项“美国”的序号变成0,选项“英国”的序号变成1,选项“法国”的序号变成2,再次以序号1删除的就是选项“英国”。Clear方法用于在程序运行时删除组合框中所有选项,其格式如下: 组合框名称.Clear组合框对象的主要事件包括:Click、Change、DblClick和DropDown。用户通过下拉框选择某个选项时触发Click事件。用户通过输入框输入内容时触发Change事件(组合框的默认事件),由于样式2不允许直接输入,也就不可能触发Change事件。用户用鼠标点击小箭头时触发DropDown事件。只有样式1才能触发DblClick事件(双击某个选项)。3.4.6 CommonDialog对象(通用对话框)Windows应用程序中经常需要选择文件、颜色、字体,微软将这些功能集成在一起,以通用对话框控件CommonDialog的形式提供给程序员,从而实现标准化的文件、颜色、字体等选择对话框,并且该控件随着Windows系统版本升级而升级,即使是在前期版本下开发的应用程序,文件、颜色、字体选择对话框在新版本中也以新的形式显示。通用对话框不是Visual Basic6.0的标准控件,如果需要使用它,必须将其添加到当前工程的控件箱上:选择“Project”菜单的“Components”子菜单(中文版本的Visual Basci6.0中为“工程”菜单的“部件”子菜单),弹出部件选择对话框(参见第一章图1.31),从列表中选中“Microsoft Common Dialog Control 6.0”,则将通用对话框添加到控件箱,如图3.4所示。通用对话框CommonDialog图3.4 将通用对话框添加到控件箱通用对话框的类型为CommonDialog,在某个窗口上创建新的通用对话框对象时,其名称默认取为CommonDialog1、CommonDialog2等对象。一个窗口上只需要一个通用对话框对象,可以实现文件、颜色、字体选择等多个对话框功能。通用对话框对象具有比较多的属性,针对不同的对话框功能,这些属性和方法分成几组。 一、通用对话框的公共属性Action属性用于选择不同的对话框功能,取值为1到6,对应文件打开、文件保存、颜色选择、字体选择、打印机选择和帮助对话框。这些取值分别与ShowOpen、ShowSave、ShowColor、ShowFont、ShowPrinter和ShowHelp方法对应,一般采用这六个方法,而不用Action来显示不同的对话框。DialogTitle属性用于设置对话框的标题栏,一般采用其默认标题栏。CancelError属性用于定义在对话框中选中“取消”按钮时的响应,如果CancelError取值True,则选中“取消”按钮时会产生一个错误,程序代码中可以根据这个错误信息做相应的处理;而取值False则不会产生错误信息。Flags属性用于设置每个对话框的特征,对于不同对话框功能,其含义不同。二、文件选择有关属性和方法与文件选择有关的主要属性包括:Filter、FilterIndex、FileName、FileTitle和InitDir。Filter属性用于设置文件选择对话框中显示文件的类型(即文件后缀格式)。该属性为字符串类型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年学历类自考专业(学前教育)学前儿童美术教育-学前儿童科学教育参考题库含答案解析(5套)
- 2025年学历类自考专业(学前教育)儿童发展理论-学前卫生学参考题库含答案解析(5套)
- 华师大版八年级科学下册2.2 光的折射 说课稿(6份打包)
- 2024秋七年级英语上册 Unit 5 Family and Home Lesson 27 Danny at Home说课稿 (新版)冀教版
- 2025年学历类自考专业(国贸)国际商法-中国对外贸易参考题库含答案解析(5套)
- 2025年学历类自考专业(国贸)中国对外贸易-基础英语参考题库含答案解析(5套)
- 2025年学历类自考专业(公共关系)广告运作策略-传播学概论参考题库含答案解析(5套)
- 2025年学历类自考专业(会计)高级财务会计-高级财务会计参考题库含答案解析(5套)
- 2025年新塘坝施工合同协议书
- (2025年标准)新疆城建转让协议书
- 【社会层面】社会主义核心价值观
- 变更风险识别、评估记录表参考模板范本
- 2022年基本公共卫生服务项目宣传工作计划
- 癫痫病人的护理查房ppt课件(PPT 24页)
- DB45T2053-2019 重质碳酸钙单位产品能源消耗限额
- 红金简约风教师退休欢送会PPT通用模板
- 水准点复测记录(自动计算表)
- 有机热载体锅炉安装工程施工方案完整
- 处方点评与案例分析
- 《放射物理与防护》第三章
- 任务1汽车配件识别
评论
0/150
提交评论