第2章面向对象编程基础VB是一种基于面向对象的程序设计语言,几乎所有的VB程序设计都是围绕着对象展开的,离开了对象,VB的程序设计将无从谈起。2.1VB的对象对象主要有窗体和控件两类。VB中对象是由类创建的,对象是类的一个实例。对象具有属性、事件和方法三要素。容器对象:窗体对象(Form)、框架对象(Frame)、图片框对象(Picture)2.1.1对象的命名对象名称命名规定:(1)名称必须以字母开头,由字母、汉字(最好不用)、数字及下划线组成;(2)名称的长度不超过40个字符;(3)名称不能与VB的公共对象的名称相同,例如Clipboard、Screen或App等;(4)相同类型的对象不能有相同的名称(若相同则会生成控件数组,见6.6节);(5)名称的命名最好体现“见名知义”,即可以反映出对象的类型与对象的用途。2.1.2对象的通用属性属性说明Name对象的名称Caption对象的标题Enabled是否有效Visible是否可见Font对象的字体BackColor、ForeColor背景色、前景色(1)Name(属性窗口中表示为“(名称)”)对象的名字,其命名要遵循对象名称命名规定。(2)CaptionCaption表示对象的标题。注意Name属性与Caption属性的区别。(3)FontFont属性设置输出字符的各种特性。对于可以显示文字的对象,Font属性是设置对象上所显示文字的字体格式;对于窗体和图片框对象,Font属性是设置显示在窗体和图片框上文字的字体格式。(4)Enabled设置在程序运行时对象是否有效。(5)Visible设置在程序运行时对象是否可见。(6)BackColor、ForeColor这两个属性为颜色属性。BackColor属性用于设置对象的背景颜色;ForeColor属性用于设置对象中显示的图片和文本的前景颜色。关于对象的属性,应注意下列几点:(1)不同的对象有不同的属性。例如,文本框对象有Text属性,而标签则没有;标签对象有Caption属性,而文本框则没有。(2)并非所有的属性都可以在设计阶段的属性窗口中进行设置。有的属性在设计时是不可使用的;因此,对这些属性只有通过程序代码进行设置。(3)每个对象都有许多属性,实际使用时没有必要也不可能逐一设置。只有当系统的默认值不满足需要时,才进行设置。设置或修改对象的属性有下面几种方法:1.在程序代码中修改对象的属性这种修改方式具有更大的灵活性。代码中修改对象属性值的格式如下:[对象.]属性名=属性值其中对象可以省略,此时对象为当前窗体。例如:Command1.Caption=确定“'设置命令按钮的标题Caption=排序'设置当前窗体的标题Label1.Caption=我喜欢学VB'设置标签的标题2.在属性窗口中修改对象的属性3.引用属性的值在程序代码中不仅可以设置属性的值,同时还可以引用属性的值。例如:Password=TxtPassword.Text表示将文本框对象的内容赋值给变量Password。2.1.3对象的通用事件1.事件所谓“事件(Event)”是由VB系统预先设置好的、能够被对象识别的动作。每一个对象能识别的事件是不同的。对象的事件可以由用户触发(或称激活),例如,单击鼠标或按下键盘按键。也可以由系统触发。命令按钮对象所能识别的事件:对象的常用事件:事件动作Click单击DblClick双击Change对象内容改变时Load装载窗体Unload卸载窗体Activate成为活动窗口KeyPress、KeyDown、KeyUp按键的状态MouseDown、MouseUp鼠标按钮的按下、放开MouseMove移动鼠标2.事件过程当对象响应事件后就会执行一段代码,该段代码规定了对象被事件激活时应产生的各种动作以及所要进行的相关处理的具体内容,这样的代码段称为事件过程。事件过程的一般格式如下:PrivateSub对象名称_事件名([参数表])…'处理事件的程序代码EndSub2.1.4对象的通用方法方法(Method)是对象可以执行的动作。方法实际上是对象本身包含的一些特殊的函数或过程,调用这些函数或过程完成某种特定的功能。代码中引用方法的格式如下:[对象.]方法名[参数]其中对象可以省略,此时对象为当前窗体。VB中最常用的几个方法:方法功能Cls清除运行时窗体或图片框中的图形和文本Hide隐藏(不是卸载)窗体Move移动窗体或控件Print打印文本Refresh重绘窗体或控件SetFocus将焦点移至指定的窗体或控件Show显示窗体2.1.5容器对象在VB的对象中,有一种对象称为容器对象,如窗体对象(Form)、框架对象(Frame)、图片框对象(Picture)等,这些对象是其他对象(如单选按钮、复选按钮、标签等)的载体或容器。2.2窗体窗体对象是VB应用程序最基本的对象之一,VB工程中至少要包含一个窗体对象。窗体是一种容器,其本身有着自己的属性、方法和事件。属性定义窗体的外观,方法定义窗体的行为,事件定义窗体与用户的交互。2.2.1窗体的结构2.2.2窗体的属性除了具有表2-1所列出的Name、Caption、Enabled、Visible、BackColor、ForeColor、Font等属性,还具有以下一些经常使用的属性。(1)AutoRedraw该属性控制屏幕图像的重建,主要用于多窗体程序设计中。(2)BorderStyle设置窗体边框的类型,即窗体外观。属性值VB内部常量值风格0vbBSNone窗口无边框1vbFixedSingle窗口有单线边框,运行时窗口大小不可改变2vbSizable(默认值)窗口有双线边框,运行时可改变窗口大小3vbFixedDouble窗口有双线边框,运行时窗口不包含最大与最小化按钮,窗口大小不可改变4vbFixedToolWindow窗口包含一个关闭按钮,标题栏字体缩小,运行时不可改变窗口大小5vbSizableToolWindow窗口包含一个关闭按钮,标题栏字体缩小,运行时可改变窗口大小(3)ControlBox设置窗体系统菜单的状态。(4)Left、Top指定窗体左上角的坐标(屏幕左上角为坐标原点),用以控制窗体的位置。坐标值的默认单位为Twip(缇)。Twip是长度单位,1英寸=1440Twip。(5)Height、Width指定窗体的高度和宽度,即决定窗体的大小。(6)Icon设置窗体处于最小化时显示的图标。(7)MaxButton、MinButton显示窗体右上角的最大、最小化按钮。(8)Picture为对象加载一个图形。可加载的图形文件格式包括:.Ico,.Bmp,.Wmf,.Gif,.Jpg等。在程序代码中使用时,格式为:对象.Picture=LoadPicture(Path)(9)WindowState该属性用来设置窗体的操作状态,其属性值可以在属性窗口设置,也可以用程序代码设置,格式如下:窗体.WindowState=值其“值”为0、1、2,分别代表三种状态:0正常状态,窗口有边界;1最小化状态,运行时,窗口最小化到任务栏;2最大化状态,无边界,充满整个屏幕。2.2.3窗体的事件除了可以响应对象的通用事件,如Click(单击)、DblClick(双击)外,常用的有以下几个事件:(1)Initialize事件该事件在窗体加载(Load)之前被配置时触发。(2)Load事件装入窗体时激发。注意,无论窗体名是什么,该事件的事件名都是Form_Load。(3)Unload事件当使用鼠标单击窗体右上角的关闭按钮或在程序代码中使用Unload命令时,触发该事件。Load事件的逆事件。事件过程名:Form_UnLoad()(4)Resize事件当窗体第一次显示或窗体的大小发生改变时,触发该事件。事件过程名:Form_Resize()(5)Activate事件窗体已经装入内存,变成活动窗体时触发。调用窗体的Show方法、SetFocus方法或单击窗体都会使该窗体成为活动窗口。事件过程名:Form_Activate()(6)Deactivate事件当另一个窗体被激活时,原先处于活动的窗体就会产生Deactivate事件。Activate事件的逆事件。事件过程名:Form_Deactivate()(7)Paint事件当窗体被移动或放大时,或者窗体移动覆盖了一个窗体时,触发该事件。事件过程名:Form_Paint()窗体事件发生的顺序如下:Initialize事件→Load事件→Activate事件→Resize事件→Paint事件2.2.4窗体的方法主要介绍Print方法的使用。使用Print方法可以将文本输出到窗体、图片框、立即窗口或打印机上。使用格式如下:[对象.]Print[输出列表]说明:(1)对象可以是窗体、图片框、立即窗口或打印机。省略对象名时,将输出内容输出到当前窗体上。例如:PrintVB程序设计'在当前窗体上输出Picture1.PrintVB程序设计'在图片框上输出Debug.PrintVB程序设计'在立即窗口输出Printer.PrintVB程序设计'在打印机上输出(2)如果省略输出列表,则输出一个空行。例如:PrivateSubForm_Click()PrintVisualBasicPrint'输出空行Print程序设计EndSub程序运行结果如下图所示。(3)输出列表的各项之间可以用逗号“,”或分号“;”分隔。例如:PrivateSubForm_Click()a=3:b=4Printa,b,a+bPrinta,,bPrinta=;a,b=;bPrintVisualBasic;程序设计EndSub程序运行结果如图所示。(4)若语句行末尾没有分隔符,则输出当前输出项后自动换行。若以分号或逗号结束,则输出当前输出项后不换行,下一个Print语句输出的内容将输出在同一行上。PrivateSubForm_Click()Print4,5Print6,7,Print8EndSub2.2.5窗体的语句1.Load语句该语句可把窗体装入内存,但并不显示窗体。语句格式如下:Load窗体名称2.Unload语句从内存中卸载窗体。语句格式如下:Unload窗体名称3.End语句2.2.6多窗体工程的设计1.在工程中添加窗体(1)通过“工程”菜单中的“添加窗体”命令来实现(2)在“工程管理器”窗口中单击右键,出现快捷菜单后,点击“添加窗体”。2.删除窗体(1)在“工程管理器”窗口中选定要删除的窗体。(2)选择“工程”菜单中的“移除”命令(或者右键单击要删除的窗体,在出现的快捷菜单中选择“移除”命令)。3.保存窗体在“工程管理器”窗口中选定要保存的窗体,再选择“文件”菜单中的“保存”或“另存为”命令,即可保存当前窗体文件。注意,工程中的每一个窗体都需要分别保存。4.设置启动窗体(1)从“工程”菜单中选择“工程属性”命令,打开“工程属性”对话框,如图所示。(2)选择“通用”选项卡,在“启动对象”列表框中选取要作为启动对象的名称。(3)单击“确定”按钮,设置完成。2.3控件控件是放置在窗体中的对象,是构成用户界面的基本元素。不同类型的控件有不同的属性、方法和事件,以适用于不同的目的。2.3.1控件的分类VB中涉及到的控件分为三类:标准控件、ActiveX控件和可插入对象。1.标准控件标准控件又称为内部控件,是VB本身提供的。VB开发环境启动后,在工具箱中放置了20个标准控件,例如,标签(Label)、文本框(TextBox)、命令按钮(CommandButton)等。这20个标准控件不能从工具箱中删除。2.ActiveX控件ActiveX控件包含在ActiveX控件部件中。ActiveX控件部件是一段可以重复使用的程序代码和数据,将这些程序代码和数据打包成控件以便能够重复使用。ActiveX控件部件是扩展名为.ocx的独立文件。使用他们时需要先将其添加到工具箱中,方法是:选择“工程”菜单中的“部件”命令;或者直接在工具箱中单击鼠标右键,在出现的快捷菜单中,选择“部件”命令,打开“部件”对话框,