我有一个主表,它叫运费。
此运费表单有所有属性设置为默认,除了标题,名称和窗口类型,即1-Modal。使用代码的唯一方法是init,它具有:
select FRT1表单上唯一的对象是一个命令按钮,其中包含在click方法中:
messagebox(alias())
thisform.release()因此,当我按下命令按钮时,消息框会说FRT1,但是它会从主表单中给出另一个别名。
在从主窗体调用表单之前,别名也显式地设置为FRT1。
select FRT1
do form freight因为货运表单是模态的,所以在货运表单运行时,主表单中没有任何东西会影响数据区域。
由于货运单上几乎没有任何东西,所以问题似乎是以主形式出现的。
这种错误行为似乎只有在从网格中的按钮调用货运表单时才会发生。对于正在发生的事情或如何防止它,有什么想法吗?
发布于 2015-11-09 16:14:53
只是一些想法。
我会打开您的调试器并将
SET STEP ON在紧接执行
SELECT FRT1
DO FORM FREIGHT然后,在调试器中,转到“监视”窗口并输入值。
ALIAS()作为要观察的值,并在左边的栏中单击以显示红色点,以便在其更改时停止。
只是一个期待的想法。您的“运费”表单的"DataSession“属性为”1-默认数据会话“,如果是,它将查看默认会话中的任何别名,而不是主窗体可能具有的私有数据会话.
我只看到过这种非常罕见的情况(在25+年与FoxBase、FoxPro、VFP的合作中有2次)。在这些情况下,我不得不连续两次显式地选择表。
SELECT FRT1
SELECT FRT1甚至在两者之间放置虚假的语句,例如
SELECT FRT1
tmpXXXXXX = alias()
SELECT FRT1检查断点,看看它是否有效。
我只想做另外一个断点..。把“节目()”放进手表窗口。它会不会调用其他你不知道的派生类脚本.还是在窗体的"DataEnvironment“中运行代码,例如在"BeforeOpenTables”事件中?与其绕行,不如知道它在哪里做事。
发布于 2015-11-09 17:06:00
在被调用的表单(通常是网格)上,没有任何控件可以获取焦点,从而隐式地导致对当前工作区的更改吗?
顺便说一下,我建议使用私有数据会话,并将每个会话保持独立。
https://stackoverflow.com/questions/33612682
复制相似问题