第 8章 表单高级设计应用程序界面单文档界面与多文档界面顶层表单与子表单非浮动表单和浮动表单调用子表单,DO FORM命令表单属性 属性值 功能
ShowWindow 0 本表单作为 VFP主窗口的子表单
1 本表单作为顶层表单的子表单
2 本表单作为顶层表单显示在桌面上
Desktop,T,子表单浮动
.F,子表单不浮动
Visible,T,(默认 ) 表单是可见
.F,表单不可见
8.1 多表单应用程序
[例 8-1] 为例 7-10设计的表单增加一个查页命令按钮,要求单击它能打开一个供用户输入记录号的窗口,如图 8.1所示。当指定记录号并单击确定按钮后,新打开的窗口随即关闭,原表单也立即更新记录显示。
(1) 从例 7-10的表单文件 SBXG.SCX复制出 SBBD1.SCX,并将后者打开。
(2) 在 SBBD1.SCX的表单窗口 Form1中增加命令按钮 Command1。
(3) 创建表单文件 SBBD2.SCX,并在其表单窗口 Form1中创建标签、文本框各 1个。
(4) 属性设置:见表 8.1。
图 8.1 开出子窗口来指定记录
(5) 在 Form1(SBBD1.SCX)的 Init事件代码中增加公共变量 jlh:
PUBLIC yh,mc(10,1),jlh && 公共变量 jlh用来表示记录号
COPY TO ARRAY mc FIELDS sb.名称 && 保持原样
GO 1 && 保持原样
(6) Form1(SBBD1.SCX)中 Command1的 Click事件代码编写如下:
DO FORM sbbd2 && 调用子表单
GO jlh && 记录指针指向在子表单中指定的记录
THISFORM.Refresh && 父表单更新
(7) Form1(SBBD2.SCX)中 Command1的 Click事件代码编写如下:
jlh=THISFORM.Text1.Value && 文本框值赋给公共变量 (可事先在文本框中键入一个数 )
THISFORM.Release && 释放 Form1(SBBD2.SCX)
(8) Form1(SBBD1.SCX)的 Unload事件代码编写如下:
RELEASE jlh && 清除公共变量 jlh,程序运行结束公共变量不会自动清除表单文件 对 象 属 性 属性值 说 明
SBBD1.SCX Form1 ShowWindow 2 本表单作为顶层表单显示在桌面上
Command1 Caption 查页
SBBD2.SCX Form1 Caption 输入
ShowWindow 1 本表单作为顶层表单的子表单
Label1 Caption 请输入记录号:
Text1 Value 1 供键入记录号,设置初值 1
Command1 Caption 确定表 8.1,查页,属性设置表单集使用表单集的优点表单集的创建与删除表单集的编辑
[例 8-3] 用表单集来实现查看设备大修情况。
(1) 从例 7-13产生的表单文件 BG.SCX复制出 BDJ.SCX,并使后者打开,表单设计器窗口中将会显示,SB表编辑”
表单窗口。
(2) 为表单文件 BDJ.SCX创建表单集:选定表单菜单的创建表单集命令。
(3) 向表单集添加表单:选定表单菜单的添加新表单命令,表单设计器窗口中就会出现 Form2表单窗口。
(4) 在数据环境中添加 DX表,并将 SB表与 DX表按编号关联起来。
(5) 将数据环境中 DX窗口的标题栏拖放到 Form2表单窗口,该表单中就会产生一个关于大修的表格。
(6) 将 Form2表单的 Caption属性值改为“大修情况”。
图 8.3 查看设备大修情况
8.2 用户定义属性与方法程序用户定义属性变量属性创建:打开表单设计器后,选定表单菜单的新建属性作用域:对表单集中的所有表单都有效引用格式,THISFORMSET.变量属性名数组属性多表单应用程序的有效参数用 PUBLIC设置的公共变量用户在表单集中自定义的属性父表单与子表单间的参数传递,DO FORM? WITH?TO 命令用户定义方法程序创建:表单菜单中选定“新建方法程序”命令过程代码的编辑调用基本格式为,THISFORMSET.方法程序名
8.3 类类的概念类( class)与对象( object)
基类( base class)
子类( subclass)
用户定义类( user-defined class)
容器类 (container classes)和控件类 (control classes)
类库( class library)
类的特征封装特征子类特征继承性特征用户定义类类的创建将类添加到工具栏类的编辑
[例 8-7] 创建一个带有确认功能的“退出按钮”类。
(1) 从 CommandButton基类新建子类:选定文件菜单的新建命令?在新建对话框中选定“类”选项按钮,然后选定新建文件按钮?在如图 8.7所示新建类对话框的类名文本框中键入类名:退出按钮;在
“派生于”下拉列表框中选定基类 CommandButton;在“存储于”文本框中键入类库的名字:用户控件
选定确定按钮关闭对话框。
(2) 在类设计器中为“退出按钮”类设置属性与事件,新建类对话框关闭后,随即会弹出一个类设计器窗口 (参阅图 8.8)。类设计器窗口内显示一个“退出按钮” 窗口,这就是“退出按钮”类;“退出按钮” 窗口中有一个,Command1” 按钮 (在图 8.8中 Command1已改作退出两个字 ),这是类的实例的模样。
在属性窗口中将“退出按钮” 类的 Caption 属性由 Command1改为“退出”,这将使按钮上显示“退出”
两个字 (见图 8.8)。
双击“退出按钮”窗口内部来打开代码窗口,然后为 Click事件键入如下代码,
IF MESSAGEBOX("一定要退出吗?",4+48,"请确认 ")=6
&& 信息框包含“是”和“否”按钮,图标显示惊叹号,按“是”按钮返回数值 6
THISFORM.Release
CLEAR EVENTS && 停止处理事件 (参阅 10.1节第三点 )
ENDIF
(3) 关闭类设计器窗口。
图 8.7 新建类对话框图 8.8 类设计器
[例 8-8] 试将例 8-7创建的“退出按钮”类添加到表单控件工具栏中。
打开任一表单 (参阅图 8.10)—— 选定表单控件工具栏的查看类按钮 —— 在弹出菜单中选定添加命令 —— 在如图 8.9所示的打开对话框列表中选定可视类库文件:用户控件,VCX—— 选定确定按钮关闭对话框,表单控件工具栏中就会包含一个“退出按钮”。
图 8.9 选定一个,可视类库,文件图 8.10 表单控件工具栏 右端的按钮就是退出按钮,类用户定义工具栏
(1) 从 Toolbar基类创建一个自定义工具栏类,并为它设置功能。
(2) 在表单控件工具栏中添加一个代表该自定义工具栏的按钮。
(3) 在表单集中创建该自定义工具栏。
8.4 表单 /表单集设计实例组合查询实用程序
“封面”表单集示例
C o m b o 3 C o m b o 4
C o m b o 6 C o m b o 7
图 8.15 组合查询实用程序表单窗口图 8.18,封面与密码输入,表单集设计窗口