在FoxPro中,如果从网格中的按钮调用表单,为什么选择表在表单内更改?

时间:2015-11-09 15:37:53

标签: visual-foxpro foxpro

我有一个名为货运的表格的主表格 此货运表单将所有属性设置为默认值,但标题,名称和窗口类型除外,即1-Modal。 代码的唯一方法是init:

select FRT1

表单上唯一的对象是一个命令按钮,在click方法中使用它:

messagebox(alias())
thisform.release()

所以我希望当我按下命令按钮时,消息框会说[FRT1],但它会从主表单中提供另一个别名。

在从主表单调用表单之前,别名也显式设置为FRT1

select FRT1
do form freight

由于Freight表单是模态的,因此我希望在Master表单运行时,主表单中没有任何内容会影响数据区域。

由于运费表格中几乎没有任何内容,因此问题似乎是主表格。

如果从网格内的按钮调用运费表单,则此错误行为似乎只会发生。关于正在发生的事情或如何预防的任何想法?

2 个答案:

答案 0 :(得分:2)

在被调用表格(通常是网格)上是否有任何控件可以获得焦点,从而隐含地导致对当前工作区域的更改?

顺便说一下,我建议使用私有数据会话并保持每个会话分开。

答案 1 :(得分:1)

只是一些想法。

我会打开你的调试器并放一个

SET STEP ON

之前

SELECT FRT1
DO FORM FREIGHT

然后,在调试器中,转到“监视”窗口并输入值

ALIAS()

作为要观察的值和左栏中的单击以显示红点在更改时停止。

只是想到了期待。您的“运费”表单将其“DataSession”属性设置为“1-Default data session”,如果是,则查看DEFAULT会话中的任何别名,而不是您的主表单可能具有的私有数据会话...

我见过这个极其罕见的案例(25年来曾与FoxBase,FoxPro,VFP合作过2次)。在这些情况下,我不得不明确地连续选择TWICE表。

SELECT FRT1
SELECT FRT1

甚至在诸如

之间加入虚假陈述
SELECT FRT1
tmpXXXXXX = alias()
SELECT FRT1

检查断点并查看是否有效。

我只能尝试其他一个断点...将“PROGRAM()”放入监视窗口。是否可能调用一些您不知道的其他派生类脚本...或者在运行代码的表单的“DataEnvironment”中,例如在“BeforeOpenTables”事件中?最好知道它的做法而不是绕过