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

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

Как добраться из TComponent до свойства Visible потомков [D7, WinXP]


dip ©   (2005-10-12 16:07:00) 

Уважаемые мастера! У меня такая ситуация: нужно скрывать/показывать любой компонент формы (Form1.Components) имеющий свойство Visible в режиме runtime. Проблема в том, что TComponent не имеет свойства Visible, а у каждого потомка определен свой метод Visible (TControl, TAction, TMenuItem, ...). Можно ли обойтись без явного преобразования для того, чтобы добраться до свойства Visible.


evvcom   (2005-10-14 14:44:00) [1]


> свойство Visible появляется только у TWinControl

Появляется у TControl. Можно и без TypInfo.pas. Зачем лишние функции без необходимости?

if AComponent is TControl then
 TControl(AComponent).Visible := AVisible;


dip   (2005-10-13 17:17:00) [2]

Спасибо всем! Работает!!!


Amoeba   (2005-10-13 17:00:00) [3]

Наверное, в TypInfo.pas


dip   (2005-10-13 16:54:00) [4]

А где определены функции IsPublishedProp и SetOrdProp?


Игорь Шевченко   (2005-10-13 01:13:00) [5]

Например:

if IsPublishedProp(AComponent, 'Visible') then
 SetOrdProp (AComponent, 'Visible', Ord(True));


ZeroDivide   (2005-10-12 16:56:00) [6]

Можно обойтись. Смотри TypInfo.pas

Можно посмотреть, есть ли у компонента, которого ты получаешь перебирая все Form1.Components, определенное всойство. И можно даже установить свойство по его имени, совсем не обязательно разбираться к какому классу этот компонент относится.


umbra   (2005-10-12 16:22:00) [7]

свойство Visible появляется только у TWinControl (и его потомков), поэтому без приведения типов обойтись нельзя (но это НЕ преобразование)


Наверх

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