重置复选框我有一个脚本,它使用带有复选框,组合框,数字编辑和文本编辑框的窗口来获取用户输入,然后使用输入来执行数据分析(请参阅附图,了解框的外观)。为了便于使用不同的选项集,我输入了一个Reset按钮,它可以关闭所有打开的数据表和报告,并清除所有输入的选项。通常按钮工作正常,但有时在尝试重置单个日期范围的复选框或输入NC代码下的第一个文本编辑框时会出错。错误警报显示“在访问或评估'发送'时发送可预期的脚本对象”。我列出了警告框的图片以及发生错误时我选择的选项。附加的脚本只是有问题的部分,因此设置为建立数据输入框然后获取输入的选项,并可以重置和关闭。我不确定一个复选框和数据输入框会发生什么,因为其余部分似乎正确重置,所以任何帮助将不胜感激。


回复:重置复选框请注意,使用其中一个变量或任何可能具有列名称的表的任何其他脚本或过程(即使它已打开几秒钟)都可能与显示对象名称冲突。
回复:重置复选框我一定会查看名称空间。如果在发生错误时脚本正在运行两次,那么我认为您提出的建议会解决它,但是当按下重置按钮时,不会生成新的输入窗口。只有用于获取数据的框的值才会重置为默认值。这个以及错误只发生在有时并且只有一些复选框的事实让我觉得可能会有更多的事情发生。
回复:重置复选框当对象不再存在,或者存在范围问题,名称冲突时,将发生此类错误。我希望有时可能是由此引起的。
我可以重现这个错误:
- 运行脚本,设置一些值
- 再次运行您的脚本
- 关闭第二个对话框窗口
- 转到第一个窗口,然后选择重置,将发生错误。这是因为所有d1,d2等显示框都已分配给第二个对话框窗口。 重置正在尝试访问不再存在的对象。
编程参考这个<< Top parent,然后找到对象或使用window namescape。窗口:d1,窗口:d2等 会解决这个问题。
创建应用程序的一大好处是每个实例都有自己的命名空间,并使脚本更容易。
另一种方法是添加到脚本的顶部名称默认为此处(1); 并保存。
关闭对话框窗口的所有实例。
现在运行此脚本(如果需要,更改路径)
Names Default to Here(1);
Include ("c:\temp\Reset Boxes Question Script.jsl", <<NEW context=""></NEW>在第一个对话框窗口中更改某些值,然后关闭第二个对话框窗口。现在返回第一个窗口(只是重复导致错误的步骤)并按Reset。没有问题。
对新上下文使用单个Include()会为diaolog及其命名对象创建一个匿名命名空间,并且会解析范围问题。
您应该阅读有关名称空间的信息