C++ Builder RAD Studio XE7 меняет цвет панели

После нажатия кнопки я захотел изменить цвет панели на зеленый:

ErrorDetectorPanel->Brush->Color = clLime;

не работает

ErrorDetectorPanel->Color = clLime;
ErrorDetectorPanel->Refresh();

не работает

с этой зависимостью:

ErrorDetectorPanel->ParentColor = false;
ErrorDetectorPanel->Refresh();

это все еще не работает.

попробовал это так:

HBRUSH brush = CreateSolidBrush(RGB(0, 255, 0));
SetWindowLong(ErrorDetectorPanel->Handle,WM_ERASEBKGND, 0);
SetWindowLong(ErrorDetectorPanel->Handle,GCLP_HBRBACKGROUND, (LONG)brush);

Прозрачность TForm ложна тот же результат после нажатия кнопки.

Как я могу сделать это правильно?

1 ответ

Настройка TPanel.Color свойство является правильным решением (оно будет автоматически установлено ParentColor на false), однако вы должны отключить темы / стили TPanel (или всю программу в целом), чтобы использовать пользовательские раскраски. Тематические / Стилизованные элементы управления получают свою окраску от активной темы / стиля.

I use

TPanel *tp[]={Panel454,Panel455,Panel456};

    for(int i=sizeof(tp)/sizeof(tp[0]);--i>=0;){
        tp[i]->ParentBackground=false;
        tp[i]->StyleElements = TStyleElements(); // disable all
//      tp[i]->CleanupInstance();
        tp[i]->Color=clSkyBlue;
        }

if the Themed/Styled controls used.

Другие вопросы по тегам