一、表单集<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.表单集的创建和删除

1)于表单集

表单集是一个包含一个或多个表单的父层次的容器。可以将多个表单包含在一个表单集中,作为一组处理。表单集及其中所有表单都存储在一个单个的.scx 文件中,使用同一个数据环境,只要经过适当关联,就能使某一表单中的记录指针改变时,另一个表单中所用到的记录指针也被更新。表单集属单文档界面(SDI)。

2)创建表单集

可按如下步骤创建表单集:

⑴创建一个表单,并打开表单设计器

⑵从表单菜单中,选择创建表单集选项,即可创建表单集。

假定已创建一个表单Form1,选择表单菜单中创建表单集后,表单集并没显示在窗口中,此时打开属性窗口的对象列表,会看到多了一个对象Formset1,它就是刚创建的表单集。并且看到Formset1处于最上层,它包含Form1,表明是父层次的容器。

3)删除表单集

如果表单集中只有一个表单,则可删除表单集而只剩下表单,否则不可删除表单集。方法是:从表单菜单中选择移除表单集即可删除表单集。

2. 编辑使用表单集

创建了表单集以后,可使用表单集中的对象,在表单集中添加新表单或删除其中的表单。

1)向表单集中添加新表单

表单菜单中,选择添加新表单,即可在表单集中添加一个新表单。

2)从表单集中删除表单

表单设计器属性窗口中的对象列表框中,选择要删除的表单。

表单菜单中选择移除表单,即可从表单集中删除该表单。

3)使用表单集中的对象

⑴表单集中的表单的隐藏和显示

在设计时,可以设置表单集中各个表单的Visible属性,来控制运行时显示或隐藏表单集中的表单。当表单的Visible=.T.时,对应表单显示;当表单的Visible.F.时,对应表单不显示。也可使用HideShow方法程序来隐藏和显示表单,Thisform.Hide Thisform.Visible.F.效果相同,而Thisform .ShowThisform. Visible.T. 效果相同。

⑵表单集中对象的引用

在表单集中,对象的层次关系是表单集、表单、表单中的对象。例如,引用表单集Formset1中的表单Form2Visible属性,代码行如下:

Thisformset.Form2.Visible.T.
引用表单集Formset1中的表单Form1中的控件Text 1Value属性,代码行如下:

Thisformset.Form1.Text1.Value=”这是表单集中表单1的文本框对象的值

4、释放表单集

释放表单集和释放表单的方法一样,用Release属性或方法。例如Thisformset.ReleaseRelease  Thisformset可释放表单集

二、多文档界面

我们熟悉的Microsoft WordMicrosoft Excel等应用程序,运行后,本身具有一个窗口(表单),而后每建立或打开一个文档、电子表格时,将在应用程序的窗口内另外打开一个窗口(表单),像这样的应用程序界面称为多文档界面(Multiple Document InterfaceMDI)。

1 . 三种表单类型

MDI中,我们把应用程序所在的表单称为父表单,把文档、电子表格所在的表单称为子表单。另外还可以定义浮动表单。

1)顶层表单

没有父表单的独立表单称为顶层表单。顶层表单用作SDI,也可用作MDI 应用程序中其他子表单的父表单。顶层表单与其他 Windows 应用程序同级,可出现在其前台或后台,并且显示在 Windows 任务栏中。

2)子表单

子表单 包含在另一个窗口中,用于创建 MDI 应用程序的表单。子表单不可移至父表单(主表单)边界之外,当其最小化时将显示在父表单的底部。若父表单最小化,则子表单也一同最小化。

要创建MDI应用程序,首先创建一个顶层表单,作为应用程序的主窗口,需要时再创建子表单,在子表单中创建其他对象。

3)浮动表单

属于父表单(主表单)的一部分,但并不是包含在父表单中。而且,浮动表单可以被移至屏幕的任何位置,但不能在父窗口后台移动。若将浮动表单最小化时,它将显示在桌面的底部。同子表单一样(其实,浮动表单是由子表单变化而来),若父表单最小化,则浮动表单也一同最小化。

浮动表单是创建SDI的又一种方法。一般情况下,先创建一个顶层表单,作为应用程序的主窗口,需要时再创建浮动表单,用于显示对话框(如打开文件的对话框)或消息框等。

浮动表单也可用于创建 MDI 应用程序。

有些应用程序综合了 SDI MDI 的特性。如在VFP的集成环境中,其主窗口是一个顶层表单,命令窗口、各种设计器等是子表单,“新建”、“打开”、“保存”等对话框是浮动表单。

顶层表单、子表单、浮动表单均作为一个单独的文件(.scx)存储,应用程序首先执行顶层表单,需要时,用Do Form命令运行子表单或浮动表单。

2 .指定表单类型

创建各种类型表单的方法是相同的,只需设置ShowWindow属性即可。

ShowWindow 属性指定表单类型或表单显示的位置。其设置含义如下表<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /> 10.2.1

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