从DataWindow的事件ItemChanged发送调用open事件

时间:2013-07-08 16:20:24

标签: sybase powerbuilder datawindow ancestor

我尝试使用:SUPER :: EVENT OPEN ()从事件ItemChanged发送一个窗口的Open事件,除了open事件包含“script ancestor”我还需要运行;本身需要从DataWindow的事件ItemChanged重新启动窗口。

我希望你的帮助。

提前致谢。

此致

1 个答案:

答案 0 :(得分:1)

从你的问题中跳出一些东西。

如果从ItemChanged调用

SUPER::EVENT OPEN()将尝试调用 DataWindow 的Open事件,而不是 Window

我不是百分之百确定这一点,但我很确定我在尝试从一个完全不同的脚本调用一个脚本的祖先时遇到了问题。我不能指出文件;我不得不把它弄得有点怀疑。

目前还不完全清楚你要追求的是什么,但是如果你想打开窗口(我将在下面建议),如果窗口的Open脚本要么扩展祖先脚本要么显式调用祖先脚本(如上所述),显式调用祖先脚本是不必要的,并且打击我可能是不受欢迎的。只需调用您正在编写的窗口的Open脚本。

这完全取决于你的代码,但是我必须维护的几十个系统,我从不假设运行Window的Open事件会“重启”窗口。我曾经研究过的大多数系统,只会造成前后状态的意外混合。另外,即使我从头开始编码以完美地工作,我也会假设下一个维护我的代码的人(在我赢得彩票并退休到南太平洋小岛之后)会编码基于他所研究的其他系统,对他来说完全合理的方式,但会搞砸我的假设。如果我需要“重新启动”窗口,我会:

  • 关闭窗口并再次发布窗口的Open()(函数,而不是事件)
  • 创建一个ue_ResetWindow事件,希望编码以便Open也可以使用它,这使得显而易见的是,添加到窗口的任何内容都需要在此脚本中维护

(在这两者中,后者将是更好的用户体验和编码,恕我直言。)

祝你好运,

特里。