Главная страница
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.024 c
11-26418
Kirill
2002-09-04 11:25
2003.06.09
Hook в KOL


1-26445
Darrin
2003-05-27 13:24
2003.06.09
Как проверить что файл записан на диск, а не висит в кэше?


14-26749
Real
2003-05-15 20:14
2003.06.09
Как тупят программисты?


3-26351
Ice2
2003-05-19 19:43
2003.06.09
Paradox и пользователи


1-26497
KA-87
2003-05-29 20:30
2003.06.09
Как отловить появление MessageBox а?