Вот скрипт, который демонстрирует, как изменить цвет фона на пунктах главного меню, в то время как остальная часть меню все еще остается в сером цвете
void __fastcall TForm1::AdvancedDrawNewItemMain(TObject *Sender, TCanvas *ACanvas, const TRect &ARect,
TOwnerDrawState State)
{
TMenuItem *MenuItem = ((TMenuItem*)Sender);
TRect TempRctN = ARect;
TempRectN.top=TempRctN.top+2;
ACanvas->Brush->Color =clRed;
ACanvas->FillRect(ARect);DrawTextW(ACanvas->Handle,MenuItem->Caption.w_str(),MenuItem->Caption.Length(),&TempRctN, DT_CENTER);if((State.Contains(odSelected) || State.Contains(odHotLight) ) && !State.Contains(odDisabled) )
{
ACanvas->Brush->Color =static_cast<TColor>RGB(49,106,197);
ACanvas->FillRect(ARect);
ACanvas->Font->Color=clWhite;
DrawTextW(ACanvas->Handle,MenuItem->Caption.w_str(),MenuItem->Caption.Length(),&TempRctN, DT_CENTER);
}
}
Кто-нибудь знает, как изменить весь фоновый цвет основного меню?
ОС не поддерживает то, что вы просите. Стандарт TMainMenu
Может только владелец-рисовать отдельные элементы, а не все меню в целом. Если вы хотите настроить все меню, вам придется использовать другой компонент, например, найти стороннюю реализацию пользовательского меню, которая поддерживает то, что вам нужно.
Других решений пока нет …