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.