Что такое API классов PowerObject или WindowObject?

В настоящее время я разрабатываю приложение PowerBuilder и заметил, что каждое окно имеет функцию «ParentWindow». Однако похоже, что «ChildWindows» или что-то в этом роде не существует.

К сожалению, по адресу sybase.com просто сообщает, что эти базовые классы не задокументированы. Может, кто-нибудь все-таки разобрался, используя какое-то отражение?

То, что я хотел бы сделать (это причина, по которой меня интересует API общих базовых классов, таких как PowerObject или WindowObject), - это рекурсивно перебирать все элементы графического интерфейса (окна, таблицы, кнопки, флажки, вы называете это) с использованием PowerScript в PowerBuilder 11.0. Кто-нибудь знает, как это сделать (возможно ли это вообще)?


person Frerich Raabe    schedule 07.08.2009    source источник
comment
Это похоже на ваш предыдущий вопрос о Spy ++. Терри сделал ссылки в выбранном ответе на массивы элементов управления, используемые объектами PB; они могут предоставить вам информацию о созданных объектах во время выполнения. Или вы хотите чего-то другого?   -  person Bernard Dy    schedule 07.08.2009
comment
@Bernard: Да, это мой родственный проект; Одна из моих проблем заключается в том, что я не вижу, как (в общем) получить доступ к окнам верхнего уровня (из которых я затем могу рекурсивно спускаться, используя свойство control []).   -  person Frerich Raabe    schedule 07.08.2009


Ответы (1)


Для API (функций, свойств и т. Д.) Любого системного объекта, включая PowerObject или WindowObject:

  • Откройте обозреватель объектов (значок на панели инструментов PowerBar или в пункте меню «Инструменты» в более поздних версиях PB).
  • Перейдите на вкладку Система
  • (не обязательно, но для бонусных баллов) Щелкните правой кнопкой мыши на левой панели и выберите в меню Показать иерархию.
  • Выберите интересующий объект на левой панели.
  • Дважды щелкните заголовки «Свойства», «События» или «Функции» на правой панели, чтобы развернуть список.

Что касается итерации по всем элементам графического интерфейса, самый простой способ - сохранить список дескрипторов окон в событиях Open и Close вашего общего предка для всех ваших окон (вы делаете имеют общего предка для всех ваших окон ?) и просмотрите список, рекурсивно просматривая массивы Control [] (обратите внимание, что UserObjects, Tabs и TabPages имеют массивы Control [], а также Windows). Если вы не собираетесь возиться с Windows API, чтобы получить все дескрипторы окон, принадлежащие процессу, нет простого способа получить этот список, не ведя его самостоятельно.

Удачи,

Терри.

person Terry    schedule 07.08.2009