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

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

Вопрос про Object Inspector и parent [D7, XP]


cosinus ©   (2009-12-19 14:02:00) 

Столкнулся с непонятной для меня ситуацией.
Задача: пройтись по всем компонентам, расположенным на одной из панелей (частный случай), которые (судя по Object Inspector) там находятся.
На форме есть панель, на панели PageList, на Page1 расположен GroupBox, а уже на нем в свою очередь куча всяких контролов. Все создавалось в DisignTime, киданием компонентов и установкой их свойств.
В зависимости от условия, мне нужно было выставить Enabled всех Edit-ов, расположенных на GroupBox в True или False.
Обхожу все компоненты на GroupBox - пусто.
Выше на уровень - снова пусто.
Какие-то компоненты проявились только на панели, причем совершенно левые из серии "как бог на душу положит".
Правильно ли я понимаю, что то дерево, которое отображается в Object Inspector не имеет никакого отношения, к реальному положению дел - "кто чей parent"?
Если так, то возможно ли выставить это как-нибудь? кроме как создавать контролы в RunTime, указывая Parent? Или (TControl as что-нибудь).Components[i] вообще к Parent не имеет отношения?

Какая-то разруха в мозгах... Разделите мне мух от котлет, пожалуйста...


cosinus   (2009-12-20 10:56:00) [1]

Спасибо, теперь все встало на свои места.


Юрий Зотов   (2009-12-19 17:13:00) [2]

Есть список Components - он отвечает за то, кто чей Owner. Если компоненты накидывались в design-time, то владельцем всех будет форма (а никакие не панели и не группбоксы).  

Есть список Controls - он отвечает за то, кто чей Parent (кто на ком лежит). Вот он Вам и нужен.

for i := 0 to GroupBox1.ControlCount - 1 do
 if GroupBox1.Controls[i] is TEdit then
   GroupBox1.Controls[i].Enabled := false;


Наверх

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