TMainMenuに色をつけるには?

解決


Delphi3年生  2009-07-04 02:41:51  No: 35033

いつもお世話になっております。

フォームにTMainMenuコントロールに以下のようなメインメニューを
設定しており、このメインメニューの背景色を標準のグレー色から
任意の色に変更したいと思っています。
---------------------------------------------
ファイル | 編集 | 表示 |
--------------------------------------------

すこし強引な方法ですが、Delphiをインストールディレクトリにあります、
「Menus.pas」ファイルをプロジェクトに追加し、
Brush.Colorを設定している箇所を書き換えることにより、
「ファイル」、「 編集」のメニューなどの箇所の色を
設定することができたのですが、メニュー項目の余白部分が
標準のグレーのままになってしまっています。

                          →ここから右がグレー色のままです
---------------------------------------------
ファイル | 編集 | 表示 |
--------------------------------------------

(調べたところ、オーナードローにすることで可能とありましたが、
メニューの表示されていない範囲で書く方法まではわかりませんでした。。。)

もし、何かいい方法をご存知のようでしたら
ご教授いただいてもよろしいでしょうか?


TS  2009-07-04 06:31:41  No: 35034

背景を変えるには?
と言うお題と同じだと思いますがコピペで手抜きですが

MainMenu1のOwnerDrawをTrueにする。

>メニューの表示されていない範囲で書く方法までは
>わかりませんでした。。。)
通常描画する範囲がARectに入りますが描画するのはその範囲を
越えてもかまいません。

procedure TForm1.N1DrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; Selected: Boolean);
begin
  with ACanvas do
    begin
      //通常の描画
      if Selected then
        Brush.Color := clYellow
      else
        Brush.Color := clwhite; 
      FillRect(ARect) ;
      Font.Color := clTeal;
      Font.Style := [fsItalic];
      TextRect(ARect,ARect.Left,2+ ARect.Top,
              N1.Caption) ;
      //右部分の描画
      Brush.Color := clRed;
      ARect.Left:=ARect.Right;
      ARect.Right:=ARect.Right+1000;
      FillRect(ARect) ;
    end;
end;


Delphi3年生  2009-07-07 01:05:00  No: 35035

TSさん。ご回答いただきありがとうございます。

ご指示いただいた方法でうまくいきました。
誠にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加