Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];

Вниз

Свойство 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.021 c
9-26322
Yrtimd
2002-12-30 18:40
2003.06.09
DelphiX под Delphi 7 - это как ?..


14-26768
Sewix
2003-05-17 09:19
2003.06.09
Kylix готовое пиложение


3-26350
Димос
2003-05-19 11:25
2003.06.09
Что такое


6-26625
Arkara
2003-04-06 02:09
2003.06.09
Как вызвать стандартную звонилку Windows?


6-26635
sapsi
2003-04-09 10:46
2003.06.09
Обработка входящих сообщений Outlook





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский