清华大学出版社 TSINGHUA UNIVERSITY PRESS 第8章表单高级设计
第8章 表单高级设计
清华大学出版社 TSINGHUA UNIVERSITY PRESS 81多表单应用程序 应用程序界面 单文档界面与多文档界面 顶层表单与子表单 非浮动表单和浮动表单 调用子表单: DO FORM命令 表单属性 属性值 功能 ShowWindow o 本表单作为VFP主窗口的子表单 本表单作为顶层表单的子表单 本表单作为顶层表单显示在桌面上 Desktop TF 子表单浮动 子表单不浮动 Visible T.(默认)表单是可见 表单不可见
应用程序界面 单文档界面与多文档界面 顶层表单与子表单 非浮动表单和浮动表单 调用子表单:DO FORM命令 表单属性 属性值 功能 ShowWindow 0 本表单作为VFP主窗口的子表单 1 本表单作为顶层表单的子表单 2 本表单作为顶层表单显示在桌面上 Desktop .T. 子表单浮动 .F. 子表单不浮动 Visible .T. (默认) 表单是可见 .F. 表单不可见 8.1 多表单应用程序
清华大学出版社 TSINGHUA UNIVERSITY PRESS [例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。 第1页 名称 启用日期:0305/990 部门:21 价格 6204461 是否主要设备 从光华仪表厂用 两标: 请输入记录号:「1 确定 下页」上页」退出查页 图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 开出子窗口来指定记录
清华大学出版社 TSINGHUA UNIVERSITY PRESS (5)在 Forml(SBD1.SCX)的Init事件代码中增加公共变量jh: PUBLIC yh, mc(10, 1), jlh &&公共变量jh用来表示记录号 COPY T0 aRRAY mC Fields sb.名称&&保持原样 &保持原样 (6) Forml(SBBD.SCX)中 Command1的 Click事件代码编写如下: DO FORM sbbd2 &&调用子表单 Go jIh &记录指针指向在子表单中指定的记录 THISFORM. Refresh &&父表单更新 (7) Forml(SBD2.SCX)中 Commandl的 Click事件代码编写如下: jh= THISFORM. TextI. Value&文本框值赋给公共变量(可事先在文本框中键入一个数) THISFORM. Release &&释放Form1(SBBD2.SCX) (8) Forml(SBBD1SCX)的 UNload事件代码编写如下: release ilh &&清除公共变量jh,程序运行结束公共变量不会自动清除 表81“查页”属性设置 表单文件对象属性 属性值 说明 SBBD1. SCX Form1 ShowWindow 本表单作为顶层表单显示在桌面上 Command1 Caption 查页 SBBD2. SCX Form1 Caption 输入 ShowWindow 1 本表单作为顶层表单的子表单 Labell Caption 请输入记录号 Text1 Value 供键入记录号,设置初值1 Command1 Caption 确定
(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 “查页”属性设置
学出版社 表单集 TSINGHUA UNIVERSITY PRESS 使用表单集的优点 表单集的创建与删除 表单集的编辑 例8-3]用表单集来实现查看设备大修情况。 (1)从例7-13产生的表单文件BG.SCK复制出 BDJ SCX,并使后者打开,表单设计器窗口中将会显示“SB表编辑” 表单窗口。 (2)为表单文件 BDJ SCX创建表单集:选定表单菜单的创建表单集命令。 (3)向表单集添加表单:选定表单菜单的添加新表单命令,表单设计器窗口中就会出现Form2表单窗口 4)在数据环境中添加D表,并将SB表与D表按编号关联起来。 5)将数据环境中D窗口的标题栏拖放到Form2表单窗口,该表单中就会产生一个关于大修的表格。 (6)将Fomm2表单的 Caption属性值改为“大修情况”。 编号名称主要设备口 016-2车床 □偏号年月费用 037-2950662044 7-2磨床 01微机 P1n-1新本 图83查看设备大修情况
表单集 使用表单集的优点 表单集的创建与删除 表单集的编辑 [例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…T0命令 用户定义方法程序 创建:表单菜单中选定“新建方法程序”命令 过程代码的编辑 调用基本格式为: THISFORMSET.方法程序名
8.2 用户定义属性与方法程序 用户定义属性 变量属性 创建:打开表单设计器后,选定表单菜单的新建属性 作用域:对表单集中的所有表单都有效 引用格式:THISFORMSET.变量属性名 数组属性 多表单应用程序的有效参数 用PUBLIC设置的公共变量 用户在表单集中自定义的属性 父表单与子表单间的参数传递:DO FORM … WITH …TO命令 用户定义方法程序 创建:表单菜单中选定“新建方法程序”命令 过程代码的编辑 调用基本格式为:THISFORMSET.方法程序名
清华大学出版社 TSINGHUA UNIVERSITY PRESS 83类 类的概念 类( class)与对象( object) 基类( base class) 子类( subclass) 用户定义类( user-defined class) 容器类( container classes)和控件类( control classes 类库( class library) 类的特征 封装特征 子类特征 继承性特征 用户定义类 类的创建 将类添加到工具栏 类的编辑
8.3 类 类的概念 类(class)与对象(object) 基类(base class) 子类(subclass) 用户定义类(user-defined class) 容器类(container classes)和控件类(control classes) 类库(class library) 类的特征 封装特征 子类特征 继承性特征 用户定义类 类的创建 将类添加到工具栏 类的编辑
清华大学出版 [例8-7创建一个带有确认功能的《“退由按钮”类 (1)从 CommandBut ton基类新建子类:选定文件菜单的新建命令□在新建对话框中选定“类”选项 按钮,然后选定新建文件按钮在如图8.7所示新建类对话框的类名文本框中键入类名:退出按钮;在 派生于”下拉列表框中选定基类 CommandButton;在“存储于”文本框中键入类库的名字:用户控件 ¤选定确定按钮关闭对话框 (2)在类设计器中为“退出按钮”类设置属性与事件:新建类对话框关闭后,随即会弹出一个类设 计器窗口(参阅图8.8)。类设计器窗口内显示一个“退出按钮”窗口,这就是“退出按钮”类;“退出 按钮”窗口中有一个“ Command1”按钮(在图8.8中 Commandl已改作退出两个字),这是类的实例的模样。 在属性窗口中将“退出按钮”类的 Caption属性由 Command改为“退出”,这将使按钮上显示“退出” 两个字(见图8.8)。 双击“退出按钮”窗口内部来打开代码窗口,然后为 Click事件键入如下代码: IF MESSAGEBOX("一定要退出吗?”,4+48,“"请确认")=6 &&信息框包含“是”和“否”按钮,图标显示惊叹号,按“是”按钮返回数值6 THISFORM. Release CLEAR EVENTS&&停止处理事件(参阅10.1节第三点) ENDIF (3)关闭类设计器窗口。 类名 生于田) dUtton 来游于 存储于):用户控 图8.7新建类对话框
[例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 新建类对话框
清华大学出版社 TSINGHUA UNIVERSITY PRESS 巴屈性一用户签件x出教钮回 类设计器-用户控件vexO出按钮) 退出按钮 □退出按钮 退出 全部|数据方法程序布局其他 x田 「 AddProperty[默认过程 Autosize 假认值 BaseClass Comm andbutton Cancel F.-假默认值 退出按钮C1ck Caption 对象B) 退出按钮 过程 lass 出安 ClassLibrary c:|Vx芦件vcx IF MESSAGI(一定要退出吗?“,4+48,“请确认")=6 C1 i ck Event默认过程] THISFORM. Release CLEAR EVENTS ENDIF 指定对象标题文本。 图88类设计器
图8.8 类设计器
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例8-8]试将例8-7创建的“退出按钮”类添加到表单控件工具栏中。 打开任一表单(参阅图8.10)—一选定表单控件工具栏的查看类按钮一一在弹 出菜单中选定添加命令一一在如图8.9所示的打开对话框列表中选定可视类库文 件:用户控件.VCX一一选定确定按钮关闭对话框,表单控件工具栏中就会包含一 个“退出按钮”。 打开 搜索①):「v 表单设计器-文档1区 □Data 口dbf mEnu Form1口区 口 Forms 表单控件 Graphi □Help 新建文件夹 口 Include 画用尸控件vCX 大谶回回 文件名:用尸控件x 文件类型():同视类库(vex) Activex控件 厂以只读方式打开0B 帮助 √用户控件 厂独占吧 图810表单控件工具栏右端的按钮就是 图89选定一个“可视类库”文 退出按钮”类 件
[例8-8] 试将例8-7创建的“退出按钮”类添加到表单控件工具栏中。 打开任一表单(参阅图8.10)——选定表单控件工具栏的查看类按钮——在弹 出菜单中选定添加命令——在如图8.9所示的打开对话框列表中选定可视类库文 件:用户控件.VCX——选定确定按钮关闭对话框,表单控件工具栏中就会包含一 个“退出按钮”。 图8.9 选定一个“可视类库”文 件 图8.10 表单控件工具栏右端的按钮就是 退出按钮”类