English 中文(简体)
在 vfp 中的模型窗体之间切换
原标题:switching between modeless forms in vfp

我在 vfp 中创建了一个模型, 并将显示窗口属性设置为 0- in 屏幕 。 我将显示窗口属性设置为 0- in 屏幕 。 我将显示窗口属性设置为 0- in 屏幕 。 我将显示窗口属性设置为 DO 窗体 2 。 表格2 又是一个模型形式, 显示窗口属性设置为 0- in 屏幕 。 我运行了第一个窗体, 并单击了该按钮 。 第二个窗体出现 。 问题是, 除非先关闭第二个窗体, 否则我无法设置焦点/ 激活第一个窗体 。 如果是, 为什么? 是否为这种情况做任何工作?

事实上,我的假想比较复杂一点。 i open form1. 如果我单击一个表单中的按钮, 表格2就会出现。 两种表单都在 _ 屏幕中。 如果我单击表单中的另外一个按钮, 表格3 会出现, 在表单中出现。 我当然希望这是可能的 。 ) @ info: tooltip

谢谢你帮我

问题回答

您可能遇到的只是两个窗口的大小相同(或表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, 城市等, 并保存它。 现在, 您想要一张发票, 上面有船到船和账单。 您可以使用同一格式的相同“ 附加” 容器类的两个例子。 它们看起来和操作相同, 您只需将“ 控制源” 绑在相应的字段中 。

通过这样做,您也可以使用“ 标签页”, 并建立一个包含所有与一个“ 页面” 有关的东西的容器。 然后将这个容器放在页面上, 而不是以单一的形式单独控制全部... 需要更多时间, 但下游管理也可以带来好处 。

if u have two forms modedeless u can try make one app with the second form with a prg to intermediate the paremeter statement. sample:** in ther first form method to call second:**

LOCAL  cvar

cvar="F_"+ALLTRIM(TRANSFORM(SYS(3)))

PUBLIC &cvar

&cvar=THISFORM && instance the first form in a public var (dont forget relese this in unload methode)

DO secondform.app WITH cvar

thisform.hide

以第二表单形式 < 坚固 > :

PARAMETERS xparform

IF PARAMETERS() = 1

      DO FORM secondform WITH xparform

   endif 

<强 > 以第二种形式出现。

为包含参数而创建的属性

Initit 方法 :

PARAMETERS xparsecod

IF PARAMETERS() > 0

    IF PARAMETERS() = 1

     thisform.formfirst=xparsecod

   endif

endif 

卸载时 <强 > :

IF !EMPTY(thisform.formfirst)

    LOCAL cprince,oprince

    cprince=ALLTRIM(thisform.formfirst)

    oprince=&cprince && instanciate the firsform object

    IF TYPE("oprince")=="O"

       oprince.show && show the first form 

       oprince=null

    ENDIF 

ENDIF        
thisform.Release

this force the second form to show the firsrt form after done dont forget to release the public var

< strong> 尝试一些类似 :

if type("namevar") <> "U"

   namevar=null

   release namevar

endif 




相关问题
Data transfer via the system keyboard buffer? (VFP9)

Using a Visual FoxPro 9 executable file, (EXE), I need to be able to place data into the system keyboard buffer which is then to be picked up by another program, (non-FoxPro). I ve already tried using ...

iPhone ARMv6 VFP asm latency, throughput and hazards

in this document: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301g/DDI0301G_arm1176jzfs_r0p7_trm.pdf on page 21-25 (pdf page 875) the througput and latency timings are given for the assembly ...

Assembly: convert floatingpointvalue to signed byte

I currently try to write a program for the VFP unit of the iPhone using ARM assembly code. The VFP can do floatingpoint calculations, but AFAIK no integer arithmetic. However, it can convert a float ...

retrieve FoxPro 7.0 database schema

I need to obtain a list of tables in a Visual Fox Pro database. (7.0) This is what I m doing.... but it s not working or I m not doing it right... DataFactory dataFactory = new DataFactory(); ...

Corp IT Systems direction. Invest in A or B?

This is more of a general question about which direction would be a better investment for the company. Our company s core business application is written in Visual FoxPro and is about 9+ years old. ...

热门标签