Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / [BCB] Подскажите, как перекрасить все компоненты формы? / 10 сообщений из 10, страница 1 из 1
04.12.2006, 19:15
    #34175874
DarkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[BCB] Подскажите, как перекрасить все компоненты формы?
Задача - перебрать все компоненты и всех, кто наследует свойство 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
04.12.2006, 19:38
    #34175913
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[BCB] Подскажите, как перекрасить все компоненты формы?
А сели через

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

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

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

Для простоты - можно предположить что перекрашиваем только TPanel и TShape например...
...
Рейтинг: 0 / 0
04.12.2006, 19:50
    #34175937
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[BCB] Подскажите, как перекрасить все компоненты формы?
А вообще если попробовать через
"перебор" типов ?
Код: 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
04.12.2006, 19:53
    #34175940
DarkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[BCB] Подскажите, как перекрасить все компоненты формы?
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
04.12.2006, 19:55
    #34175949
DarkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[BCB] Подскажите, как перекрасить все компоненты формы?
JibSkeartА вообще если попробовать через "перебор" типов ?
угу.
А интересно решение без перебора заранее указанных типов.
Чтобы работало для всех, где это свойство public.
...
Рейтинг: 0 / 0
04.12.2006, 20:02
    #34175961
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[BCB] Подскажите, как перекрасить все компоненты формы?
DarkCat JibSkeartА вообще если попробовать через "перебор" типов ?
угу.
А интересно решение без перебора заранее указанных типов.
Чтобы работало для всех, где это свойство public.

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

Код: 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
04.12.2006, 20:29
    #34175991
DarkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[BCB] Подскажите, как перекрасить все компоненты формы?
JibSkeartМожно вот так

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


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