VisualFoxPro程序设计幻灯片_第1页
VisualFoxPro程序设计幻灯片_第2页
VisualFoxPro程序设计幻灯片_第3页
VisualFoxPro程序设计幻灯片_第4页
VisualFoxPro程序设计幻灯片_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

VisualFoxPro程序设计教程第6章表单

表单是VFP创建应用程序与应用程序界面的重要途径之一,它将可视化操作与面向对象的程序设计思想有机结合在一起。表单设计器是设计表单的工具,它提供了设计应用程序界面的各种控件、相应属性、事件。它运用了面向对象的程序设计和事件驱动机制,使开发者能直观,方便,快捷的完成应用程序的设计与界面设计的开发工作。6.1面向对象程序设计 面向对象的程序设计思想是将事物的共性,本质内容抽象出来封装成类。VFP又将软件开发常用的功能抽象封装成标准类,开发者用类定义所需对象,通过对对象的属性设置,对事件的编程完成程序设计,VFP还提供了自定义类及面向对象的其他完整机制与功能。6.1.1对象与属性1、对象 对象是类的实例化,是客观存在的具体事物,VFP标准类中有表单类,控件类等。具体的一个表单就是表单对象。2、属性 属性是描述对象的静态特征。如表单的颜色,标题,名称等。常用的表单属性如表6.1所示。表6.1常用表单属性属性用途默认值AutoCenter初始化时是否让表单自动在vfp窗口中居中.F.AlwaysOnTop表单是否总是处于其他窗口之上.F.BackColor决定表单窗口的颜色255,255,255BorderStyle指定表单边框风格:0-无边界,1-单线框,2-对话框,3-系统(可调)3Caption指定表单显示的标题文本Form1Closable是否可以通过单击关闭按钮或双击控制菜单框来关闭表单.T.DataSession指定表单里的表是在缺省的全局能访问的工作区打开(设置为1),还是在表单自己的私有工作区打开(设置为2)1MaxButton表单是否有最大化按钮.T.MinButton表单是否有最小化按钮.T.Movable表单是否能移动.T.Name指定表单名Form1Scrollbar指定滚动条类型:0-无,1-水平,2-垂直,3-水平垂直0TitleBar控制表单是否有标题栏:0-无,1-有1WindowState表单状态:0-正常,1-最小化,2-最大化0WindowType指定表单是模式表单(设置为1),或非模式表单(设置为0)06.1.2事件与方法

1、事件:描述对象的动态行为,它是由系统预先定义好的,由用户或系统发出动作,用对象来识别,用户可编程对此进行响应。表6.2所示是表单设计器提供的常用事件。事件触发事件触发Load创建对象前RightClick用右键单击对象时Init创建对象时KeyPress按下并释放键盘时Activate对象激活时LostFocus对象失去焦点时GetFocus对象获得焦点时Unload释放对象时Click用左键单击对象时Destry释放对象时在Unload前触发DblClick用左键双击对象时Error对象方法或文件代码产生错误时MouseUp释放鼠标键时Resize调整对象大小时MouseDown按鼠标键时MouseMove在对象上移动鼠标时2、方法:与对象相关的过程,是对象能执行的操作。方法分为两种:一种为内部方法,另一种为用户自定义方法。内部方法是VFP预先定义好的方法,供用户使用或修改后使用。表6.3给出常用的方法。表6.3常用方法方法含义Release将表单从内存中释放Refresh刷新表单或控件Show显示表单Hide隐藏表单Cls清除表单内容SetFocus使控件获得焦点3、对象的引用规则(1)引用形式对象对属性、文件、方法的引用是用点“.”运算符。形式:对象.属性|方法|事件说明:对象若有包含与被包含关系,可以从外层用“.”引用到内层对象。如在后面要介绍的命令按钮Command1,对它的Caption属性的引用可以写成:ThisForm.Command1.Caption=“确定”,这个意思是设置当前表单中的Command1按钮的Caption属性为确定。ThisForm代表当前表单。(2)对象在引用中常使用的关键字如表6.4所示。关键字含义例子This当前对象This.CaptionThisForm当前表单ThisForm.CaptionThisFormSet当前表单集ThisFormSet.Form1.Command1.caption(3)容器类 在表单中有包含与被包含关系的对象,能包含其他对象的对象称为容器对象,容器对象的类称为容器类,在VFP中常用的容器类如下表所示。容器包含的对象表单集表单,工具栏表单任意控件,页框,Container对象,命令组,选项组,表格等对象表格列列标头和除表单集、表单、工具栏、定时器及其他列之外的任意对象页框页命令组命令按钮选项组选项按钮Container任意控件及页框,命令组,选项组,表格等对象页任意空间及其Container对象,命令组,选项组,表格等对象6.2用表单向导设计表单

表单向导是通过与用户人机交互向导,完成对表进行浏览,编辑等基本操作界面的自动生成。表单向导为单表建立的表单称单表表单,为多表建立的表单称多表表单。6.2.1建立单表表单

6.2.2建立多表表单1、建立表单2、执行表单3、编辑表单6.3表单设计器 用表单向导设计表单,固然简单方便又不需要编写代码,但表单向导设计出的表单是有一定的固定模式,功能也有限。如果想设计无固定模式,多功能的表单,表单向导是无法实现的。VFP提供了表单设计器这个面向对象编程的可视化工具,用以满足开发者设计风格各异,功能齐全的表单。6.3.1表单设计器的环境1、打开表单设计器(1)用界面方式打开(2)用命令方式打开格式:MODIFYFORM[<表单名>|?]功能:打开表单设计器,创建或修改由表单名指定的表单。说明:无选项或选?,将出现打开对话框,选一个表单或输入一个表单名,输入的表单名如果不存在则创建新的表单,如果存在则对原表单进行修改。2、表单设计器环境(1)表单设计器工具栏

1)设置Tab键次序

2)数据环境

3)属性窗口

4)代码窗口

5)表单控件工具栏

6)调色板工具栏

7)布局工具栏

8)表单生成器

9)自动格式例6.1设计表单。当单击表单上的文字“欢迎新同学”时文字变为“学习要勤奋”,再双击就又恢复成以前的文字。单击退出按钮释放表单。

6.3.2控件的操作与布局1、控件操作(1)在表单中放置控件(2)控件在表单中的复制与粘贴(3)调整大小(4)删除控件(5)在表单中放置多个同类的控件2、控件的布局6.3.3数据环境 数据环境要在表单打开的情况下使用,当表单关闭或释放时它就关闭。

1、打开数据环境设计器

2、向数据环境设计器中添加表或视图

3、数据环境中关系的设置

4、从数据环境设计器中移去表或视图

5、向表单中添加字段例6.2设计一个表单,它可以对表进行浏览、编辑、并可以释放表单(即退出),界面如下图所示6.3.4设置属性与编辑代码1、设置属性(1)在属性窗口的对象下拉列表框中选要设置属性的对象(2)在属性列表框中找到要设置的属性并选中该属性(3)在属性设置框中输入具体设置的属性值1、编辑代码(1)打开代码窗口的方法

1)单击表单设计器工具栏中的代码窗口按钮

2)双击表单工作区任意位置(2)在对象下拉列表框中选要编辑代码的对象(3)在过程下拉列表框中选要编辑的代码对象的事件或方法(4)在代码编辑区中输入相应的代码(5)关闭代码编辑窗口,有两种方法;

1)单击表单设计器工具栏中的代码窗口

2)单击代码窗口中的关闭按钮6.3.5表单的修改与运行1、表单的修改(1)打开表单设计器(2)对表单进行修改

1)若对表单中已有控件对象修改,方法与设置属性和编辑代码相同。

2)如果在表单中创建新的控件对象,可在表单控件工具栏中选中控件放到表单中,然后对该对象进行属性设置和代码编辑。

3)若要删除表单中的控件,选中该控件按Del键。2、表单的运行 格式:DOFORM<表单名>

功能:执行由表单名指定的表单。6.4常用表单控件

6.4.1标签控件

标签控件属于输出类控件,用于显示文本。它的常用属性如表6.6所示。属性用途默认值Caption标题用于显示标题文本Label1Autosize是否随标题文本大小调整.F.Alignment指定标题文本控件中显示的对齐方式:0左对齐,1右对齐,2中央对齐0BorderStyle标签是否透明:0为透明,1为不透明1ForeColor设置标题文本颜色,0,0,0为黑色,255,255,255为白色0,0,0WordWrap标题文本是否换行,.t.换行,.f.不换行.F.FontName设置标题文本字体类型宋体FontSize标题文本字体大小9例6.3计算1+2+3…+100的和6.4.2命令按钮 命令按钮用来触发事件,完成特定的功能,常用属性如表6.7所示。属性用途默认值Caption标题Command1Enabled按钮是否有效:.t.有效,.f.无效.T.Default是否为默认按钮,.t.是,.f.不是.T.Cancel是否是取消按钮,.t.是,.f.不是.F.Visual按钮是否可见,.t.可见,.f.不可见.T.Picture设置图形文件,使按钮为图形按钮(无)例6.4计算10!6.4.3命令组1、常用属性命令组是容器控件,常用属性如图6.8所示。2、命令组生成器3、编辑命令组属性用途默认值ButtonCount设置命令组中命令按钮的数目2Buttons用于存取命令组中各按钮的数组0Value指定命令当前的状态,当属性值为数值型时,若为N表示第N个按钮被选中。当属性值为字符型时,若为字符型值C,表示命令组中Caption值为C的命令按钮被选中1例6.5将6.2题用命令组做6.4.4文本框控件

文本框控件是基本控件,可以输入,编辑数据。它可以处理除备份字段类型的数据,一般包含一行数据,在接受字符型数据时,最多255个字符。

表6.9文本框常用属性属性用途默认值ControlSource指定文本框的数据源,数据源可为字段或内存变量(无)Value指定文本框的值(无)PasswordChar指定文本框的占位符,即当向文本框输入数据时不显示真实的数据而显示占位符(无)InputMask用来指定数据的输入格式和显示方式,属性值为一个字符串,字符串由掩码组成(无)例6.6求n!6.4.5编辑文本框 编辑框可用于输入、显示、编辑数据。它只能编辑字符型数据,可编辑长的字符型字段数据,备注字段数据,字符型内存变量数据,它可以编辑单行与多行数据。它最多能接受2147483647个字符。它的常用属性如表6.10所示。属性用途默认值Value用来指定控件的状态(无)Readonly是否为只读,.T.为只读,.F.可编辑.F.Scrollbar是否有滚动条,0无,2垂直滚动条2Selstart返回用户在编辑框中所选文本的起始位置,取值范围:0~编辑框中字符总数0Sellength返回用户在文本输入区中选定的字符数目,或指定要选定的数目。0Seltext返回选定的文本,若无选定文本,返回空串0Hideselection使用焦点时是否隐藏选定标记,.T.隐藏,.F.不隐藏.T.例6.7设计一个表单,完成下图所示功能例6.8表单如图6.35所示6.4.6复选框控件 用于在软件中提供给用户一种或多种选择,以便满足用户的要求。复选框是一个逻辑框,它只有两种状态值:一种为.T.,表示选上;一种为.F.,表示没选上。属性用途默认值Caption方框右侧的文本Checkbox1Value值0或.F.表示未选中,1表示被选中,2或null表示不确定0或.F.Controlsource数据源(无)例6.9设计一个程序界面如下图所示,对人的能力测试。若选选1、3项,就显示“您是一个全面发展的人!”,否则,显示“您要继续努力”例6.10统计学生人数6.4.7选项组控件 它是一个容器控件,包含多个选项按钮,用于在多种功能或多种条件下,用户只能选择其中的一个功能或条件。选项组控件有生成器,通过生成器对各按钮属性设置。常用属性如下表所示。Buttoncount指定选项组中按钮数目2Value若值为数值型n,表示第n个按钮被选中,若为字符型c,表示Caption属性值为c的按钮被选中1Controlsource指定数据源(无)Buttons存取选项组中每个按钮的数组0例6.11统计学生成绩表中课程的平均分

例6.12完成如下图所示的表单,在text1中输入x,能选择计算出对应y值6.4.8列表框控件 列表框是用于显示项目的列表,用户可以在列表框中选择一项或多项。列表框也有生成器。打开方法选中控件的快捷菜单中——生成器即可。

1、列表框常用属性如下表所示:属性用途默认值Value返回列表框中被选择的项目(无)ListCount指定列表框中项的数组1ColumnCount指定列数0ControlSource指定数据源(无)RowSourceType0:(无)在程序中用additem向列表框中添加项目1:值,用手工指定项目,如rowsource=“aaa,bbb,ccc”2:别名,将表中字段作为项目,由columncount指定字段数目3:SQL语句,将select查询结果作为项目4:查询,将查询结果作为项目5:数组,将数组内容作为项目6:字段,将表中字段作为项目7:文件,将文件作为项目8:结构,将表结构作为项目9:弹出式菜单,将弹出式菜单作为项目02、常用方法方法用途Addlistitem在rowsourcetype为0时为列表框添加项目,形式addlistitem(项目值,行,列)Removeitem当rowsourcetype为0时,从列表框中删除一项Clear清除表中各项Requery当rowsource值改变时,更新列表例6.13设计表单,单击“计算”,可计算出I+I*I+I*I*I的值,I取值为1~100例6.14在list1中显示学生表的姓名字段,当选定一个学生姓名时右侧将显示该学生信息6.4.9组合框 组合框是一种列表框,有两种形式:一种是下拉式列表框与列表框一样,另一种为下拉式组合框。下拉式组合框可以在列表框中选项,也可以输入一个值。组合框所常用的属性与方法与列表框基本相同,但组合框没有多选择属性,即没有MultiSelect属性。它有一个重要属性就是style,用途如下表所示:属性值用途0下拉组合框,可在列表中选项,也可输入,是默认值1下拉式列表框例6.15设计一个用户登录界面6.4.10表格 表格是一种容器对象,它是按行列显示数据,外观与浏览窗口相似。常用属性如下表所示。属性用途默认值ColumnCount指定表格列数-1LinkMaster指定表格中显示子表的父表名(无)RecordSourceType0:表。数据来源于由RecordSource指定的表,该表能自动打开1:别名。数据来源于已经打开的表,由RecordSource指定该表别名3:查询。数据来源于查询,由RecordSource指定一个查询文件4:SQL语句。数据来源于SQL语句,由RecordSource指定一条SQL语句1例6.16在表格中选一行时左侧显示该行记录的全部信息6.4.11页框

页框是一种容器对象,页框中包含页面即页,而页中又可以包含其它控件。其实页框就是选项卡对话框。页框对表单的有限空间进行了扩展。常用属性如下表。属性用途默认值PageCount指定页框中包含页的数量,取值范围:0~992Pages用于存取页对象的数组0Tabs指定页框中是否显示页标签框,.T.为有页标签栏,.F.为没有.T.TabStretch当页标题文本很长时,确定是否为多行显示,0为多行显示,1为单行显示多余的截去1ActivePage用来返回或指定激活页号,如PageFrame1.ActivePage=3将第3页激活,如x=PageFrame1.activePage返回激活页号赋给x1TabStyle页框中页是否调整。0调整每个页宽度来容纳整个标题,1不调整每个页宽度来容纳页标题0例6.17按下图所示设计表单6.4.12计时器与微调器1、计时器 计时器是用于在程序中按一定时间间隔触发某一事件,它的时间是由系统时钟控制的,它在执行时是不可见的。(1)常用属性属性用途默认值Interval设置计时器Timers事件之间的时间间隔,以ms为单位0Enabled计时器是否可用,.T.为可用,.F.不可用.T.(2)常用事件

Timer事件为计时器常用事件,当经过由Interval属性指定的毫秒数时触发,一般是在此事件中编制周期性的动作执行程序。例6.18表单如下图所示,要求使用Timer控件,Interval设为1000,“欢迎使用”在1000ms间与系统时间交换显示例6.19在例6.18的基础上让文字由右向左移动2、微调(spinner) 该控件用于实现用户在一定范围内输入数值。用户通过单击微调的上下箭头改变数值,也可以直接在微调中输入数值。属性用途默认值Value当前值0KeyBoardHighValue允许由键盘输入的最大值2147483647KeyBoardLowValue允许由键盘输入的最小值-2147483647SpinnerHightValue单击箭头按钮的最大值2147483647SpinnerLowValue单击箭头按钮的最小值-2147483647Increment指定微调的增减步长1.00ControlSource指定绑定数据源,形式:对象.ControlSource=cname,cname为变量或字段(无)例6.20用微调输入x值,计算x*x6.4.13图像、形状、线条1、图像(Image) 用于显示图片。常用属性如下图。属性用途默认值Picture要显示的图片所在的路径(无)BorderStyle是否有边框,0为无,1为固定单线0BackStyle图像的背景是否透明,0为透明,1为不透明1Stretch0—剪裁,超出控件范围部分不显示。1—等比填充,保证图像原有比例,在控件内尽可能大的显示图像。2—变比填充,将图像调整到控件的高度,宽度相匹配0例6.21计算两数之积,用图像修饰表单例6.22交替显示两张图片2、形状(shape) 该控件用来画圆、矩形、椭圆。常用属性如下表。属性用途默认值Curature指定曲率,0为矩形,99为圆或椭圆,(0,99)为圆角矩形0Width指定矩形宽度Height指定矩形高度FillStyle指定填充方式:0为实线1为透明,即无填充2为水平线3为垂直线4为向上对角线5为向下对角线6为十字线7为对角交叉线1例6.23表单如下图所示。Spinner1用于调整形状,曲率取值0-99,步长为10。Spinner2用于填充方式,取值0-7,步长为1。Spinner3用于调红色,取值0-255,Spinner4用于调绿色,取值0-255,Spinner5用于调蓝色,取值0-2553、线条(Line) 该控件画直线。常用属性如下表。属性用途默认值Height指定线条对角线的高度。若为0,水平线Width指定线条对角线的宽度。若为0,垂直线LineSlant指定线条倾斜方向例6.24设计表单如下图所示,Spinner1与Spinner2的取值范围为0-250,步长为106.4.14容器(container) 容器控件是可以包含其它对象的控件。它的封装性好,使用它可以将一些对象组合在一起,统一管理。属性用途默认值BackStyle设置容器是否透明。1不透明,0透明1SpecialEffect设置容器样式。0-凸起,1-凹下,2-平面2例6.25用容器控件实现计算两数之和6.5自定义属性与方法

VFP允许用户定义表单或表单集的属性和方法。自定义属性和方法属于整个表单对象。因此在表单中始终是有效的。用户自定义属性相当于变量,方法相当于过程。自定义属性与方法定义后与控件的其它属性和方法一样使用。6.5.1自定义属性 自定义属性分为一般属性和数组属性。1、自定义属性

(1)建立自定义属性

(2)编辑自定义属性例6.26设计一个表单如下图所示,要求每隔1000ms欢迎字幕和系统时间交替变化,单击变化的文本将结束执行2、自定义数组属性 定义数组属性的方法与定义一般属性是一样的,只是在新建属性对话框中在名称文本框内输入名时要将数组的最大下标输进去,例如输入a(10)。自定义数组属性可为二维数组。数组属性默认值为.F.,且为只读。要想修改它的类型和值,可通过程序来修改。编辑自定义数组属性与编辑自定义属性方法一样。例6.27用自定义数组属性显示1-10之间的平方6.5.2自定义方法 自定义方法可以传递参数,可以有返回值,因此它集中了前面学的子程序、函数、过程的优点。

1、自定义方法的添加

2、参数的传递命令 格式: PARAMETERS<形参表>| LPATAMETERS<形参表>

功能:接收调用者传来的数据。 说明:(1)PARAMETERS与LPATAMETERS区别在于PARAMETERS接收的参数变量属于PRIVATE性质,而LPATAMETERS接收参数变量属于LOCAL性质。(2)若自定义方法需要传递参数可将此命令写入方法的第一行,若不需要传递参数,此命令就不可写了。3、调用方法形式

对象.方法名([实参表])

说明:实参表中实参可为数据、变量、变量的地址,变量的地址形式为@变量名。4、方法的返回命令格式:RETURN[<表达式>]

功能:为自定义方法返回表达式指定的值 说明:1.若无表达式。RETURN返回.T.。2.若自定义方法不需要返回值,可不写返回命令。例6.28计算1+2+…+n的值

例6.29计算n!6.6表单集与多重表单 在前面的学习中程序界面一次只出现一个,但软件开发中经常遇到同时使用多个界面的问题。对这类问题,VFP使用表单集与多重表单的功能来解决。当多个表单之间存在着频繁的信息交流时VFP用表单集来处理。当多个表单之间存在调用与被调用关系时VFP用多重表单来处理。6.6.1表单集 表单集是一个容器,它被创建后并不可见,表单集一旦被创建,它内部自动包含一个表单。表单集的默认名为FormSet1,表单集中第一个表单默认名为Form1。

在表单集中表单的地位是平等的,没有主从关系。表单集对它内部中的表单实行统一管理与操作。在表单集中可以同时显示或隐藏表单,并能以可视化的模式调整多个表单的相对位置,可在一个表单中方便地操纵另一个表单及其中的对象,在表单集中的表单都可以有独立的数据环境。从而可以同时控制在多个表单中的记录指针。这是指当在一个表单中父表的记录指针改变时,在其他表单中的与其相关的子表的记录指针随着相应地改变和显示。例6.30

温馨提示

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

评论

0/150

提交评论