Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.09;
Скачать: CL | DM;

Вниз

Свойство Color у класса tControl   Найти похожие ветки 

 
Corsair   (2003-05-28 13:54) [0]

Доброе время суток, мастера!

Помогите решить такую проблему...

В цикле перебираю все компоненты на форме и хочу поменять их цвет в зависимости от какого-либо условия. Для этого используб сво-во tForm.Components[], приводя его явно к tControl. В Helpe явно написано, что св-во Color наследуется начиная с tControl. Однако строчка типа:
tControl(Form1.Components[i]).Color:=clRed;

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

Заранее спасибо!


 
Skier ©   (2003-05-28 13:56) [1]

>Corsair (28.05.03 13:54)
у TControl св-во Color в protected секции


 
Corsair   (2003-05-28 14:03) [2]

Skier,
а альтернативное решение есть?


 
Юрий Зотов ©   (2003-05-28 14:04) [3]

А вот так можно получить доступ к секции protected:

type
TFriendControl = class(TControl);
...
if Components[i]) is TControl then
TFriendControl(Components[i]).Color := clRed;




 
DVM ©   (2003-05-28 14:07) [4]

if (Form1.Components[i] is TLabel) then (Form1.Components[i] as TLabel).Color:=clRed;


 
Юрий Федоров ©   (2003-05-28 14:07) [5]

Во первых все компоненты нельзя приводить явно к TControl - многие из них таковымы не являются.
Во вторых для доступа к Protected св-ву можно привести очередной компонент к любому потомку TControl, у которого св-во Color вынесено в секцию Published, предварительно проверив его на отнаследованность от TControl


 
Юрий Зотов ©   (2003-05-28 14:08) [6]

> DVM © (28.05.03 14:07)

И к чему это?


 
Skier ©   (2003-05-28 14:09) [7]


> у которого св-во Color вынесено в секцию Published,

Public будет достаточно.


 
DVM ©   (2003-05-28 14:10) [8]


> Юрий Зотов

я предположил, что человеку известно, цвет каких компонентов надо менять, к примеру меток. Вот и все.


 
Palladin ©   (2003-05-28 14:13) [9]

Это наверно к тому что если лень TFriendControl написать, то можно просто напросто написать кучу "if is as" для всех классов у которых Color в public или published :)
по крайней мере я так понял задумку DVM...


 
Corsair   (2003-05-28 14:40) [10]

Спасибо всем!
Самое реальное решение - это tFriendControl, так видимо и сделаем. А перебор всех типов - это не профессионально, да и напрягает столько кода писать..

Еще раз благодарю всех..



Страницы: 1 вся ветка

Текущий архив: 2003.06.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
1-26448
novill
2003-05-29 09:25
2003.06.09
Странная ситуация при showmodal


1-26557
McSimm2
2003-05-28 10:36
2003.06.09
Tlist.Sort


6-26645
Olphi
2003-04-06 13:40
2003.06.09
Как поменять IP адрес?


3-26366
Apachi
2003-05-21 07:39
2003.06.09
Дерево


9-26325
Dock
2002-12-14 18:43
2003.06.09
Звук в играх.