Форум: "Основная";
Текущий архив: 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