0

メイン メニュー項目の背景色を変更する方法を示すスクリプトを次に示しますが、メニューの残りの部分は灰色のままです。

 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);
  }

}

メインメニューの背景色全体を変更する方法を知っている人はいますか?

4

1 に答える 1

0

OS は、あなたが求めているものをサポートしていません。標準TMainMenuでは、メニュー全体ではなく、個々の項目のみをオーナー描画できます。メニュー全体をカスタマイズする場合は、必要なものをサポートするサードパーティのカスタム メニュー実装を見つけるなど、別のコンポーネントを使用する必要があります。

于 2012-12-05T19:41:42.257 に答える