2

我目前正在开发一个 PowerBuilder 应用程序,并注意到每个窗口都有一个“ParentWindow”功能。但是,似乎没有“ChildWindows”或类似的东西。

不幸的是,sybase.com 上的文档只是说没有记录这些基类。也许有人想通了,使用某种反射?

我想做的(这就是我对 PowerObject 或 WindowObject 等通用基类的 API 感兴趣的原因)是递归迭代所有 GUI 元素(窗口、表格、按钮、复选框,你可以命名它)在 PowerBuilder 11.0 中使用 PowerScript。有谁知道如何做到这一点(这是否可能)?

4

1 回答 1

4

对于任何系统对象的 API(函数、属性等),包括 PowerObject 或 WindowObject:

  • 打开对象浏览器(PowerBar 工具栏上的图标,或在更高版本的 PB 中的工具菜单项下)
  • 转到系统选项卡
  • (不是必需的,但对于奖励积分)右键单击左窗格并从菜单中选择 Show Hierarchy
  • 在左侧窗格中选择有问题的对象
  • 双击右窗格中的属性、事件或函数标题以展开列表。

至于遍历所有 GUI 元素,最简单的方法是在所有窗口的共同祖先的 Open 和 Close 事件中维护一个窗口句柄列表(您确实 有所有窗口的共同祖先,不是吗? ) 并遍历列表,递归遍历 Control[] 数组(请注意,UserObjects、Tabs 和 TabPages 具有 Control[] 数组以及 Windows)。除非您打算使用 Windows API 来获取属于某个进程的所有窗口句柄,否则如果不自己维护此列表,就没有简单的方法来获取此列表。

祝你好运,

特里。

于 2009-08-07T16:18:53.027 回答