Главная страница
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.02 c
1-26599
sndanil
2003-05-27 16:14
2003.06.09
Drag&Drop


14-26719
JibSkeart
2003-05-19 17:44
2003.06.09
Интерестно это видели ?


14-26679
Переяслов Григорий
2003-05-23 19:31
2003.06.09
Установка видео кодека


3-26368
Avreliy
2003-05-19 19:08
2003.06.09
Проверка введённой даты на правильность.


1-26583
df
2003-05-28 14:51
2003.06.09
TPowerSock