1
第 九 章
表 单 设 计
目录
上一页
下一页
退出
2
本 章 目 录
?第一节 简单表单的创建
?第二节 表单设计器
?第三节 表单的属性、事件和方法程序
?第四节 表单控件
?第五节 表单的应用
目录
上一页
下一页
退出
3
第一节 简单表单的创建
表单 (Form)是 Visual FoxPro提供的用于建
立应用程序界面的最主要的工具之一。表单相
当于 WINDOWS应用程序的窗口
表单可以属于某个项目,也可以游离于任
何项目之外,它是一个特殊的磁盘文件,其扩
展名为,scx。 在项目管理器中创建的表单自动
隶属于该项目。创建表单一般有两种途径:
使用表单向导创建简易的数据表单;
使用表单设计器创建或修改任何形式的表单。
目录
上一页
下一页
退出
4
一、表单创建方法与表单类型
1,表单创建方法
表单的创建有以下三种方法:
(1) 利用命令窗口输入命令创建一个表单的命令格式:
CREATE FORM <表单名 >
(2) 利用表单向导生成表单, 可以创建基于一个表或
视图的表单, 也可创建一对多的表单,该方法只须
按系统提供的操作步骤和屏幕提示按步进行就能完
成 。
(3)利用表单设计器生成表单,可以创建简单表单、
复杂表单和一对多表单,该方法可根据用户需要在
设计器中选取各种控件,满足不同的功能要求,方
法灵活,实用性强。
目录
上一页
下一页
退出
5
2.表单的类型
根据表单数据来源的不同, 可将表单分为
以下几种类型:
( 1 ) 简单表单, 该表单的数据来源于某一个表
或某一个视图 。
( 2 ) 复杂表单, 该表单的数据来源于多个表或
多个视图 。
( 3 ) 一对多表单,该表单的数据来源于两个表,
这两个表必须是按一对多的关系连接起来,
其中一个为父表,另一个为子表。
目录
上一页
下一页
退出
6
二、利用表单向导创建表单
1.使用表单向导
启动表单向导有以下四种途径:
( 1) 打开, 项目管理器,, 选择, 文档, 选项卡, 从中
选择, 表单, 。 然后单击, 新建, 按钮 。 在弹出的
,新建表单, 对话框中单击, 表单向导, 按钮 。
( 2) 在系统菜单中选择 【 文件 】 |【 新建 】 命令, 或者单
击工具栏上的, 新建, 按钮, 打开, 新建, 对话框,
在文件类型栏中选择, 表单, 。 然后单击, 向导, 按
钮 。
( 3) 在系统菜单中选择 【 工具 】 |【 向导 】 |【 表单 】 命令 。
( 4)直接单击常用工具栏上的“表单向导”图标按钮。
按步骤依照, 表单向导, 完成一对多表表单的设计
目录
上一页
下一页
退出
7
2.创建表单
【 例 9-1】 假设以读者表为数据来源, 制作查询读者信
息的查询表单 (reader.scx)。
具体操作方法如下:
(1) 启动表单向导,在, 新建表单, 对话框中选取
,表单向导, 按钮。
(2) 在弹出的, 向导选取, 对话框中选择, 表单向
导, 选项。
(3) 单击, 确定, 按钮后,出现表单向导的第一个对
话框,如图 9-1所示。这一步主要选择数据库表
或自由表中的全部, 字段, 或部份, 字段,,作
为表单的显示对象。本例选择, 读者, 数据表中
字段名为读者编号、姓名、性别、出生日期、籍
贯、联系电话等六个字段。
目录
上一页
下一页
退出
8
图 9-1 表单向导第一个对话框 图 9-2 表单向导第二个对话框
目录
上一页
下一页
退出
9
(4) 单击, 下一步, 按钮后,出现如图 9-2所示的表单
向导第二个对话框,该步骤主要用来选择表单的显
示格式,向导系统提供了九种样式供用户选择,本
例从样式选项框中选中浮雕式。
在对话框的按钮类型选框中,有文本按钮、图片按
钮、无按钮和定制 4种类型,本例选择的是文本按
钮,表示表单将自动生成一组以文本表示的命令按
钮。如图 9-3所示。
图 9-3 文本按钮方式
目录
上一页
下一页
退出
10
(5) 单击, 下一步, 按钮, 出现如图 9-4所示的表
单 向导第三个对话框 。 该对话框主要用来选
择 排序关键字, 本例选择, 读者编号, 作为
关键 字, 按升序排序 。
(6) 单击, 下一步, 按钮,出现如图 9-5所示的表
单 向导第四个对话框,输入表单标题,默认
值 为, 读者,,下面的三个单选项和三个复
选项 主要用来询问在创建完这个表单后要做
的工 作。若对当前设置的表单进行预览,可
单击 右面的, 预览, 按钮。预览后,单击
,返回向导, 按钮即可回到表单向导。
目录
上一页
下一页
退出
11
图 9-4 表单向导第三个对话框 图 9-5 表单向导第四个对话框
目录
上一页
下一页
退出
12
(7) 保存表单。单击, 完成, 按钮,系统弹出
,另存为, 对话框,选择表单文件保存的磁盘
路径,输入新的表单文件名,并在, 保存类型,
下拉表中选取, 表单, 类型,如图 9-6所示。单
击, 保存, 按钮,该表单就保存到了磁盘上。
图 9-6, 另存为, 对话框
目录
上一页
下一页
退出
13
三、表单的运行
1.运行表单一般有三种方式
命令方式,在命令窗口中, 直接输入命令:
DO FORM <表单名 >
2.打开表单, 在表单设计器窗口运行表单
(1) 打开表单
单击, 打开, 菜单工具按钮,弹出, 打开, 对话框。
在文件类型下拉表中选取, 表单, 项,在文件名栏中输
入所需表单文件名,单击, 确定, 按钮。
(2) 运行表单
在表单设计器窗口,选择, 表单, 菜单中的, 运行,
命令,或直接单击工具栏中的运行按钮。
3.在项目管理器中运行表单
打开项目管理器,选中项目管理器中的, 文档, 选项卡,
选择要运行的表单,单击, 运行, 按钮。
目录
上一页
下一页
退出
14
四、创建一对多表单
【 例 9-2】 试在图书管理系统中, 运用读者表和借书表查阅
某个读者所借图书情况, 创建表单 ( 读者借书,scx) 。
其操作步骤如下:
(1)启动表单向导 。
(2)在, 向导选取, 对话框中,选择, 一对多表单向导, 。
(4)单击, 确定, 按钮,出现如图 9-7所示的对话框。从
父 表中选取所需字段。
(5)单击, 下一步, 按钮,出现如图 9-8所示的对话框,
在对 话框中选择与父表有直接关系的子表,从子表中
选择 要在表单中显示的字段。
注意,在创建一个一对多表单时,两个数据表之间应该可
以建立连接关系,否则无法创建一对多表单。
目录
上一页
下一页
退出
15
图 9-7 从父表中选取字段对话框 图 9-8 从子表中选取字段对话框
目录
上一页
下一页
退出
16
(6) 单击, 下一步, 按钮,出现对话框。为表单中的两个
数据表之间建立关系。本例选择的是, 读者编号, 作为
,读者表, 与, 借书表, 之间的关键字段。
(7) 单击, 下一步, 按钮,出现对话框,选择表单样式和
按钮类型,在这里选择的是, 标准式, 表单样式,而按
钮类型选择的是, 图片按钮, 。
(8) 单击, 下一步, 按钮,出现对话框,选择父表中的排
序关键字。在这里选取, 读者编号, 字段作为父表升序
排序的关键字。
(9) 单击, 下一步, 按钮,出现对话框,输入表单标题名,
本例输入, 读者借书查询,,并选取, 保存表单以备将
来使用, 单选项。
(10) 运行该表单后,可得到如图 9-9所示的窗口。
目录
上一页
下一页
退出
17
图 9-9 读者借书查询表单运行窗口
目录
上一页
下一页
退出
18
第二节 表单设计器
一、启动表单设计器 方法
启动表单设计器有多种方法:
● 菜单方法:若是新建表单, 在系统 菜单中选择 【 文件 】
|【 新建 】, 在文件类型对话框中选择, 表单,, 单击
,新建文件, 按钮;若是修改表单, 则单击 【 文件 】 |
【 打开 】, 在打开对话框中选择要修改的表单文件名,
单击, 打开, 按钮 。
● 命令方法,在 COMMAND窗口输入如下命令:
CREATE FORM <文件名 > &创建新的表单

MODIFY FORM <文件名 > &打开一个已有的表单
● 在项目管理器中,先选择文档标签,然后选择表单,
单击新建按钮。若是修改表单,选择要修改的表单,单
击“修改”按钮。
目录
上一页
下一页
退出
19
二、表单设计器环境介绍
1,设计器窗口
“表单设计器”窗口内包含正在设计的表单。用
户可在表单窗口中可视化地添加和修改控件、改变
控件布局,表单窗口只能在“表单设计器”窗口内
移动。以新建方式启动表单设计器时,系统将默认
为用户创建一个空白表单,如图 9-10左侧部分 。
图 9-10 表单设计器
目录
上一页
下一页
退出
20
2,属性窗口
设计表单的绝大多数工作都是在属性窗口中完成的,
因此用户必须熟悉属性窗口的用法 。 如果在表单设计
器中没有出现属性窗口, 可在系统菜单中单击 【 显示 】
|【 属性 】, 属性窗口如图 9-11所示 。
页框选项卡
“对象”下拉列表框

属性设置框
图 9-11 属性窗口
目录
上一页
下一页
退出
21
3,表单控件工具栏
设计表单的主要
任务就是利用, 表
单控件, 设计交互
式用户界面。, 表
单控件, 工具栏是
表单设计的主要工
具。默认包含 21个
控件,4个辅助按钮,
如图 9-12所示。
图 9-12 表单控件
目录
上一页
下一页
退出
22
设置 Tab健次序 属性窗口 表单控件工具栏 布局工具栏 自动格式
数据环境 代码窗口 调色板工具栏 表单生成器
4.表单设计器工具栏
打开, 表单设计器, 时, 主窗口中会自动
出现, 表单设计器, 工具栏, 如图 9-12所示 。
图 9-12 表单设计器工具栏
目录
上一页
下一页
退出
23
三、快速表单
1.表单生成器
调用表单生成器的方法有以下三种:
( 1) 在系统菜单中选择 【 表单 】 |【 快速表单 】 命
令 。
( 2) 单击, 表单设计器, 工具栏中的, 表单生成
器, 按钮 。
( 3) 右击表单窗口, 然后在弹出的快捷菜单中选
择, 生成器, 命令 。
目录
上一页
下一页
退出
24
2.运用表单生成器创建表单
【 例 9-3】 运用读者表创建快速表单 (quck_reader.scx)。
操作步骤如下:
第一步, 打开表单设计器 。
第二步,单击, 表单, 菜单项下的, 快速表单, 命令;或
单击表单设计器工具栏中的, 表单生成器按钮, ;或在
新建的表单上单击鼠标右键,在弹出的快捷菜单中选择
,生成器 …, 选项,则出现如图 9-13所示的表单生成器
对话框。
第三步,在表单生成器对话框中单击, 字段选取, 标签项,
选择读者数据表,在字段列表框下选定字段。
第四步, 单击, 样式, 标签项, 选择表单控件的样式, 新
奇式, 。
第五步, 单击, 确定, 按钮, 出现如图 9-14所示的表单控
件布局窗口, 用户可用鼠标对表单控件位置进行适当调
整 。
目录
上一页
下一页
退出
25
图 9-14 表单控件布局图 9-13, 表单生成器, 对话
框 选择所需字段,加到
“选择字段列表中”
运用鼠标操作可调整
表单中各控件的位置
目录
上一页
下一页
退出
26
第六步, 单击, 文件, 菜单项下的, 另存为 …, 功能,
弹出, 另存为, 对 话 框, 输 入 表 单 文 件 名
quck_reader.scx,单击, 保存, 按钮 。
第七步,单击工具栏中的, 运行, 按钮,即可运行
该表单。
目录
上一页
下一页
退出
27
四、数据环境
1,打开数据环境设计器
表单设计器环境下, 单击, 表单设计器, 工
具栏上的, 数据环境, 按钮, 或选择 【 显示 】
|【 数据环境 】 命令, 即可打开, 数据环境
设计器, 窗口, 此时, 系统菜单栏上将出现
,数据环境, 菜单 。
2,数据环境的常用属性
常用的两个数据环境属性是 AutoOpenTables
和 AutoCloseTables
目录
上一页
下一页
退出
28
3.向数据环境添加表或视图
在数据环境设计器环境下,按下列方法向数据环境添
加表或视图:
在系统菜单中选择 【 数据环境 】 |【 添加 】 命令, 或
右键单击, 数据环境设计器窗口,, 然后在弹出的快捷
菜单中选择 【 添加 】 命令, 打开, 添加表或视图, 对话
框, 如图所示 。 如果数据环境原来是空的, 那么在打开
数据环境设计器时, 该对话框就会自动出现 。
选择所需表,单
击, 添加,
目录
上一页
下一页
退出
29
4,从数据环境中移去表或视图
在“数据环境设计器”窗口中,选择要移去的表或
视图,在系统菜单中选择【数据环境】 |【移去】命
令。也可以用鼠标右键单击要移去的表或视图,然
后在弹出的快捷菜单中选择【移去】命令。
5,在数据环境中设置关系
设置关系的方法为:将主表的某个字段 ( 作为关联
表达式 ) 拖曳到子表的相匹配的索引标记上既可 。
如果子表上没有与主表字段相匹配的索引, 也可以
将主表字段拖动到子表的某个字段上, 这时应根据
系统提示确认创建索引
目录
上一页
下一页
退出
30
6.常用关系属性
常用的关系属性有:
● RelationalExpr,用于指定基于主表的关联
表达式 。
● ParentAlias,用于指明主表的别名 。
● ChildAlias,用于指明子表的别名 。
● ChildOrder,用于指定与关联表达式相匹
配的索引 。
● OneToMany,用于指明关系是否为一对多
关系, 该属性默认为,, F.”,如果关系为
,一对多关系,, 该属性一定要设置为
,.T.”。
目录
上一页
下一页
退出
31
第三节 表单的属性、事件和方法程序
一, 表单属性
表单作为一个对象, 也和其它控件对象一样具有属
性, 表单的属性是表单的特性, 可以通过属性窗口或程
序语句对其进行设置, 表单具有很多属性, 其中常用的
属性见表 9-5。
二, 表单事件
表单可以对用户启动或系统触发的事件做出响应,
例如用户可以在表单的 Click事件过程中编写程序, 从
而单击表单时执行该事件过程 。 表单的常用事件见表 9-
6。 所有事件方法的运行都是由一种特定事件触发的 。
目录
上一页
下一页
退出
32
表 9-5
属性 描述 默认值
AlwaysOnTop 指定表单是否总是位于其它打开窗口之上,F.
AutoCenter 居中显示,F.
BackColor 指定表单窗口的背景颜色 255,255,25
5
BorderStyle 指定表单边框的风格。 3
Caption 显示于表单标题栏上的文本 Form1
Closable 决定表单的右上角的关闭按钮是否有效,T.
DataSession 指定表单中的表是在全局能访问的工作区打开(设置值为 1
)还是在表单自己的工作区打开(设置值为 2)
1
MaxButton 确定表单右上角是否有最大化按钮,T.
MixButton 确定表单右上角是否有最小化按钮,T.
Movable 确定表单是否能移动,T.
Scrollbars 指定表单的滚动条类型。可取值为,0(无),1(水平) 2
(垂直) 3(既水平又垂直)
0
WindowState 指定表单的状态,0(正常) 1(最小化),2(最大化) 0
WindowType 指定表单是模式表单(设置值为 1)还是非模式表单(设置
值为 0)。在一个应用程序中,如果运行了一个模式表单,
那么在关闭该表单之前不能访问应用程序中的其他表单
0
目录
上一页
下一页
退出
33
事件名 说 明
Active 当表单变成活动的时候就产生该事件 。
Click 当用户单击表单时就产生该事件, 从而执行为该事件编写的代码 。
DblClic
k
当用户双击表单时就产生该事件, 从而执行为该事件编写的代码 。
Destroy 当释放该表单时就产生该事件, 其代码通常用来进行文件关闭, 释放内存
变量等工作 。
Init 当创建表单时就产生该事件, 其代码通常用来完成一些关于表单的初始化
工作 。
Load 在创建表单之前就产生该事件 。
Unload 释放表单时就产生该事件 。
表 9-6 表单的常用事件
目录
上一页
下一页
退出
34
三、表单常用方法程序
( 1) Release方法:将表单从内存中释放 。 比如表单有
一个命令按钮, 如果希望单击该命令按钮时关闭表
单, 就可以在该命令按钮的 Click事件中包含如下代
码:
ThisForm.Release
表单运行时, 用户单击表单右上角的关闭按钮, 系
统会自动执行 Release方法 。
( 2) Refresh方法:刷新表单 。
( 3) Show方法:显示表单 。 该方法将表单的 Visible
属性设置为,T.。
( 4) Hide方法:隐藏表单。该方法将表单的 Visible属
性设置为,F.。 与 Release方法不同,Hide只是把表单
隐藏,但并不将表单从内存释放,之后可用 Show方
法重新显示表单。
目录
上一页
下一页
退出
35
四、表单属性窗口
对于表单及表单中的控件,根据用户的需要,可修改
其属性值以及事件和方法代码。
在表单的空白处单击鼠标右键, 在弹出的快捷菜单中
选取, 属性, 命令, 则出现如图 9-15右图所示的属性窗
口 。
图 9-15 表单属性窗口
目录
上一页
下一页
退出
36
属性窗口共有五个选项卡,其中, 全部, 选项卡列
出了指定对象的全部属性、事件和方法;, 数据, 选项
卡列出了对象如何显示和操纵数据的属性;, 方法, 选
项卡列出了对象的事件和方法;, 布局, 选项卡显示了
所有布局属性;, 其它, 选项卡显示了对象所属类、类
库等其它属性以及用户自定义属性。属性窗口上方有一
个对象下拉列表框和若干按钮
1).对象下拉列表框,用于标识当前选定的对象。
2)., ?” 按钮 ( 取消按钮 ):取消更改, 恢复以前的值 。
3)., ?” 按钮 ( 接受按钮 ):用来确认对此属性的更改 。
4)., ?x”按钮 ( 函数按钮 ):
打开表达式生成器 。 设置由函数及表达式返回的值 。
5).属性设置框,用于更改属性列表中选定的属性值。
目录
上一页
下一页
退出
37
五、添加新的属性和方法
1,创建新属性
向表单添加新属性的步骤如下:
( 2)在“名称”框
中输入属性名称
( 3)有选择地在
“说明”框中输
入新建属性的说
明信息
( 1)在系统菜单中选择【表单】 |【新建属性】命令,打开
“新建属性”对话框,如图 7-13所示。
目录
上一页
下一页
退出
38
2.创建新方法
在表单中添加新方法的步骤如下:
( 1) 在系统菜单中选择 【 表单 】 |【 新建方法程序 】 命
令, 打开如图 的, 新建方法程序, 对话框 。
( 2) 在, 名称, 框中输入方法名 。
( 3) 有选择地在, 说明, 框中输入新建方法的说明信
息 。
目录
上一页
下一页
退出
39
六、布局工具栏和调色板工具栏
1,布局工具栏
使用布局工具栏可以对表单上的多个控件对象进行
位置和形状的调整。其方法是:按住 Shift键后,点击表
单上的多个控件,然后单击主菜单栏中的, 显示, 菜单,
在弹出的菜单中选择布局工具栏选项,则出现如图 9-16
所示的布局工具栏。 左边对齐 顶边对齐 垂直居中对齐 相同宽度 相同大小 垂直居中 置后
右边对齐 底边对齐 水平居中对齐 相同高度 水平居中 置前
图 9-16布局工具栏
目录
上一页
下一页
退出
40
2,调色板工具栏
使用调色板工具栏可对表单或所选表单上的控件对象
进行着色。在表单上同时选择一个或多个控件对象,然
后单击主菜单栏中的, 显示, 菜单,在弹出菜单中选择
调色板工具栏选项,即可弹出如图 9-17的调色板工具栏。
图 9-17 调色板
单击此按钮, 所选择对象的前景色改变为所选的颜色 。
单击此按钮, 所选择对象的背景色改变为所选的颜色
单击此按钮, 可以打开一个颜色面板 。
目录
上一页
下一页
退出
41
七、运行单表
1.在设计时运行表单
在设计时可采用以下方法运行表单文件:
( 1) 在项目管理器窗口中, 选择要运行的表单, 然后单
击, 运行, 按钮 。
( 2) 在表单设计器窗口中, 在系统菜单中选择 【 表单 】
|【 执行表单 】 命令, 或单击常用工具栏上的, 运行,
按钮 。
( 3) 在系统菜单中选择 【 程序 】 |【 运行 】 命令, 打开
,运行, 对话框, 然后在运行对话框中选择要运行的
表单文件, 单击, 运行, 按钮 。
( 4)在命令窗口输入命令,DO FORM <表单文件名 > 。
目录
上一页
下一页
退出
42
2,在程序中调用表单
在程序中调用表单可用下列命令:
DO FORM < 表单文件名 > [ NAME 〈 变
量 〉 ][LINKED] [WITH 〈 实参 1〉 〈, 实参
2〉, … ] [TO 〈 变量 〉 ] [NOSHOW]
● [NAME 〈 变量 〉 ]:如果包含 NAME子句,
系统将建立指定名字的变量, 并使它指向表
单对象 。 否则, 系统将建立与表单文件名相
同的变量, 并使它指向表单对象 。
目录
上一页
下一页
退出
43
● [LINKED]关键字:如果包含 LINKED关键字,
表单和表单对象变量将链接起来, 这时, 表单
对象将随指向它的变量的清除而关闭 ( 释放 ),
否则, 即使变量已经清除 ( 如超出作用域, 用
RELEASE命令清除 ), 表单对象依然存在 。 但
不管有没有 LINKED关键字, 指向表单对象的变
量并不会随表单的关闭而清除 。
● [TO〈 变量 〉 ]:用于从模式表单返回值 。
● [WITH <参数列表 >]:用于向表单传递参数 。
● [NOSHOW],如果包含 NOSHOW关键字, 表单运
行时将不显示, 直到将表单的 Visible属性被
设置为,T.,或者调用表单的 Show方法 。
目录
上一页
下一页
退出
44
八、表单与其它程序模块间的通信
1,将参数传递到表单
如果要将参数传递到表单, 可按如下操作:
( 1) 在表单的 INIT事件中, 用 PARAMETERS定义形参:
PARAMETERS param1,param2
( 2) 在表单的 INIT事件中可以直接访问参数, 如果在表
单的其它方法或事件中需要使用该参数, 必需在表单
的 INIT事件中将参数保存到表单的属性或变量中 。
( 3) 运行表单时, 使用带 WITH子句的 DO FORM命令,
系统会将 WITH子句的实参值传递到 INIT事件代码的
PARAMETERS子句中的各形参 。
目录
上一页
下一页
退出
45
2.从表单返回值
只有模式表单可返回值 。 要从表单返回值可按如下操作:
( 1) 将表单的 WINDOWTYPE属性设置为 1,使表单成为模
式表单,
( 2) 在表单的 UNLOAD事件中代码中, 包含一个带返回值
的 RETURN命令 。
( 3)运行表单时,在 DO FORM命令中包含 TO关键字。
3.直接访问表单对象
表单运行后,在其释放前可通过指向表单的变量访问
表单对象及表单中所有控件对象。
目录
上一页
下一页
退出
46
九、使用表单集扩充表单
1,创始表单集
表单集是一个包含有一个或多个表单的容器 。 可在, 表单
设计器, 中创建表单集, 若要创建表单集, 在系统菜单
中选择 【 表单 】 |【 创建表单集 】 命令 。
2,添加和删除表单
添加,在系统菜单中选择 【 表单 】 |【 添加新表单 】 命令 。
删除:
( 1) 在, 属性, 窗口的对象列表框中, 选择要删除的表单 。
( 2) 在系统菜单中选择 【 表单 】 |【 移除表单 】 命令 。
如果表单集只有一个表单, 可删除表单集而只剩下表单 。
方法:在系统菜单中选择 【 表单 】 |【 移除表单集 】 命令 。
目录
上一页
下一页
退出
47
第四节 常用表单控件
一, 表单控件简介
表单控件主要在表单中使用, 在创建每个新表单时,
根据系统的默认设置都会弹出表单控件工具栏, 否则单
击, 显示, 菜单项下的, 表单控件工具栏, 选项, 也将
出现如图 9-18所示的表单控件工具栏 。
选定对象 编辑框 复选框 表格 A c t i v e X 控件 容器 按钮锁定
标签 命令按钮组 列表框 计时器 线条 超级链接
查看类 命令按钮 组合框 图 ActiveX 分隔符
文本 选项按钮组 微调控件 页框 绑定控件 形状 生成器锁定
图 9-18 表单控件工具栏
目录
上一页
下一页
退出
48
表单控件的基本操作
(1)表单控件常见操作 。
① 选择控件:单击控件, 被选中的控件四周出现 8个控点 。
要同时选择多个控件时, 单击第一个控件, 按下 Shist键,
再单击其余控件 。
② 移动控件:用鼠标拖动被选中的控件 。
③ 调整控件大小:拖动被选中控件上的控点 。
④ 复制控件:选中要复制的控件后, 再进行, 复制, 和, 粘
贴, 操作 。
⑤ 删除控件:选择控件后, 按 Del键 。
(2)同时添加多个控件
单击控件工具栏上的 ( 按钮锁定 ) 按钮, 然后单击要添加的
控件按钮, 就可以在表单上添加多个此控件, 直到再次单击
,按钮锁定, 按钮
(3)快速添加控件
如果从数据环境设计器或数据库设计器或项目管理器中拖动
字段、表或视图到表单上,可以快速创建控件。
目录
上一页
下一页
退出
49
二、常用表单控件的属性及事件
1.常用控件的公共属性
name,控件的名称, 它是代码中访问控件的标识 ( 表
单或表单集除外 ) 。
Fontname,字体名 。
Fontbold,字体样式为粗体 。
Fontsize,字体大小 。
Fontitalic,字体样式为斜体 。
Forecolor,前景色 。
Height,控件的高度
Width,控件的宽度 。 控件的高度和控件的宽度, 也可在
设计时通过鼠标拖曳进行可视化调整 。
Visible,控件是否显示 。
Enable,控件运行时是否有效 。 如果为,T.,则表示控件
有效, 否则运行时控件不可使用 。
目录
上一页
下一页
退出
50
2,标签( Label) 控件
1) 标签控件的功能
标签主要用于显示固定的文本信息。
2) 标签控件常用属性
caption,指定标签的显示文本 。 可以在设计时设置,
也可以在程序运时设置或修改 。
forecolor,设置标题的字体颜色 。
Backstyle,设置标签的背景是否透明, 0透明, 1不透
明, 默认为不透明 。
name, 标签对象的名称,是程序中访问标签对象的
标识。
Alignment,指定标题控件中显示的对齐方式。
目录
上一页
下一页
退出
51
3,命令按钮( CommandButton) 控件
1) 命令按钮控件功能
命令按钮典型地用来启动某个事件代码, 完成特定
功能, 如关闭表单, 移动记录指针, 打印报表等 。
命令按钮
目录
上一页
下一页
退出
52
2),命令按钮控件常用属性
Default,命令按钮的 Default属性默认值为,F.,如果该属
性设置为,T.,在该按钮所在的表单激活的情况下, 按
Enter,可以激活该按钮, 并执行该按钮的 Click事件
代码 。 一个表单只能有一个按钮的 Default属性为真 。
Cancel,命令按钮的 Cancel属性默认值为,F.,如果设置
为,T.,在该按钮所在的表单激活的情况下, 按 Esc键
可以激活该按钮, 并执行该按钮的 Click事件代码 。 一
个表单只能有一个按钮的 Cancel 属性为真 。
Caption,设置按钮的标题 。
Enable,确定按钮是否有效, 如果按钮的属性 Enable
为,F.,单击该按钮不会引发该按钮的单击事件 。
对命令按钮的使用最重要的是编写 Click事件代码。
目录
上一页
下一页
退出
53
4.命令按钮组( CommandGroup) 控件
1) 命令按钮组功能
命令按钮组是包含一组命令按钮的容器控件,用
户可以单个或作为一组来操作其中的按钮。
命令按钮组
目录
上一页
下一页
退出
54
2) 命令按钮组常用属性
Buttoncount,命令按钮组中命令按钮的数目 。
Value,默认情况下, 命令按钮组中的各个按钮被自动
赋予了一个编号, 如 1,2,3,等, 当运行表单时,
一旦用户单击某个按钮, 则 Value将保存该按钮的
编号, 于是在程序中通过检测 Value的值, 就可以
为相应的按钮编写特定的程序代码 。 如果在设计时,
给 Value赋予一个字符型数据, 当运行表单时, 一
旦用户单击某个按钮, 则 Value将保存该按钮的
Caption属性值 。
Buttons,用于存取命令按钮组中每个命令按钮的数组,
代码中可以通过该数组访问命令按钮组中的各个按
钮,
目录
上一页
下一页
退出
55
5,文本框( TextBox) 控件
1) 文本框控件的功能:
( 1) 用于显示或接收单行文本信息 ( 不设置
ControlSource属性 ), 默认输入类型为字符型,
最大长度为 256个字符 。
( 2) 用于显示或编辑对应变量或字段的值 ( 设置
ControlSource属性为已有变量或字段名 ) 。
文本框
目录
上一页
下一页
退出
56
2) 文本框控件常用属性
ControlSource,设置文本框的数据来源 。 一般情况
下, 可以利用该属性为文本框指定一个字段或内
存变量 。
Value,保存文本框的当前内容, 如果没有为
ControlSource属性指定数据源, 可以通过该属性
访问文本框的内容 。 它的初值决定文本框中值的
类型 。 如果为 ControlSource属性指定了数据源,
该属性值与 ControlSource属性指定的变量或字段
的值相同 。
PassWordChar,设置输入口令时显示的字符 。
Readonly,确定文本框是否为只读, 为,,T.”时,
文本框的值不可修改 。
目录
上一页
下一页
退出
57
【 例 9-4】 创建一个如图所示的登录窗口, 并将
表单保存为 FORM2。
打开表单设计器,向空白表单中添加二个标签控件、
二个文本框控件、二个命令按钮控件,按所示窗口
设置表单、标签和命令按钮控件的 Caption属性。
目录
上一页
下一页
退出
58
双击, 登录, 按钮, 在登录按钮的单击事件中
输入如下代码:
if thisform.text1.value="user1” and
thisform.text2.value="123456"
do form mainform
form1.release
else
messagebox("密码或用户名错误 ",0,"提示 ")
endif
目录
上一页
下一页
退出
59
双击, 取消, 按钮, 在取消按钮的单击事件中
输入如下代码:
nAnswer=messagebox("你决定退出系统吗?
",4,"提示 ")
DO CASE
CASE nAnswer = 6
thisform.release
CASE nAnswer = 7
messagebox(,请输入用户名和密码
",0,"提示 ")
ENDCASE
目录
上一页
下一页
退出
60
6,编辑框( EditBox) 控件
1) 编辑框控件的功能
用于显示或编辑多行文本信息。编辑框实际上是
一个完整的简单字处理器,在编辑框中能够选择、
剪切、粘贴以及复制正文,可以实现自动换行,能
够有自己的垂直滚动条。
编辑框
目录
上一页
下一页
退出
61
2) 编辑框常用属性
ControlSource,设置编辑框的数据源, 一般为数据表的
备注字段 。
Value,保存编辑框中的内容, 可以通过该属性来访问编
辑框中的内容 。
SelText,返回用户在编辑区内选定的文本, 如果没有选
定任何文本, 则返回空串 。
SelLength,返回用户在文本输入区中所选定字符的数目 。
Readonly,确定用户是否能修改编辑框中的内容 。
Scroolbars,指定编辑框是否具有滚动条,当属性值为0
时,编辑框没有滚动条,当属性值为2(默
认值)时,编辑框包含垂直滚动条。
目录
上一页
下一页
退出
62
7.复选框 (CheckBox)控件
1) 复选框的功能
用于标识一个两值状态,如真 (.t.)或假 (.f.)。 当处
于“真”状态时,复选框内显示一个对勾,当处于
“假”状态时复选框内为空白。
复选框
目录
上一页
下一页
退出
63
2) 复选框常用属性
Value,用来指明复选框的当前状态,如下表,
ControlSource,用于指定复选框的数据源。
属性值 说明
0或,F,(默认值),未被选

1或,T,被选中
>=2或 null 不确定,只在代码中
有效
目录
上一页
下一页
退出
64
8,选项组 (OptionGroup)控件
1) 选项组控件的功能
选项组又称为选项按钮组,是包含选项按钮的一种
容器。一个选项组中往往包含若干个选项按钮,但用户
只能从中选择一个按钮。当用户单击某个选项按钮时,
该按钮即成为被选中状态,而选项组中的其他选项按钮,
不管原来是什么状态,都变为未选中状态,被选中的选
项按钮中会显示一个圆点。
选项框
目录
上一页
下一页
退出
65
2) 选项组常用属性
ButtonCount,指定选项组中选项按钮的数目 。
Value,用于指定选项组中哪个选项按钮被选
中 。 ControlSource,指定选项组数据源 。
Buttons,用于存取选项组中每个选项的数组 。
目录
上一页
下一页
退出
66
【 例 9-5】 命令按钮组, 选项组, 复选框, 编辑框应用
示例, 按如图所示设计一个表单, 要求:用户单击
确定按钮时, 在编辑框中显示用户对选项组和复选
框的选择 。 并将表单保存为 FORM3
目录
上一页
下一页
退出
67
编写事件代码:
选择命令按钮组, 在属性窗口中双击, CLICK
EVENT”属性, 系统会打开代码编写器, 在代码编
写器窗口为, CLICK EVENT”事件输入如下代码:
if thisform.commandgroup1.value=2
thisform.release
else
cstr="你所在城市 "+chr(13);
+thisform.optiongroup1.buttons[thisform
.optiongroup1.value].caption+chr(13)
cstr=cstr+"你的爱好 "+chr(13)
目录
上一页
下一页
退出
68
if thisform.check1.value=1
cstr=cstr+thisform.check1.caption
endif
if thisform.check2.value=1
cstr=cstr+thisform.check2.caption
endif
if thisform.check3.value=1
cstr=cstr+thisform.check3.caption
endif
thisform.edit1.value=cstr
endif
目录
上一页
下一页
退出
69
9.列表框( ListBox) 控件
1) 列表框的功能
列表框提供一组条目(数据项),用户可以从中
选择一个或多个条目,一般情况下,列表框显示其
中的若干条目,用户可以通过滚动条浏览其他条目。
列表框
目录
上一页
下一页
退出
70
2) 选项组常用属性
RowSourceType,指明列表框数据源的类型 。
RowSource,指定列表框的数据源,两者常用的搭配如
表 所示 。
RowSourceType属性值 RowSource属性
0-无
在程序运行时,通过 AddItem方法添加列
表框条目,通过 RemoveItem方法移去列
表框条目

1-值
列出在 RowSource属性中指定所有数据项
可以是用逗号隔开的若干数据项的集合,例如
,在设计时,在本属性框中输入:北京、上海
、长沙、武汉
5-数组
列出数组的所有元素
使用一个已定义的数组名。
6-字段
列出一个字段的所有值
字段名
7-文件
列出指定目录的文件清单
磁盘驱动器或文件目录
8-结构
列出数据表的结构
表名
目录
上一页
下一页
退出
71
List,用以存取列表框中数据条目的字符串数组 。 例
如, LIST[1]代表列表框中的第一行 ( 第一个数
据项 ) 。
ListCount,列表框中数据条目的数目。
ColumnCount,指定列表框的列数。
Value,返回列表框中被选中的条目。
ControlSource,该属性在列表框中的用法与在其他控
件中的用法有所不同,在这里,用户可以通过该属
性指定一个字段或变量用以保存用户从列表框中选
择的结果。
Selected,该属性是一个逻辑型数组,第 N个数组元素
代表第 N个数据项是否为选定状态。
MultiSelect,指定用户能否在列表框控件内进行多重
选定。
目录
上一页
下一页
退出
72
【例 9-6】列表框的应用:按下图设计一个表单。要求表
单运行时,LIST1列表框显示 STUD表的所有字段,单
击左箭头按钮时,LIST1中选择的字段加入到 LIST2中。
目录
上一页
下一页
退出
73
操作步骤:
① 按图所示在表单中加入二个列表框, 二个标签, 二
个命令按钮 。
② 在表单的 INIT事件中加入如下代码:
thisform.list1.value=0
thisform.list2.value=0
open database student
use stud
for i=1 to fcount()
thisform.list1.additem(fields(i))
next
close database
目录
上一页
下一页
退出
74
③ 在左箭头按钮 ( COMMAND1) 的 CLICK事件中加入
如下代码:
thisform.list2.addlistitem(thisform.list1
.listitem[thisform.list1.value])
thisform.list1.removeitem[thisform.list1.
value]
右箭头按钮( COMMAND2) 的 CLICK事件代码请用
户自己编写。
目录
上一页
下一页
退出
75
10.组合框 (comboBox)控件
组合框与列表框类似, 也是用于提供一组条目供
用户从中选择, 组合框和和列表框的主要区别在
于:
( 1) 对于组合框来说, 通常只有一个条目是可见的 。
用户可以单击组合框上的下拉箭头按钮打开条目
列表, 以便从中选择 。
( 2 ) 组 合 框 不 提 供 多 重 选 择 的 功 能, 没有
MultiSelect属性 。
( 3)组合框有两种形式:下拉组合框( Style属性
为 0)和下拉列表框( Style属性为 2)。对下拉组
合框,用户既可以从列表中选择,也可以在编辑
区输入。对下拉列表框,用户只可从列表中选择。
目录
上一页
下一页
退出
76
11.表格 (Grid)控件
1) 表格控件的功能:
表格控件用于浏览或编辑多行多列数据。
表格
目录
上一页
下一页
退出
77
2) 表格控件常用属性
RecordSourceType,指明表格数据源的类型,
RecordSource,指定数据的来源, 它们取值及含义如表
所示 。
RecordSourceType属性值 RecordSource属性
0-表:数据来源由
RecordSource属性指定的表,
该表能被自动打开
表名
1-别名
数据来源于己打开的表
表的别名
2-提示
运行时,由用户根据提示选
择表格数据源
3-查询
数据来源于查询
查询文件名
4-SQL语句
数据来源于 SQL语句
SQL语句
目录
上一页
下一页
退出
78
ColumnCount,指定表格的列数。
LinkMaster,用于指定表格控件中所显示的子表
的父表名称。
ChildOrader,指定子表的索引。
RelationalExpr,确定基于主表字段的关联表达式
AllowAddNew,为真,运行时允许添加新记录,
否则不能添加新记录。
AllowRowSizing,为真, 运行时用户可改变行高 。
AllowHeaderSizing,为真,运行时用户可改变列
宽。
目录
上一页
下一页
退出
79
3) 常用的列属性
ControlSource,指定在列中显示的数据源,
CurrentControl,指定列对象中显示和接收数据的控件,
Sparse,用于确定 CurrentControl属性影响列中的所有单
元格还是只影响活动单元格,
注意:
设计时要设置列对象的属性, 首先得选择列对象, 选
择列对象有两种方法:
① 从属性窗口的对象列表中选择相应列,
② 右击表格, 在弹出的快捷菜单中选择 【 编辑 】 命令,
这时表格进入编辑状态 ( 表格的周围有一个粗框 ),
用户可用鼠标单击选择列对象 。
目录
上一页
下一页
退出
80
4) 常用的标头 ( Header) 属性
列标头也是一个对象, 有它自己的属性, 方
法和事件, 设计时要设置标头对象的属性,
首先得选择标头对象, 选择标头对象的方法
与选择列对象的方法类似 。
Caption属性,指定标头对象的标题文本, 显
示于列顶部 。 默认为对应字段的字段名 。
Alignment属性:指定标题文本在对象中显示
的对齐方式。
目录
上一页
下一页
退出
81
5) 调整表格的行高和列宽
一旦指定了表格的列的具体数目, 就可以有两
种方法来调整表格的行高和列宽 。
① 设置表格的 HeaderHeight和 RowHeight属性调整
行高;设置列对象的 Width属性调整列宽 。
② 让表格处于编辑状态下,将鼠标指针置于表格
两列的标头之间,这时,鼠标指针变为水平双
箭头的形状,拖动鼠标,调整列至所需要的宽
度;将鼠标置于表格左侧的第一个按钮和第二
个按钮之间,这时,鼠标指针变成垂直双箭头
的形状,拖动鼠标,调整行至所需要的高度。
目录
上一页
下一页
退出
82
6) 使用表格生成器设计表格
用鼠标左键右击表格,在弹出的快捷菜单中选择【生
成器】命令,打开“表格生成器”对话框,如图所示。
“表格项”选项卡:
用于设置表格内显示
字段
“样式”选项卡:
指定表格的样式
“布局”选项卡:调整行高、列宽;
设置列标题;选择控件类型
“关系”选项卡:
设置一个一对多关
系,指明父表中的
关键字段与子表中
的相关索引
83
页面控件
Pagecount,指定一个页框对象包含的页对象的数量。
Pages,属性 存取页框中的某个页对象。
Tabs,是否显示页面标签。
Tabstretch,页面标题显示属性( 0,1)。
Activepage,返回页框中活动的页号。
84