powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / [BCB] Подскажите, как перекрасить все компоненты формы?
10 сообщений из 10, страница 1 из 1
[BCB] Подскажите, как перекрасить все компоненты формы?
    #34175874
Фотография DarkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача - перебрать все компоненты и всех, кто наследует свойство Color от TControl разукрасить в красный цвет.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 int i;
 TControl *TmpControl;
 for(i= 0 ; i<Form1->ComponentCount; i++)
   {
    TmpControl = dynamic_cast<TControl *>(Form1->Components[i]);
    if (TmpControl) (TmpControl)->Color = clRed;
   }

вот такая тема не прокатывает: TControl::Color - is not accsessible :(

...
Рейтинг: 0 / 0
[BCB] Подскажите, как перекрасить все компоненты формы?
    #34175913
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А сели через

ну наврное потому что метод Color в protected секции...
...
Рейтинг: 0 / 0
[BCB] Подскажите, как перекрасить все компоненты формы?
    #34175916
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"А сели через"

чет лишнее залезо ..
...
Рейтинг: 0 / 0
[BCB] Подскажите, как перекрасить все компоненты формы?
    #34175927
Фотография DarkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JibSkeartну наврное потому что метод Color в protected секции...
ну да, в протектед, потомушто оно становится public выше по иерархии.
Но у каждого компонента - в разном классе (в TPanel, TLabel, TShape и т.д.)

Так как сделать то?

Для простоты - можно предположить что перекрашиваем только TPanel и TShape например...
...
Рейтинг: 0 / 0
[BCB] Подскажите, как перекрасить все компоненты формы?
    #34175937
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще если попробовать через
"перебор" типов ?
Код: plaintext
1.
2.
3.
 if(dynamic_cast<TEdit*>(Sender)) ((TEdit*)Sender)->Color = clRed;
 if(dynamic_cast<TPanel*>(Sender)) ((TPanel*)Sender)->Color = clRed;
 if(dynamic_cast<T...*>(Sender)) ((T...*)Sender)->Color = clRed;

В таком духе вообщем
насколькоя помню еще и с TButton у тя проблема встанет
у него нету метода Color
...
Рейтинг: 0 / 0
[BCB] Подскажите, как перекрасить все компоненты формы?
    #34175940
Фотография DarkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkCatДля простоты - можно предположить что перекрашиваем только TPanel и TShape например...

хотя нет, так не интересно, я и сам так могу:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 int i;
 TPanel *Tmp1;
 TShape *Tmp2;
 for(i= 0 ; i<Form1->ComponentCount; i++)
   {
    Tmp1 = dynamic_cast<TPanel *>(Form1->Components[i]);
    Tmp2 = dynamic_cast<TShape *>(Form1->Components[i]);
    if (Tmp1) Tmp1->Color = clRed;
    if (Tmp2) Tmp2->Color = clRed;
   }



а как сделать чтобы это работало для всех типов?
...
Рейтинг: 0 / 0
[BCB] Подскажите, как перекрасить все компоненты формы?
    #34175949
Фотография DarkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JibSkeartА вообще если попробовать через "перебор" типов ?
угу.
А интересно решение без перебора заранее указанных типов.
Чтобы работало для всех, где это свойство public.
...
Рейтинг: 0 / 0
[BCB] Подскажите, как перекрасить все компоненты формы?
    #34175961
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkCat JibSkeartА вообще если попробовать через "перебор" типов ?
угу.
А интересно решение без перебора заранее указанных типов.
Чтобы работало для всех, где это свойство public.

а если нету метода Color , то получим AV ?
...
Рейтинг: 0 / 0
[BCB] Подскажите, как перекрасить все компоненты формы?
    #34175972
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно вот так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
class TCtrl : public TControl
{
  public:
   __property Color;
};
//------

 for(i= 0 ; i<Form1->ComponentCount; i++)
   {
   if (dynamic_cast<TControl*>(Form1->Components[i]))
     ((TCtrl*)Form1->Components[i])->Color = clRed;
   }
//------
...
Рейтинг: 0 / 0
[BCB] Подскажите, как перекрасить все компоненты формы?
    #34175991
Фотография DarkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JibSkeartМожно вот так

...
спасибо!
работайет!!!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / [BCB] Подскажите, как перекрасить все компоненты формы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]