第七章 表单设计
7.1 基本概念
1.名词解释
表单:
即用户与计算机进行交流的一种屏幕界面,用于数据的显示、输入、修改。该界面可以自行设计和定义,是一种容器类,可包括多个控件(或称对象)。
表单集:
可包含一张或多张表单的容器。
数据环境:
在打开或修改一个表单或报表时需要打开的全部表、视图和关系。它以窗口形式(类似于数据库设计器)反映出与表单有关的表、视图、表之间关系等内容。可以用数据环境设计器来创建和修改表单的数据环境。
2.表单设计界面[图例]
主要包括: 表单向导、 表单设计器、 表单设计器工具栏、 表单控件工具栏、 属性窗口
3.表单设计中常用的属性、事件与方法介绍
属性、事件、方法 |
说明 |
默认值 |
AlwaysOnTop属性 |
控制表单是否总是处在其他打开窗口之上 |
假(.F.) |
AutoCenter属性 |
控制表单初始化时是否让表单自动地在Visual FoxPro主窗口中居中 |
假(.F.) |
BackColor属性 |
决定表单窗口的颜色 |
255,255,255 |
BorderStyle属性 |
决定表单是否有边框,若有边框,是单线边框、双线边框,还是系统边框。如果BorderStyle为3(系统),用户可重新改变表单大小 |
3 |
Caption属性 |
决定表单标题栏显示的文本 |
Forml |
Closable属性 |
控制用户是否能通过双击“关闭”框来关闭表单 |
真(.T.) |
MaxButton属性 |
控制表单是否具有最大化按钮 |
真(.T.) |
MinButton属性 |
控制表单是否具有最小化按钮 |
真(.T.) |
Movable属性 |
控制表单是否能移动到屏幕的新位置 |
真(.T.) |
WindowState属性 |
控制表单是最小化、最大化还是正常状态 |
0 正常 |
WindowType属性 |
控制表单是非模式表单(默认)还是模式表单。如果表单是模式表单,用户在访问应用程序用户界面中任何其他单元前必须关闭该表单 |
0 非模式 |
Activate事件 |
当激活表单时发生 |
|
Click事件 |
在控制上单击鼠标左键时发生 |
|
DblClick事件 |
在控制上双击鼠标左键时发生 |
|
Destroy事件 |
当释放一个对象的实例时发生 |
|
Init事件 |
在创建表单对象时发生 |
|
Error事件 |
当某方法(过程)在运行出错时发生 |
|
KeyPress事件 |
当按下并释放某个键时发生 |
|
Load事件 |
在创建表单对象前发生 |
|
Unload事件 |
当对象释放时发生 |
|
RightClick事件 |
在单击鼠标右键时发生 |
|
AddObject方法 |
运行时,在容器对象中添加对象 |
|
Move方法 |
移动一个对象 |
|
Refresh方法 |
重画表单或控制,并刷新所有值 |
|
Release方法 |
从内存中释放表单 |
|
Show方法 |
显示一张表单 |
|
7.2 创建表单
可以用表单向导、表单设计器、表单生成器、编程四种方法创建表单。
1. 利用向导创建表单
(1) 创建单张表的表单:
打开文件菜单 → 新建 → 表单 → 向导 [或从常用工具栏上选择表单(F)] → 选择表单向导 → 选取字段 → 选择样式 → 选择排序记录 → 选择保存方式 → 给出合适的文件名和保存位置。
(2) 创建多个相关表的表单:
打开文件菜单 → 新建 → 表单 → 向导 [或从常用工具栏上选择表单(F)] → 选择一对多表单向导 → 选取父表字段 → 选取子表字段 → 选定关系 → 选择样式 → 选择排序记录 → 选择保存方式 → 给出合适的文件名和保存位置。
注意:用向导创建的表单一般含有一组标准的命令按钮。
表单保存后系统会产生两个文件:
表单文件:扩展名为 .SCX
表单备注:扩展名为.SCT
2. 利用表单生成器创建表单
文件菜单 → 新建 → 表单 → 新文件 → 表单菜单 → 快速表单命令 → 选择字段和样式并确定之。
注意:用生成器创建的表单不能直接产生一些命令按钮。
3. 利用设计器创建表单
文件菜单 → 新建 → 表单 → 新文件 → 在表单设计器中,用表单设计器和表单控件工具条上的按钮创建所需的表单 → 保存表单 → 给出文件名和保存位置。
注意:用设计器创建的表单,用户必须为控件设置有关的属性及事件处理代码。
4. 利用编程的方法创建表单
按照面向对象设计的方式,先可视化地利用类来创建表单,再将类代码复制到程序窗口,适当添加部分设置系统环境的代码,以程序文件的形式保存。
5. 运行表单
从常用工具栏上单击运行按钮(!)或从表单菜单中选择 运行表单 命令或从命令窗口中输入: DO FORM 表单文件名。
7.3 向表单中添加控件
1. 常用控件的作用
标 签: 用于保存不希望用户改动的文本,常用来为添加的控件写标。
文本框: 用于输入或编辑表中的非备注型字段,框中一般是单行的文本。
编辑框: 用于输入或编辑长字段或备注字段,框中可以有多行并有垂直滚动条。
列表框: 用于显示一组预定的、供用户选择的值,可以是一列或多列,可通过滚动条浏览列表信息。
组合框: 一种下拉式的列表框,可以从中选择一项或人工输入一个值,兼有列表框和文本框的功能
复选框: 用来显示多个选项,可以选择其中的一项或多项。
表 格: 一个按浏览窗口样式显示数据的容器,常用来显示一多关系中的子表。
页 框:一种用于创建选项卡式对话框的容器类,一个页框可以包含多个页面,但每次只能有一个活动页面。
微调控制:用于接受给定范围内的数据输入。
命令按钮:常用来启动一个事件。
命令按钮组:用来把相关的命令按钮编成组。
选项按钮组:用于显示多个选项,只允许从中选择一项。
计时器: 可以在指定时间或按照设定的间隔运行进程,此控件在运行时不可见。
2. 用生成器向表单中添加控件:
打开所需表单,进入表单设计器 → 从表单控件工具栏上选择生成器锁定按钮 → 从该工具栏上选择所需控件并放在表单上 → 在生成器的选项卡中填上有关信息。
3. 利用数据环境在表单中创建控件:
从数据环境中直接将所需字段或表拖到正在设计的表单中,VFP 会自动生成符合要求的控件。
若要创建一个 |
将下面的项拖动到表单 |
表格 |
表 |
复选框 |
逻辑型字段 |
编辑框 |
备注型字段 |
OLE 绑定型控制 |
通用型字段 |
文本框 |
其他类型的字段 |
4. 自定义方式创建控件
打开表单设计器 → 根据需要从工具栏上单击某个控件 → 用鼠标直接在表单上画出控件外形 → 在属性窗口设置该控件的各项属性。
5.使用类浏览器向表单中添加控
在表单设计器中打开表单 → 在类浏览器中打开类库文件,其中应包含有添加到表单中的对象的类 → 从类列表中,选择类名,然后把类图标拖放到表单上。类图标位于类列表的上方。
附注:如果要把类添加到表单的容器对象上,则需把类图标拖放到表单中一个区域,然后把对象剪切并粘贴到所要的容器上。
6. 控件常用的属性、事件与方法
属性 |
说 明 |
AutoSize属性 |
指定控件是否依据其内容自动调节大小 |
ButtonCount属性 |
指定命令组或选项组中的按钮数 |
Caption属性 |
指定在对象标题中显示的文本 |
ControlCount属性 |
指定容器对象中控件的数目 |
ControlSource属性 |
指定与对象绑定的数据源 |
Enabled属性 |
指定对象能否响应用户引发的事件 |
Filter属性 |
排除不满足条件的记录。筛选条件由给定表达式指定 |
Increment属性 |
单击上箭头或下箭头时,微调控件中数值增加或减少的量 |
InputMask属性 |
指定控件中数据的输入格式和显示方式 |
MoverBars属性 |
指定是否在列表框控件中显示移动按钮 |
Name属性 |
指定在代码中引用对象时所用的名称 |
Parent属性 |
引用一个控件的容器对象 |
ReadOnly属性 |
指定是否可以编辑控件或者更新与临时表对象相关联的表或视图 |
RecordSourceType属性 |
指定如何打开填充表格控件的数据源 |
RowSource属性 |
指定组合框或列表框控件中值的来源 |
ToolTipText属性 |
为一个控件指定作为“工具提示”出现的文本 |
Value属性 |
指定控件的当前状态 |
Click事件 |
在控件上单击鼠标左键时方生 |
DblCick事件 |
在控件上双击鼠标左键时方生 |
Destroy事件 |
当释放一个对象的实例时发生 |
Init事件 |
在创建对象时发生 |
InteractiveChange事件 |
当更改控件的值时发生 |
Load事件 |
在创建对象前发生 |
RightClick事件 |
在单击右键时发生 |
Addobject方法 |
运行时在容器对象中添加对象 |
Clear方法 |
清除组合框或列表框控件的内容 |
Refresh方法 |
重画表单或控件,并刷新所有值 |
KeyPress事件 |
当按下并释放某个键时发生 |
7.4 修改表单布局
打开表单,进入表单设计器,用表单设计器工具栏或显示菜单中的各命令修改表单。
1. 选择、移动和缩放控件
选择: 用鼠标单击所需控件
移动: 选定控件,用鼠标拖动到新位置或从编辑菜单中选择剪切再在新位置粘贴
缩放: 选定控件,用鼠标拖动尺寸柄直至所需大小松开
2. 复制和删除表单控件
复制 : 选定表单上现有的控件 → 从编辑菜单中选择复制 → 从编辑菜单中选择粘贴。
删除: 选定表单上现有的控件 → 按 Delete 键。
3. 控件的布局
可利用布局工具栏使表单上的所有控件排列整齐、大小合理、对称美观。
7.5 定制表单
1. 改变文本的字体和大小
打开表单,进入表单设计器 → 选择要修改的控件 → 打开属性窗口 → 设置字体大小和字形,如 FontName 、FontSize、FontBold。
2.向表单中添加线条和形状
选择工具栏上的线条或形状按钮,在表单中所需位置拖动鼠标,画出线条或图形,图形界于正方形和圆形、长方形和椭圆形之间(属性窗口中的 Curvature 值从 0~99 )。线条和形状的颜色可以在属性窗口中设定。
3.向表单中添加图形
从表单控件工具栏中选择图象 → 在属性窗口中选择 Picture 属性单击该栏的…按钮 → 在打开对话框中找到所需的图象文件 → 确定
4. 设置一个表单的前景和背景颜色
用调色板工具栏或通过属性窗口中的 ColorSource 属性来设置。
5. 创建表单集
启动表单设计器 → 从表单菜单中选择创建表单集 → 设计第一张表单 → 从表单菜单中选择添加新表单 → 设计另一张表单 → 添加新表单 → 设计另一张表单 ……
7.6 设计自定义表单的一般方法
1. 与数据表绑定型表单
(1) 生成基本表单:
新建 → 表单 → 新文件 → 进入表单设计器 → 表单菜单 → 快速表单 → 选定数据库(表) → 选定输出字段 → 选定样式 → 确定。
(2) 修改基本表单:
1) 用鼠标拖动来调整各字段的布局(排列位置、大小、对齐等);
2) 在属性窗口中设置表单中各对象的属性:
表单(form1):
caption: 输入表单的中文标题
backcolor: 设置表单背景颜色
autocenter: 使表单运行时自动处于屏幕中央
visible: 设置表单在运行时是否可见,一般采用 .T.
各字段控件:
autosize: 根据所容纳的内容自动调整大小, 常采用 .T.
backstyle: 字段标题一般可设为透明,其它可设为不透明
caption: 输入中文的字段标题
fontname: 设置控件字体
fontsize: 设置字体大小
forecolor : 设置字体颜色
(3) 根据需要添加控件:
1) 利用数据环境:
打开基本表单 → 单击鼠标右键 → 从快捷菜单中选择数据环境 → 将所需字段拖到表单中 → 用标签控件为字段添加标题(先画出标签控件再更改标签的 caption 属性)。
2) 利用表单控制工具栏:
打开基本表单 → 单击工具栏中所需控件 → 在表单中画出控件 → 选定控件 → 单击鼠标右键 → 从快捷菜单中选择生成器… → 在对话框中选好所需各项 → 确定。
4. 添加命令按钮
根据需要添加适当数量的命令按钮(用单个命令按钮或用命令组均可),设置命令组时要利用命令组生成器(单击右键,从中选择生成器)。更改命令按钮的标题,需用热键时在标题后加上 (\<A )即可。如: Caption 中为 : 退出(\<X ), 按钮上则显示 退出(X)
5. 为命令按钮编写事件代码
根据命令按钮的标题所代表的功能在代码窗口中填写代码。几个常用按钮的代码如下表。
上一个 |
If.not.bof() Skip -1 Endif
Thisform.refresh |
下一个 |
If.not.eof() Skip Endif
Thisform.refresh |
第一个 |
Go top
Thisform.refresh |
最后一个 |
Go bottom
Thisform.refresh |
退出 |
Thisform.release |
2.与数据表无关型表单
新建 → 表单 → 新文件 → 进入表单设计器 → 添加控件 → 设置属性 → 编写代码。 |