第七章表单设计本章教学计划目的:了解对象的基本概念和面向对象程序设计的思想,掌握用表单设计器和向导建立表单重点:控件应用,表单属性难点:事件代码课时:课堂讲授4课时、上机实验6课时方式:课堂讲授、上机实验本章纲要面向对象程序设计方法创建表单表单控件设计面向对象程序设计已成为当前应用软件发展的主流,它与传统的结构化程序设计有很大的区别。VisualFoxPro不仅支持面向过程的编程技术,而且支持面向对象的编程技术。7.1面向对象程序设计方法结构化程序设计以对数据进行操作的过程作为程序的主体,将一个待求解的问题自顶向下分解成一个个简单独立的子问题,然后用子程序或函数解决这些子问题。面向对象程序设计以对象作为程序的主体。程序由若干对象组成,对象是将数据与对该数据的操作代码封装在一起的实体,对象之间通过发送消息来实现程序的功能。VisualFoxPro主窗口(表单)由若干个对象组成,通过单击主窗口的关闭按钮向系统发送消息,完成关闭主窗口的操作。程序中的对象由类产生,类是同类对象的特征和行为的综合描述。面向对象的程序设计不需要考虑程序代码的全部流程,只需根据系统预先提供的类,考虑如何创建对象及创建什么样的对象。7.1.1面向对象的基本概念1.对象在VisualFoxPro中,对象是将数据和对该数据的操作代码封装在一起的程序模块,即对象是包含属性和方法的实体。2.类(1)类的定义对具有相同属性和行为的对象集合的一种综合描述。类是对象的抽象描述,对象是类的具体化和实例化。同类对象都具有所属类的方法和属性,但每个对象的属性值可以不同。(2)基类和子类①基类是VisualFoxPro内部定义的类。②子类是以其他类定义为起点创建的新类,它继承父类的特征和方法,又具有自己的特征和方法。(3)类的特性①封装性将一个数据和与这个数据有关的操作集合在一起,形成一个有机的实体—对象。②继承性是类(基类)创建新类(子类)的过程。子类(派生类)自动共享其父类(基类)中的所有属性和方法,但子类可定义自己属性和方法。③多态性当不同的对象收到相同的消息时产生不同的动作。3.容器类和控件类(1)容器类:由容器类衍生出来的对象可以包含其他对象,并允许访问所包含的对象。容器类及可包含的对象容器容器包含的对象表单集表单、工具条表单任意控件容器任意控件选项按钮组选项按钮命令组命令按钮页框页面表格表的列等表格列表头、文本框等控件(2)控件类控件类比容器类封装得更为完整。控件类创建的对象,在设计和运行时作为一个整体,不能再包含其它控件对象。控件类包括标签、命令按钮、文本框、编辑框、列表框、组合框、计时器、形状、复选框、图片、线条、超联接等。4.对象的属性、方法和事件属性、方法、事件是构成对象的三大要素。把属性看作对象的特征,把事件看作对象的响应,把方法看作对象的行为。(1)属性是指对象的特征,每个对象都有自己的属性如表单具有标题(Caption)、背景颜色(Backcolor)、可移动(Movable)等属性。它们有一个对应值,可在属性窗口设置,也可在运行时改变。如:thisform.caption=“数据维护”thisform.movable=.f.(2)方法是指对象执行的一个操作,是与对象相关联的过程,它是对象的函数成员。方法程序可出现在对象的事件中,也可独立于事件单独存在。如:Box,Circle,Hide,Release等方法程序可以无限扩展,而事件集合是固定的,用户不能创建新的事件,却可创建新的方法和属性。方法的表示:如thisform.releasethisform.show(3)事件事件是一种预先定义好的特定动作,由用户或系统激活,一般情况是由用户的交互操作产生。事件作用于对象。如:单击鼠标事件(click)、调入事件(load)、初始化事件(init)。我们需要对事件编写对应代码,当系统响应用户的动作时,将自动触发事件对应的代码。例如,用户单击窗口(表单)中“关闭”按钮,产生单击(Click)事件,则执行Click事件中预先编好的关闭窗口代码,以关闭窗口。7.1.2对象创建和引用1.对象的创建在程序设计中可用CREATEOBJECT函数来直接生成基于某个类的对象。格式:对象名=CREATEOBJECT(类名)功能:由类创建对象。说明:①对象名:表示创建的对象名称,是合法标识符。②类名:表示类的名称,由系统指定。2.对象的引用在面向对象程序设计中,常常需要引用对象来设置对象的属性、事件及调用方法程序。对某个对象的属性、事件或方法的归属层次的描述就是对象的引用。(1)对象引用规则在VisualFoxPro中经常用以下关键字和属性:Thisformset:表示当前表单集Thisform:表示当前表单This:表示当前对象Parent:表示包含当前对象的容器对象引用格式是在引用关键字后跟一个点号,再写出被引用对象或者对象的属性、事件或方法,引用方法有绝对引用和相对引用两种。①绝对引用:从最高容器开始逐层向下直到某个对象为止的引用方式,在引用时需要将对象所处位置的完整容器层次全部指出。②相对引用:相对引用就是从正在为编写事件代码的对象出发,通过逐层向高一层或低一层直到另一对象的引用。(2)对象属性访问与对象方法调用对象属性访问以及对象方法调用的基本格式如下:对象引用.对象属性对象引用.对象方法[(参数列表)]【例7.6】基于VisualFoxPro的Form类生成一个对象,然后访问该对象的一些属性和方法,可在命令窗口输入以下命令:Form1=CREATEOBJECT(Form)Form1.ShowForm1.Caption=“演示”Form1.Release(3)执行对象事件事件过程代码设计好后,运行时可以由用户使用鼠标操作产生单击和移动等事件调用其代码,也可在运行中由程序通过命令调用其代码。执行对象的事件的命令格式为:对象引用.事件名[([参数表])]【例7.7】用命令执行表单事件和命令按钮事件。Thisform.ActiveThisform.Command1.Click表示对象名称及其引用表示对象的事件名称及相关参数7.2创建表单表单的创建是一个全新的领域。创建表单的过程,就是定义控件的属性,确定事件或方法、代码的过程。表单就是一个容器,它可以容纳多个控件。一般可以使用表单向导和表单设计器两种方式创建表单。7.2.1表单设计器用表单设计器创建表单的操作步骤:文件新建表单表单设计器显示表单控件属性代码保存运行2.表单设计器窗口3.属性设置窗口在“属性”窗口设置对象属性,首先选中要设置的对象,打开“属性窗口”,设置该对象属性。对象组合框属性列表框属性设置框属性说明消息选项卡4.数据环境如同查询和视图的设计一样,VisualFoxPro表单的主要任务是对数据库中数据进行操作,这些操作包括查询、修改和插入。表单上的对象和库中数据的联系是通过数据环境完成的。数据环境包含与表单有联系的表和视图以及表之间的关系,它指明表单的数据的来源。用户可以通过数据环境设计器来设置表单的数据环境。5.表单控件操作打开表单设计器后,可以在“表单控件”工具栏中选择合适的控件,向表单中添加控件;设置控件的属性和编写事件代码,设置控件布局和调整Tab次序。“表单控件”工具栏是表单设计的主要工具。默认包含21个控件、4个辅助按钮,6.保存和运行表单(1)保存表单表单设计完成后,选择“文件”菜单中的“保存”命令,表单将保存在扩展名为.SCX的表单文件和扩展名为.SCT的表单备注文件中。表单中所有对象的属性设置和程序代码都保存在.SCT表单备注文件中,该文件可用文本编辑器打开。(2)运行表单在表单设计器打开时,用系统主菜单或快捷菜单方式可以运行表单,另外以命令方式运行表单,格式为:Doform表单.scx7.表单设置(1)表单常用属性Caption:设置表单的标题。默认为“Form1”。Height和Width:设置表单的高度和宽度。Forecolor:设置表单标题文本颜色。BackColor:设置表单的背景颜色。AutoCenter:确定表单在运行时是否在屏幕上居中。AutoCenter属性值为.T.,则居中,否则为.F.。默认值为.T.。Closeable:确定在表单运行时能否使用关闭按钮关闭表单。属性值为.T.,则可以使用关闭按钮;否则为.F.,不能用关闭按钮。默认为.T.MaxButton:设置表单运行时是否有最大化按钮。默认为.T.,表示有最大化按钮。MinButton:设置表单运行时是否有最小化按钮。默认为.T.,表示有最小化按钮。Visible:设置表单运行时是否显示表单,若属性值为.T.,表单运行时显示表单;属性值为.F.,表单运行时不显示表单。默认为.T.。Init事件在对象建立时引发Destroy事件在对象释放时引发Click事件用鼠标单击对象时引发Release方法将表单从内存中释放(相当于按了关闭)Refresh方法重新绘制表单或控件,并刷新所有值show方法显示表单Hide方法隐藏表单7.2.2表单向导和快速表单在VisualFoxPro系统中,除使用表单设计器创建新的表单外,还可以使用表单向导和快速表单创建新的表单,不过由表单向导创建的只能是数据表单。7.3.1输出类控件7.3表单控件设计1.标签控件“标签”控件是按一定格式显示在表单上的文本信息,用来显示表单中各种说明和提示信息。一旦“标签”控件的属性、事件和方法被定义,输出信息将根据这些定义,按指定的格式输出。“标签”控件的属性主要包括:“标签”的大小及颜色,“标签”所显示的文本内容、字体、大小和风格等。2.图形、线条和形状图像(Image)控件:使用图像控件,可以在表单上创建图像,VisualFoxPro的图像控件可以支持BMP、GIF和JPG等格式图像的显示。线条(Line)控件:在表单上画各种类型的线条,包括水平线、斜线和垂直线。形状(Shap)控件:在表单上画出各种类型的图形,包括矩形、圆角矩形、正方形、圆角正方形、椭圆和圆。7.3.2输入类控件输入类控件主要用于输入和编辑数据。1.文本框(Textbox)控件文本框可以显示和输入多种类型的数据。默认为字符型数据,最大长度为256个字符。如果编辑的是日期型或日期时间型数据,那么在内容被选定的情况下,按“+”或“-”,可以使日期增加一天或减少一天。向文本框中输入数据时,数据过长能自动换行,而按Enter键,输入就终止。所有编辑功能在文本框内都可使用。2.编辑框(Editbox)控件编辑框的主要功能也是显示和输入文本,但它与文本框有以下区别:(1)编辑框只能输入、编辑字符型数据。而文本框可用于4种类型数据的输入。(2)编辑框可以输入多段文本,即按Enter键是换行,而不是终止编辑框的输入。而文本框只能输入一段文本,按Enter键终止输入。由于编辑框允许输入多段文本,因此编辑框可用于处理备注型字段(需设置编辑框ControlSource属性为备注字段),有时也用来显示剪贴板中的文本。3.列表框(ListBox)控件列表框提供一组选项(数据项),用户可以从中选择一个或多个选项。一般情况下,列表框只显示其中的若干选项,用户可以通过滚动条浏览其他选项。4.组合框(ComboBox)控件组合框用于提供一组选项供用户从中选择。上面介绍的有关列表框的属性、方法,组合框同样具有,并且具有相似的含义和用法。组合框和列表框的主要区别在于:组合框通常只有一个选项是可见的。组合框有两种形式:下拉组合框和下拉列表框。下拉组合框在运行时即可选择选项,也可输入文本,而下拉列表框只能选择选项,不能输入文本。5.微调(Spinner)控件“微调”控件用来控制数值型数据的使用范围,并在规定范围内调整、选择数据。利用“微调”控件框可输入一个数据,或通过(Up、Down)按钮选择一个数据。“微调”控件的主要属性包括:微调框中输入数据的最大值、最小值,以及单击按钮的增减值。7.3.3控制类控件控制类控件主要用于执行某特定操作。1.