Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Примитивные объекты: вопрос.


Trible ©   (2007-01-23 21:11:00) 

Всем привет.
Есть Pobj. от FindObject.
Можно ли как-то узнать кто он - Pcontrol или PMenu или еще кто то?

Может есть функции типа IsPcontrol(Obj: Pobj) итп.
Если нету то как свои сделать, куда смотреть?
Или может есть хитрости типа :
if Pcontrol(Obj).?? =


Psychedelic   (2007-01-25 17:45:00) [1]

2 trible
Слушайте мы случайно не одну работу делаем?
Вы не мультиязыковой компонент делаете?
Просто у меня теже вопросы возникали, возился сидел...


Vladimir Kladov   (2007-01-25 15:29:00) [2]

Допустим, получить список простых объектов, приаттаченных на автоуничтожение, можно просто выкинув из этого списка контролы. Но дальше - RTTI нет, и вы не сможете узнать, было это меню или не меню.

А зачем вообще нужна динамика? Ведь форма каждый раз создается одна и та же, с тем же набором всего, что ей принадлежит. Может, стоит начать с design-time? Пусть для вашего мудрого объекта сгенерится некоторое число вызовов типа AddObjectToHandle( obj: PObj; ... ); и во время работы он просто получит то, что ему надо, ничего не отыскивая, а просто беря из своего списка.


Psychedelic   (2007-01-24 22:32:00) [3]


> Pcontrol(объект).handle

Думаю догадались что PMenu хотел сказать.


Trible   (2007-01-24 20:49:00) [4]

Нужно найти на форме popupMenu и основное меню.
Это компонент делаю который сканит всё что на форме (это часть действия).

К примеру остальные компоненты я нахожу перебором в for, свойства  Children.
В результате получаю Pcontrol, и здесь узнаю имя этого контрола. Итп

Но с помощью свойства Children я не могу найти ни popup меню ни основное меню. Если бы там было меню я бы и не спрашивал.
Поэтому я решил прокручивать NamedObjectsList, получая Pobj (имена я использую). Проверять на nil, и получать Pobj. Другого пути получить меню я так понял нету.
Ну а что с ним делать дальше с Pobj, я не знаю, как мне узнать что это PMenu, (нужно забрать все надписи (текст))?


Psychedelic   (2007-01-24 20:31:00) [5]

Ну например взять его дескриптор и подсунуть его IsMenu.
если вернет истину, значит меню. И пошло поехало.

Pcontrol(объект).handle


Vladimir Kladov   (2007-01-24 20:29:00) [6]

В KOL нет RTTI. AncestorOfObject - не работает правильно (кажется). Вообще, для любой задачи есть методы решения. RTTI - это не задача, а метод. Вы задачу поясните.


Trible   (2007-01-24 19:02:00) [7]

Помогите с этим вопросом.
Этот вопрос сходен с вопросом про popup меню.
Вот что вы Владимир отетили:

можно посмотреть на список объектов, добавленных в список Add2AutoFree.

Опять же там  Pobj . Как узнать что это PMenu или Pcontrol ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо