PowerObject 或 WindowObject 类的 API 是什么?

发布于 2024-07-30 17:27:51 字数 469 浏览 4 评论 0原文

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

不幸的是, 文档位于sybase.com 只是说这些基类没有记录。 也许有人通过某种反射想出了这个办法?

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

I'm currently developing a PowerBuilder application and noticed that each window features a 'ParentWindow' function. However, there doesn't seem to be a 'ChildWindows' or anything like that.

Unfortunately, the Documentation at sybase.com just says that these base classes are not documented. Maybe somebody figured it out anyway, using some sort of reflection?

What I would like to do (this is the reason why I'm interested in the API of the generic baseclasses like PowerObject or WindowObject) is to recursively iterate over all GUI elements (windows, tables, buttons, check boxes, you name it) using PowerScript in PowerBuilder 11.0. Does anybody know how to do this (whether this is possible at all)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

弄潮 2024-08-06 17:27:51

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

  • 打开对象浏览器(PowerBar 工具栏上的图标,或在更高版本的 PB 中的“工具”菜单项下)
  • 转到系统选项卡
  • (不是必需的,但为了奖励积分) 右键单击​​左窗格并从菜单中选择“显示层次结构”
  • 在左窗格中选择相关对象
  • 双击右窗格中的“属性”、“事件”或“函数”标题以展开列表。

至于迭代所有 GUI 元素,最简单的方法是在所有窗口的共同祖先的 Open 和 Close 事件中维护窗口句柄列表(您 所有窗口都有一个共同的祖先,不是吗?)并浏览列表,递归访问 Control[] 数组(请注意,UserObjects、Tabs 和 TabPages 以及 Windows 都有 Control[] 数组)。 除非您打算使用 Windows API 来获取属于某个进程的所有窗口句柄,否则没有简单的方法可以在不亲自维护此列表的情况下获取此列表。

祝你好运,

特里。

For the API (functions, properties, etc...) of any system object, including PowerObject or WindowObject:

  • Open the Object Browser (icon on the PowerBar toolbar, or under the Tools menu item in later versions of PB)
  • Go to the System tab
  • (not essential, but for bonus points) Right click on the left pane and select Show Hierarchy from the menu
  • Select the object in question on the left pane
  • Double click the Properties, Events or Functions headers in the right pane to expand the list.

As for iterating over all GUI elements, the easiest way is to maintain a list of window handles in the Open and Close events of your common ancestor to all your windows (you do have a common ancestor to all your windows, don't you?) and go through the list, recursing through the Control[] arrays (note that UserObjects, Tabs and TabPages have Control[] arrays as well as Windows). Unless you're going to mess around with Windows APIs to get all the window handles belonging to a process, there's no easy way to get this list without maintaining this list yourself.

Good luck,

Terry.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文