Главная страница
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.017 c
1-26538
kamkad3e
2003-05-26 22:43
2003.06.09
параметры к WordApplication1.Documents.Open


8-26623
Step[B.M.]
2003-02-26 22:52
2003.06.09
Регистрация звуковой информации.


1-26424
deedlit
2003-05-28 16:36
2003.06.09
Как игнорировать сообщения мыши для контрола?


6-26646
Дмитрий К.К.
2003-04-07 11:59
2003.06.09
Поиск файла в Интернете


1-26450
igorol
2003-05-29 11:57
2003.06.09
Переход с Delphi5 к Delphi7