一、表单集
1
.表单集的创建和删除
(1)于表单集
表单集是一个包含一个或多个表单的父层次的容器。可以将多个表单包含在一个表单集中,作为一组处理。表单集及其中所有表单都存储在一个单个的
.scx
文件中,使用同一个数据环境,只要经过适当关联,就能使某一表单中的记录指针改变时,另一个表单中所用到的记录指针也被更新。表单集属单文档界面(
SDI
)。
(2)创建表单集
可按如下步骤创建表单集:
⑴创建一个表单,并打开“表单设计器”;
⑵从“表单”菜单中,选择“创建表单集”选项,即可创建表单集。
假定已创建一个表单
Form1
,选择“表单”菜单中“创建表单集”后,表单集并没显示在窗口中,此时打开属性窗口的对象列表,会看到多了一个对象
Formset1
,它就是刚创建的表单集。并且看到
Formset1
处于最上层,它包含
Form1
,表明是父层次的容器。
(3)删除表单集
如果表单集中只有一个表单,则可删除表单集而只剩下表单,否则不可删除表单集。方法是:从“表单”菜单中选择“移除表单集”即可删除表单集。
2
. 编辑使用表单集
创建了表单集以后,可使用表单集中的对象,在表单集中添加新表单或删除其中的表单。
(1)向表单集中添加新表单
从“表单”菜单中,选择“添加新表单”,即可在表单集中添加一个新表单。
(2)从表单集中删除表单
⑴
在“表单设计器”的“属性”窗口中的对象列表框中,选择要删除的表单。
⑵
从“表单”菜单中选择“移除表单”,即可从表单集中删除该表单。
(3)使用表单集中的对象
⑴表单集中的表单的隐藏和显示
在设计时,可以设置表单集中各个表单的
Visible
属性,来控制运行时显示或隐藏表单集中的表单。当表单的
Visible=.T.
时,对应表单显示;当表单的
Visible
=
.F.
时,对应表单不显示。也可使用
Hide
和
Show
方法程序来隐藏和显示表单,
Thisform.Hide
和
Thisform.Visible
=
.F
.
效果相同,而
Thisform .Show
和
Thisform. Visible
=
.T.
效果相同。
⑵表单集中对象的引用
在表单集中,对象的层次关系是表单集、表单、表单中的对象。例如,引用表单集
Formset1
中的表单
Form2
的
Visible
属性,代码行如下:
Thisformset.Form2.Visible
=
.T.
引用表单集
Formset1
中的表单
Form1
中的控件
Text 1
的
Value
属性,代码行如下:
Thisformset.Form1.Text1.Value
=”
这是表单集中表单1的文本框对象的值”
4
、释放表单集
释放表单集
和释放表单的方法一样,用
Release
属性或方法。例如
Thisformset.Release
或
Release Thisformset
都
可释放表单集
。
二、多文档界面
我们熟悉的Microsoft Word,Microsoft Excel等应用程序,运行后,本身具有一个窗口(表单),而后每建立或打开一个文档、电子表格时,将在应用程序的窗口内另外打开一个窗口(表单),像这样的应用程序界面称为多文档界面(Multiple Document Interface,MDI)。
1
. 三种表单类型
在MDI中,我们把应用程序所在的表单称为父表单,把文档、电子表格所在的表单称为子表单。另外还可以定义浮动表单。
(1)顶层表单
没有父表单的独立表单称为顶层表单。顶层表单用作SDI,也可用作MDI 应用程序中其他子表单的父表单。顶层表单与其他 Windows 应用程序同级,可出现在其前台或后台,并且显示在 Windows 任务栏中。
(2)子表单
子表单
包含在另一个窗口中,用于创建 MDI 应用程序的表单。子表单不可移至父表单(主表单)边界之外,当其最小化时将显示在父表单的底部。若父表单最小化,则子表单也一同最小化。
要创建MDI应用程序,首先创建一个顶层表单,作为应用程序的主窗口,需要时再创建子表单,在子表单中创建其他对象。
(3)浮动表单
属于父表单(主表单)的一部分,但并不是包含在父表单中。而且,浮动表单可以被移至屏幕的任何位置,但不能在父窗口后台移动。若将浮动表单最小化时,它将显示在桌面的底部。同子表单一样(其实,浮动表单是由子表单变化而来),若父表单最小化,则浮动表单也一同最小化。
浮动表单是创建SDI的又一种方法。一般情况下,先创建一个顶层表单,作为应用程序的主窗口,需要时再创建浮动表单,用于显示对话框(如打开文件的对话框)或消息框等。
浮动表单也可用于创建 MDI 应用程序。
有些应用程序综合了 SDI 和 MDI 的特性。如在VFP的集成环境中,其主窗口是一个顶层表单,命令窗口、各种设计器等是子表单,“新建”、“打开”、“保存”等对话框是浮动表单。
顶层表单、子表单、浮动表单均作为一个单独的文件(.scx)存储,应用程序首先执行顶层表单,需要时,用Do Form命令运行子表单或浮动表单。
2
.指定表单类型
创建各种类型表单的方法是相同的,只需设置ShowWindow属性即可。
ShowWindow
属性指定表单类型或表单显示的位置。其设置含义如下表
ShowWindow
属性的值
|
含义
|
解释
|
0
|
在屏幕中 (默认)
|
子表单的父表单是 VFP主窗口
|
1
|
在顶层表单中
|
当子窗口显示时,子表单的父表单是活动的顶层表单。如果希望子窗口出现在顶层表单窗口内,而不是出现在 VFP主窗口内时,可选用该项设置。
|
2
|
作为顶层表单
|
没有父表单的独立表单,与其他Windows 应用程序同级
|
(1)指定顶层表单
创建有关表单,设置该表单的ShowWindow属性为“2 - 作为顶层表单”即可。
(2)指定子表单
创建一个表单,设置该表单的ShowWindow属性为“0 - 在屏幕中 (默认)”或“1 - 在顶层表单中”即可。
如果设为“0 - 在屏幕中 (默认)”,子表单的父表单将为 VFP主窗口。如果设为“1 - 在顶层表单中”,子表单的父表单是活动的顶层表单,而不是出现在 VFP主窗口内时。
如果希望子表单最大化时与父表单组合成一体,并共享父表单的标题栏、标题、菜单以及工具栏,可设置表单的MDIForm属性为“.T.”;如果希望子表单最大化时仍保留为一独立的窗口,则表单的MDIForm 属性为“.F.”。
(3)指定浮动表单
浮动表单是由子表单变化而来,因而要创建一个浮动表单,也要设置该表单的ShowWindow属性为“0 - 在屏幕中 (默认)”或“1 - 在顶层表单中”。
另外,若要使子表单浮动,还要将其Desktop属性设置为“.T.”, 当Desktop属性设置为“.F.(默认值)”,表单不能浮动。
(4)隐藏VFP主窗口
在运行顶层表单时,可能不希望VFP主窗口是可视的,可设置应用程序对象(Application)的 Visible属性来隐藏VFP主窗口。例如,在表单的 InIt事件中,包含下列代码行:
Application.Visible = .F.
在表单的 Destroy事件中,包含下列代码行可显示VFP主窗口:
Application.Visible = .T.
也可以在配置文件中包含以下行,用以隐藏VFP主窗口。
Screen = Off
如设为ON,则显示VFP主窗口。
(5)在顶层表单中添加菜单
创建顶层表单的菜单。有关创建顶层表单菜单的详细内容,请参阅第11章“菜单与工具栏设计”。
将表单的ShowWindow属性设置为“2 - 作为顶层表单”。
在表单的 InIt 事件中,运行菜单程序并传递两个参数:
DO menuname.mpr WITH oForm, lAutoRename
oForm
是对表单的对象引用。在表单的 InIt 事件中,THIS 作为第一个参数进行传递。
IAutoRename
指定了是否为菜单取一个新的唯一的名字。如果计划运行表单的多个实例,则将.T. 传递给 IAutoRename。