Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Тебеуется помощь опытных билдеристов
|
|||
|---|---|---|---|
|
#18+
Забыл как это правильно называется, вертится в голове что-то вроде reflections в Java. :) Существует ли стандартный способ получить описание пользовательского класса с всеми его атрибутами для конкретного объекта в окне? Смысл в следующем: Есть набор пользовательских объектов, унаследованных друг от друга. При обработке в окне массива Control[] требуется узнать, имеется ли у текущего объекта указываемая функция или свойство и в зависимости от результата выполнить некоторые действия. Как пример - обработка нажатия Enter у каждого из объектов может быть своя, а может и не быть вовсе и определяться свойством наподобие ProcessEnter. Первое, что приходит в голову - описать в каждом объекте событие ue_hasprocessor, в котором возвращать значение ProcessEnter и вызов этого события делать динамически с проверкой возвращаемого значения по принципу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. но этот подход не очень удобен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 07:01 |
|
||
|
Тебеуется помощь опытных билдеристов
|
|||
|---|---|---|---|
|
#18+
Как у Java такого нет. Рекомендую вообще с этим не заморачиваться. Кто Вам мешает динамически вызывать события - если они есть у обьектов, то выполнятся, если нет, то не выполнятся. Тогда и отпадает надобность в флаге ProcessEnter. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 07:46 |
|
||
|
Тебеуется помощь опытных билдеристов
|
|||
|---|---|---|---|
|
#18+
View FindClassDefinition(...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 08:52 |
|
||
|
Тебеуется помощь опытных билдеристов
|
|||
|---|---|---|---|
|
#18+
Обработка Enter - это частный случай и приведен только для примера. Ситуация гораздо хуже, если требуется узнать, есть у объекта интересующее свойство или нет. Есть функция FindClassDefinition, которая возвращает описание класса и в свойстве VariableList[] содержится описание всех переменных. Это могло бы помочь. Но! Как получить тип объекта в окне? Функция TypeOf возвращает базовый тип, то есть например datawindow! вместо uo_dw . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 08:58 |
|
||
|
Тебеуется помощь опытных билдеристов
|
|||
|---|---|---|---|
|
#18+
а что не воспользоваться ClassName() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 09:30 |
|
||
|
Тебеуется помощь опытных билдеристов
|
|||
|---|---|---|---|
|
#18+
Я А вы сами пробовали? В данном случае ClassName() вернет то имя, под которым объект известен в окне, т.е. если у меня есть в окне экземпляр uo_dw под именем dw_1, то я и получу "dw_1". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 10:27 |
|
||
|
Тебеуется помощь опытных билдеристов
|
|||
|---|---|---|---|
|
#18+
По-моему, это называется интроспекция :-) RTFM на предмет вот этих функций: FindClassDefinition FindMatchingFunction FindFunctionDefinition FindTypeDefinition Скорее всего, вас устроит нечто, похожее на вот этот пример из PowerBuilder Help. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 10:54 |
|
||
|
Тебеуется помощь опытных билдеристов
|
|||
|---|---|---|---|
|
#18+
к E-Doc Боюсь вас учить но может быть стоит взглянуть на задачу с другой стороны? Реализация обхода (в цикле) массива всех Control-ов не очень удачна.... Может быть попробовать как-то иначе решить проблему.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 10:55 |
|
||
|
Тебеуется помощь опытных билдеристов
|
|||
|---|---|---|---|
|
#18+
И еще две копейки... PowerBuilder Help Properties for ClassDefinition object Ancestor ClassDefinition An object that represents the ancestor class. Ancestor is NULL when the ClassDefinition is describing PowerObject.Перебирая в цикле предков вашего объекта вы приходите, в конце концов, к тому, который вас интересует, например u_dw :-) А вот такой код вообще никаких знаний об объекте от вас не требует: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 11:06 |
|
||
|
Тебеуется помощь опытных билдеристов
|
|||
|---|---|---|---|
|
#18+
E-doc Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Interfaces in PowerBuilder ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 11:15 |
|
||
|
Тебеуется помощь опытных билдеристов
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо за советы. PL99И еще две копейки... PowerBuilder Help Properties for ClassDefinition object Ancestor ClassDefinition An object that represents the ancestor class. Ancestor is NULL when the ClassDefinition is describing PowerObject.Перебирая в цикле предков вашего объекта вы приходите, в конце концов, к тому, который вас интересует, например u_dw :-) А вот такой код вообще никаких знаний об объекте от вас не требует: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Реализацию первого варианта я нашел через Google, кому интересно, вот ссылка Но второй вариант мне кажется более простым и удобным. Отдельное спасибо PL99 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 12:07 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=32843176&tid=1338632]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 146ms |

| 0 / 0 |
