您可能遇到的只是两个窗口的大小相同(或表2更大),而体积重叠的表1...除非两种窗体都设定为采用全屏查看区域的最大化模式。
也就是说,默认情况下,当 VFP 运行一个表格时, 它基本上有一个与您的表格名称相关的变量名称..., 即 : “ 表格1 ” 和 “ 表格2 ”, 如果这些是您实际表格的名称( 我怀疑, 但可能是为了测试目的) 。
所以,现在您正在运行您的样本, 表格 1 显示, 单击按钮, 显示表 2 。 您可以在表 2 上有一个按钮, 如“ 返回到表 1 ” (而不是重新运行表1 的示例 ) 。 如果单击, 您可以在表格 2 上做以下操作 。
if wexist( "form1" )
activate window form1
endif
类似地,在您的主形式中,如果您想要再次返回到表 2, 但不想重新创建已经打开的第二例, 您可以拥有这样的代码, 比如
if wexist( "form2" )
*/ Show the already loaded form
activate window form2
else
*/ Not loaded yet, do so now
do form form2
endif
至于在另一种形式中显示一种形式, 你可以, 但是它们有时会有点痛苦, 只是有些会习惯... 它们被称为“ 格式 ” 。 要这样做, 您基本上正在将所有形式预建成一个整体的“ 格式 ” 。 开始以创建一个单一的形式 。 然后, 从“ FORM” 菜单项中单击菜单选项到“ 创建窗体 ” 。 它将为您创建一个父窗体“ 格式” 级别, 并将窗体本身移动到儿童位置 。 然后, 从“ FORM” 菜单中, 您可以选择“ 添加新形式 ”, 并添加您需要的更多 。 注意, 这样做时, 它会构建所有的形式, 而不是仅仅基于您做一个“ 格式” 明确要求来启动下一个窗体 。 您可以设置每个窗口的标题, 移动它们的物理位置, 等... 保存并运行窗体... 。 然后您可以显示/ 隐藏您需要的..., 但是再次, 容易 。
您还可以尝试与“ 容器” 一起工作, 并建造自己的类库。 容器只不过是一个控制器, 它可以有其他控制器。 好处是您可以一次性地建造它, 并且使用它作为形式的一部分, 或者按需要的多种形式使用它, 而不必一直调用同样的第一种形式。 例如, 地址信息的容器。 您可能拥有一个 公司的标签/ 文本框, 地址1, 地址2, 地址2, 城市等, 并保存它。 现在, 您想要一张发票, 上面有船到船和账单。 您可以使用同一格式的相同“ 附加” 容器类的两个例子。 它们看起来和操作相同, 您只需将“ 控制源” 绑在相应的字段中 。
通过这样做,您也可以使用“ 标签页”, 并建立一个包含所有与一个“ 页面” 有关的东西的容器。 然后将这个容器放在页面上, 而不是以单一的形式单独控制全部... 需要更多时间, 但下游管理也可以带来好处 。