Что такое API классов PowerObject или WindowObject? - PullRequest
2 голосов
/ 07 августа 2009

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

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

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

1 Ответ

4 голосов
/ 07 августа 2009

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

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

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

Удачи,

Терри.

...