第七章 表单设计与应用.docx
- 文档编号:24463392
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:29
- 大小:594.80KB
第七章 表单设计与应用.docx
《第七章 表单设计与应用.docx》由会员分享,可在线阅读,更多相关《第七章 表单设计与应用.docx(29页珍藏版)》请在冰豆网上搜索。
第七章表单设计与应用
第六章表单设计与应用
表单(FORM)是VFP提供的用于建立应用程序界面的最主要的工具之一。
表单可以包含命令按钮、文本框、列表框等各种界面元素,产生标准的窗口对话框。
本章首先简单介绍面向对象的基本概念,然后介绍表单的创建与管理、表单设计器环境及表单常用控件,最后介绍自定义类及应用。
6.1面向对象的概念
1.对象(Object)
客观世界里的任何实体都可以被看作是对象。
对象可以是具体的物,也可以指某些概念。
从编程的角度来看,对象是一种将数据和操作过程结合在一起的数据结构,或者是一种具有属性(数据)和方法(过程和函数)的集合体。
事实上程序中的对象就是对客观世界中对象的一种抽象描述
(1)对象属性:
属性用来表示对象的状态。
(2)对象方法:
对象方法是描述对象行为的过程。
2.类
类是对一类相似对象的性质描述,这些对象具有相同种类的属性以及方法。
6.1.2子类与继承
在面向对象的方法里,继承是指在基于现有的类创建新类时,新类继承了现有类里的方法和属性。
此外,可以为新类添加新的方法和属性。
我们把新类称为现有类的子类,而把现有类称为新类的父类。
一个子类的成员一般包括:
(1)从其父类继承的属性和方法。
(2)由子类自己定义的属性和方法。
VisualFoxPro基类是系统本身内含的,并不存放在某个类库中。
用户可以基于基类生成所需要的对象,也可以扩展基类创建自己的子类
在程序设计中,可以使用CREATEOBJECT函数来直接生成基于某个类的对象。
该函数的格式如下:
CREATEOBJECT(<类名>[,<参数1>,<参数2>,……])
函数基于指定的类生成一个对象,并返回对象的引用
ActiveDoc
活动文档
Label
标签
CheckBox
复选框
Line
线条
Column
(表格)列
Listbox
列表框
Combobox
组合框
Olecontrol
OLE控件
commandButton
命令按钮
Oleboundcontrol
OLE绑定控件
Commandgroup
命令按钮组
optionButton
选项按钮
Container
容器
optionGroup
选项组按钮
Control
控件
Page
页
Cusion
定制
pageFrame
页框
Editbox
编辑框
projectHook
项目挂钩
Form
表单
Separator
分隔符
Formset
表单集
Shape
形状
Grid
表格
Spinner
微调控件
Header
(列)标头
Textbox
文本框
Hyperlink
超级连接
Timer
定时器
Image
图像
toolBar
工具栏
对象属性访问以及对象方法调用的基本格式如下:
<对象引用>.<对象属性>
<对象引用>.<对象方法>[(参数列表)]
【例7-1】基于VisualFoxPro的FORM类生成一个对象,然后访问该对象的一些属性和方法。
Oform=CREATEOBJECT("Form")&生成一个空白表单
Oform.show&&显示表单
Oform.caption=”演示”&&修改表单的标题
?
”这是一个生成对象的演示程序”&&在表单上输出字符串
Oform.release
7.2.2容器与控件
VisualFoxPro中的类一般可分为两种类型:
容器类和控件类。
相应地,可分别生成容器(对象)和控件(对象)。
容器可以被认为是一种特殊的控件,它能包容其他的控件或容器
控件是一个可以以图形化的方式显示出来,并能与用户进行交互的对象,控件类不能包含其它对象
(1)绝对引用:
从最高容器开始逐层向下直到某个对象为止的引用称为绝对引用
(2)相对引用:
从正在为编写事件代码的对象出发,通过逐层向高一层或低一层直到另一对象的引用称为相对引用
使用相对引用常用到表7-2所列属性或关键字
7.2.3事件
事件是一种由系统预先定义而由用户或系统发出的动作。
事件作用于对象,对象识别事件并作出相应反应与方法集可以无限扩展不同,事件集是固定的,用户不能定义新的事件
注:
在VFP环境中不管哪个基类,都包含的事件称为最小事件。
VFP基类的最小事件集
事件
说明
INIT
对象生成时引发
DESTROY
对象从内存中释放时引发
ERROR
当对象或事件代码出现错误时引发
VisualFoxPro中的类一般可分为两种类型:
容器类和控件类。
相应地,可分别生成容器(对象)和控件(对象)。
容器可以被认为是一种特殊的控件,它能包容其他的控件或容器
控件是一个可以以图形化的方式显示出来,并能与用户进行交互的对象,控件类不能包含其它对象
VFP常用容器类控件及其所能包容的对象
容器
能包容的对象
表单集fromset
表单工具栏
表单
任意控件及页框、Container对象、命令按钮组、选项按钮组、表格
表格
列
列
标头和除表单集、表单、工具栏、定时器及其他列之外的任意对象
页框
页
页
任意控件及Container对象、命令按钮组、选项按钮组、表格
命令按钮组
命令按钮
选项按钮组
选项按钮
Container对象
任意控件、命令按钮组、选项按钮组、表格
命令按钮
(1)绝对引用:
从最高容器开始逐层向下直到某个对象为止的引用称为绝对引用
(2)相对引用:
从正在为编写事件代码的对象出发,通过逐层向高一层或低一层直到另一对象的引用称为相对引用
使用相对引用常用到表7-2所列属性或关键字
【例】如果Form1中有一个命令按钮组commandgroup1,该命令按钮组有两个命令按钮:
command1和command2,label1是表单form1上的一个标签控件。
如果要在命令按钮command1的事件(如单击事件)代码中修改该按钮的标题可用下列命令:
this.caption=”确定”
如果要在命令按钮command1的事件代码中修改命令按钮command2的标题可用下列命令:
thisform.Cmand2.caption="取消"
或者
mand2.caption="取消"
但不能写成下列命令:
mand2.caption="取消"
如果要在命令按钮command1的事件代码中修改表单的标题可用下列命令:
This.Parent.parent.Caption=”测试窗口”
或者
thisform.caption=”测试窗口”
属性或关键字
引用
Parent
当前对象的直接容器对象
This
当前对象
ThisForm
当前对象所在的表单
ThisFormSet
当前对象所在的表单集
事件是一种由系统预先定义而由用户或系统发出的动作。
事件作用于对象,对象识别事件并作出相应反应
VisualFoxPro中常用事件有:
与方法集可以无限扩展不同,事件集是固定的,用户不能定义新的事件
Load:
当表单或表单集被加载到内存中时发生的事件。
Unload:
从内存中释放表单或表单集时发生的事件。
Init:
创建对象时发生的事件。
Destroy:
从内存中释放对象时发生的事件。
Click:
鼠标左键单击对象时发生的事件。
Dbclick:
鼠标左键双击对象时发生的事件。
Rightclick:
鼠标右键单击对象时发生的事件。
GotFocus:
对象接收到焦点时发生的事件。
LostFocus:
对象失去焦点时发生的事件。
KeyPress:
当用户按下或释放键时发生的事件。
InteractiveChange:
以交互方式改变对象的值时发生的事件。
ProgrammaticChange:
以编程方式改变对象的值时发生的事件。
7.3建立与运行表单
表单(Form)是VisualFoxPro提供的用于建立应用程序界面的最主要的工具之一。
表单相当于WINDOWS应用程序的窗口
表单可以属于某个项目,也可以游离于任何项目之外,它是一个特殊的磁盘文件,其扩展名为.scx。
在项目管理器中创建的表单自动隶属于该项目。
创建表单一般有两种途径:
使用表单向导创建简易的数据表单;
使用表单设计器创建或修改任何形式的表单。
启动表单设计器有多种方法:
●菜单方法:
若是新建表单,在系统菜单中选择【文件】|【新建】,在文件类型对话框中选择“表单”,单击“新建文件”按钮;若是修改表单,则单击【文件】|【打开】,在打开对话框中选择要修改的表单文件名,单击“打开”按钮。
●命令方法:
在COMMAND窗口输入如下命令:
CREATEFORM<文件名>&创建新的表单
或
MODIFYFORM<文件名>&打开一个已有的表单
●在项目管理器中,先选择文档标签,然后选择表单,单击新建按钮。
若是修改表单,选择要修改的表单,单击“修改”按钮。
7.4表单设计器环境介绍
(1)设计器窗口
“表单设计器”窗口内包含正在设计的表单。
用户可在表单窗口中可视化地添加和修改控件、改变控件布局,表单窗口只能在“表单设计器”窗口内移动。
以新建方式启动表单设计器时,系统将默认为用户创建一个空白表单,如图左侧部分
(2)属性窗口
设计表单的绝大多数工作都是在属性窗口中完成的,因此用户必须熟悉属性窗口的用法。
如果在表单设计器中没有出现属性窗口,可在系统菜单中单击【显示】|【属性】,属性窗口如图所示。
(3)表单控件工具栏
设计表单的主要任务就是利用“表单控件”设计交互式用户界面。
“表单控件”工具栏是表单设计的主要工具。
默认包含21个控件、4个辅助按钮,如图所示
(3)表单控件工具栏
设计表单的主要任务就是利用“表单控件”设计交互式用户界面。
“表单控件”工具栏是表单设计的主要工具。
默认包含21个控件、4个辅助按钮,如图所示
(3)表单控件工具栏
设计表单的主要任务就是利用“表单控件”设计交互式用户界面。
“表单控件”工具栏是表单设计的主要工具。
默认包含21个控件、4个辅助按钮,如图所示
(4)表单设计器工具栏
打开“表单设计器”时,主窗口中会自动出现“表单设计器”工具栏,如图7-10所示
(4)表单设计器工具栏
打开“表单设计器”时,主窗口中会自动出现“表单设计器”工具栏,如图7-10所示
7.4.2控件的操作与布局
1、控件的基本操作
(1)选定控件:
用鼠标单击控件可以选定该控件,被选定的控件四周出现八个控点,如果选择多个控件可以按住SHIFT键的同时,依次单击各个控件。
控件被选中后可以对其进行移动、复制、删除布局等操作,也可以设置TAB键次序。
(2)移动控件:
选定控件,然后用鼠标将控件拖到到需要的位置,如果在拖动鼠标的同时按住CTRL键,可以使鼠标的移动步长减小。
(3)调整控件大小:
选定控件然后拖动控件四周的控点可以改变控件的宽度和高度,也可以按住SHIFT键的同时按方向键也能改变该控件的大小。
2、控件的布局
利用“布局”工具栏按钮可以方便的调整表单窗口中被选控件的相对大小和位置。
3、设置TAB键次序
当表单运行时,用户可以按TAB键选择表单中的控件,使焦点在控件间移动。
控件的TAB次序决定了选择控件的次序。
VFP提供交互方式和列表方式。
方法1:
选择菜单【工具】【选项】
【表单】【TAB次序】选择“交互”
菜单【显示】【TAB次序】
此时,控件左上方出现深蓝色小方块,称为TAB键次序盒,里面显示该控件的TAB键次序号码。
双击某个控件的TAB键次序,该控件将称为TAB键次序中的第一个控件。
按希望的次序依次单击其他控件的TAB键次序盒。
方法2:
选择菜单【工具】【选项】
【表单】【TAB次序】选择“列表”
菜单【显示】【TAB次序】
通过拖动控件左侧的移动按钮移动控件,改变控件
的TAB键次序。
7.4.3数据环境
1.打开数据环境设计器
表单设计器环境下,单击“表单设计器”工具栏上的“数据环境”按钮,或选择【显示】|【数据环境】命令,即可打开“数据环境设计器”窗口,此时,系统菜单栏上将出现“数据环境”菜单。
2.数据环境的常用属性
常用的两个数据环境属性是AutoOpenTables和AutoCloseTables
属性名
含义
默认值
AutoOpenTables
运行或打开表单时,是否打开数据环境中的表和视图
.T.
AutoCloseTables
运行或打开表单时,是否关闭数据环境中的表和视图
.T.
3.打开数据环境设计器
在表单设计器环境下,单击“表单设计器”工具栏上的“数据环境”按钮,或选择【显示】|【数据环境】命令,即可打开“数据环境设计器”窗口,也可以打开表单单击鼠标右键快捷菜单【数据环境】。
3.向数据环境添加表或视图在数据环境设计器环境下,按下列方法向数据环境添加表或视图:
在系统菜单中选择【数据环境】|【添加】命令,或右键单击“数据环境设计器窗口”,然后在弹出的快捷菜单中选择【添加】命令,打开“添加表或视图”对话框,如图所示。
如果数据环境原来是空的,那么在打开数据环境设计器时,该对话框就会自动出现。
4.从数据环境中移去表或视图
在“数据环境设计器”窗口中,选择要移去的表或视图,在系统菜单中选择【数据环境】|【移去】命令。
也可以用鼠标右键单击要移去的表或视图,然后在弹出的快捷菜单中选择【移去】命令。
5.在数据环境中设置关系
设置关系的方法为:
将主表的某个字段(作为关联表达式)拖曳到子表的相匹配的索引标记上既可。
如果子表上没有与主表字段相匹配的索引,也可以将主表字段拖动到子表的某个字段上,这时应根据系统提示确认创建索引
常用的关系属性有:
●RelationalExpr:
用于指定基于主表的关联表达式。
●ParentAlias:
用于指明主表的别名。
●ChildAlias:
用于指明子表的别名。
●ChildOrder:
用于指定与关联表达式相匹配的索引。
●OneToMany:
用于指明关系是否为一对多关系,该属性默认为“.F.”,如果关系为“一对多关系”,该属性一定要设置为“.T.”。
7.向表单添加字段
表单控件可以显示或修改表中的数据,要将表中的数据在文本框中显示,有两种方法可以实现。
方法1:
利用“表单控件”工具栏将一个文本框控件放置在表单里,然后通过该文本框的controsourec属性将表中的某一字段进行绑定。
选择“文本框”单击右键“属性”在属性面板中选择controlSource并输入字段名但必须跟表面如cj11.学号注:
所要添加的字段所对应的表必须打开。
方法2:
从数据环境设计器中直接将字段拖入表单。
在表单设计器中单击鼠标右键选择“数据环境”弹出数据环境设计器,单击鼠标右键添加表,选择表中的某一字段直接拖放到表单的合适位置。
默认情况下,如果拖动的字段是逻辑型字段则产生复选框控件,如果拖动的是备注型字段,将产生编辑框控件;如果拖动的是表或视图,将产生表格控件。
7.5表单属性和方法
这里介绍表单的属性和方法也是表单的重点。
7.5.1常用的表单属性
表单的属性大约有100个,但是绝大多数很少用到。
表列出了常用的一些表单属性。
属性
描述
默认值
AlwaysOnTop
指定表单是否位于其他打开窗口之上
AutoCenter
指定表单初始化时是否自动在VFP主窗口内居中显示
BackColor
指明表单窗口的颜色
BorderStyle
指定表单边框的风格
Caption
指明显示于表单标题栏上的文本
Closeble
指明表单是否可以通过单击关闭按钮或双击菜单控制菜单框来关闭窗口
Datasession
指定表单里的表是在缺省的全局工作区打开(设置为1)还是在表单自己的私有工作区打开(设置值为2)
Maxbutton
确定表单是否有最大化按钮
Minbutton
确定表单是否有最小化按钮
Movable
确定表单是否可以移动
Scrollbars
指定表单的滚动条类型,可取值为0(无)1(水平)2(垂直)3(既水平又垂直)
WindowState
指明表单的状态:
0(正常)1(最小化)2(最大化)
WindowType
指定表单是模式表单(设置值为1)还是非模式表单(设置值为0)。
在一个应用程序中,如果运行了一个模式表单,那么在关闭该表单之前不能访问应用程序中的其他界面元素。
方法:
方法(程序)是对象能够执行的一个操作,在VFP中系统提供了一些方法,其程序是一些默认过程。
在全国计算机等级考试主要涉及一下方法
方法
描述
默认值
Show
显示表单
.T.
Hide
隐藏表单
.F.
Release
将表单从内存释放(清除)
默认过程
Refresh
重新绘制表单或控件,并刷新它的值
默认过程
setfocus
让对象获取焦点,使其成为活动对象
默认过程
7.6添加新的属性和方法
1、向表单添加新的属性的步骤如下:
(1)使表单处于编辑状态(打开)选择菜单【表单】|【新建属性】打开“新建属性”对话框如图所示
(2)在“名称”对话框中输入属性名称点击添加。
2、向表单添加新的方法的步骤如下:
(1)使表单处于编辑状态(打开)选择菜单【表单】|【新建方法程序】打开“新建方法程序”对话框如图所示
(2)在“名称”对话框中输入方法名称点击添加。
3编辑方法或事件代码
(1)选择菜单【显示】|【代码】命令,打开代码编辑器,如图所示:
(2)从“对象”对话框中方法或事件所属的对象(表单或表单控件)。
(3)从“过程”对话框中指定需要编辑的方法或事件。
(4)在编辑区输入或修改方法或事件代码。
7.6常用表单控件
表单作为容器、作为应用程序的用户界面,一般会包含一些控件,以实现特定的交互功能。
要很好的使用和设计控件,需要掌握一些控件的属性、方法和事件。
下面介绍一些常用控件的属性方法和事件以及使用方法。
常用控件的公共属性
name:
控件的名称,它是代码中访问控件的标识(表单或表单集除外)。
Fontname:
字体名。
Fontbold:
字体样式为粗体。
Fontsize:
字体大小。
Fontitalic:
字体样式为斜体。
Forecolor:
前景色。
Height:
控件的高度
Width:
控件的宽度。
控件的高度和控件的宽度,也可在设计时通过鼠标拖曳进行可视化调整。
Visible:
控件是否显示。
Enable:
控件运行时是否有效。
如果为.T.,则表示控件有效,否则运行时控件不可使用。
7.6.1标签
1.标签控件的功能
标签主要用于显示固定的文本信息。
2.标签控件常用属性
caption:
指定标签的显示文本。
可以在设计时设置,也可以在程序运时设置或修改。
autosise:
autosise如果为真,标签在表单中的大小由caption属性中的文本长度决定,否则其大小由WIDTH和HEIGHT属性决定。
forecolor:
设置标题的字体颜色。
backstyle:
设置标签的背景是否透明,0透明,1不透明,默认为不透明。
name:
标签对象的名称,是程序中访问标签对象的标识。
7.6.2文本框(TextBox)控件
1.文本框控件的功能:
(1)用于显示或接收单行文本信息(不设置ControlSource属性),默认输入类型为字符型,最大长度为256个字符。
(2)用于显示或编辑对应变量或字段的值(设置ControlSource属性为已有变量或字段名)。
2.文本框控件常用属性
ControlSource:
设置文本框的数据来源。
一般情况下,可以利用该属性为文本框指定一个字段或内存变量。
Value:
保存文本框的当前内容,如果没有为ControlSource属性指定数据源,可以通过该属性访问文本框的内容。
它的初值决定文本框中值的类型。
如果为ControlSource属性指定了数据源,该属性值与ControlSource属性指定的变量或字段的值相同。
PassWordChar:
设置输入口令时显示的字符。
Readonly:
确定文本框是否为只读,为“.T.”时,文本框的值不可修改。
7.6.3命令按钮(CommandButton)控件
命令按钮典型地用来启动某个事件代码、完成特定功能,如关闭表单、移动记录指针、打印报表等。
2.命令按钮控件常用属性
Default:
命令按钮的Default属性默认值为.F.,如果该属性设置为.T.,在该按钮所在的表单激活的情况下,按Enter,可以激活该按钮,并执行该按钮的Click事件代码。
一个表单只能有一个按钮的Default属性为真。
Cancel:
命令按钮的Cancel属性默认值为.F.,如果设置为.T.,在该按钮所在的表单激活的情况下,按Esc键可以激活该按钮,并执行该按钮的Click事件代码。
一个表单只能有一个按钮的Cancel属性为真。
Caption:
设置按钮的标题。
Enable:
确定按钮是否有效,如果按钮的属性Enable为.F.,单击该按钮不会引发该按钮的单击事件。
对命令按钮的使用最重要的是编写Click事件代码。
【例】创建一个如图7-14所示的登录窗口,并将表单保存为FORM2。
在确定按钮的单击事件中输入如下代码:
ifthisform.text1.value="user1“andthisform.text2.value="123456"
doformmainform
form2.release
else
messagebox("密码或用户名错误",0,"提示")
endif
在取消按钮的单击事件中输入如下代码:
nAnswer=messagebox("你决定退出系统吗?
",4,"提示")
DOCASE
CASEnAnswer=6
thisform.release
CASEnAnswer=7
messagebox("请输入用户名和密码",0,"提示")
ENDCASE
7.6.4命令按钮组(CommandGroup)控件
命令按钮组是包含一组命令按钮的容器控件,用户可以单个或作为一组来操作其中的按钮。
2.命令按钮组常用属性
Buttoncount:
命令按钮组中命令按钮的数目。
Value:
默认情况下,命令按钮组中的各个按钮被自动赋予了一个编号,如1,2,3,等,当运行表单时,一旦用户单击某个按钮,则Value将保存该按钮的编号,于是在程序中通过检测Value的值,就可以为相应的按钮编写特定的程序代码。
如果在设计时,给Value赋予一个字符型数据,当运行表单时,一旦用户单击某个按钮,则Value将保存该按钮的Caption属性值。
Buttons:
用于存取命令按钮组中每个命令按钮的数组,代码中可以通过该数组访问命令按钮组中的各个按钮.
7.5.6编辑框(EditBox)控件
1.编辑框控件的功能
用于显示或编辑多行文本信息。
编辑框实际上是一个完整的简单字处理器,在编辑框中能够选择、剪切、粘贴以及复制正文,可以实现自动换行,能够有自
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七章 表单设计与应用 第七 表单 设计 应用