我有一个名为货运的表格的主表格 此货运表单将所有属性设置为默认值,但标题,名称和窗口类型除外,即1-Modal。 代码的唯一方法是init:
select FRT1
表单上唯一的对象是一个命令按钮,在click方法中使用它:
messagebox(alias())
thisform.release()
所以我希望当我按下命令按钮时,消息框会说[FRT1],但它会从主表单中提供另一个别名。
在从主表单调用表单之前,别名也显式设置为FRT1
select FRT1
do form freight
由于Freight表单是模态的,因此我希望在Master表单运行时,主表单中没有任何内容会影响数据区域。
由于运费表格中几乎没有任何内容,因此问题似乎是主表格。
如果从网格内的按钮调用运费表单,则此错误行为似乎只会发生。关于正在发生的事情或如何预防的任何想法?
答案 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”事件中?最好知道它的做法而不是绕过