Popup Menu の背景色を $00FFB3B3 に変えてみます
(MainMenu でも同じだと思います)
プロパティ OwnerDraw を True に
MenuItem イベントの OnDrawItem と OnMeasureItem を
コーディングします
//通常のメニュー
procedure TForm1.Help1DrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
begin
ACanvas.Brush.Color := $00FFB3B3;//色の設定
ACanvas.FillRect (ARect);
// テキスト領域 左の余白
Arect.Left := 15;
DrawText(ACanvas.Handle, PChar(TMenuItem(Sender).Caption),
-1, ARect, DT_SINGLELINE or DT_VCENTER);
end;
procedure TForm1.Help1MeasureItem(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
Width := 60;
Height := 25;
end;
//チェックのあるメニューアイテム
procedure TForm1.sec1DrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
begin
ACanvas.Brush.Color := $00FFB3B3;//色の設定
ACanvas.FillRect (ARect);
//チェックされた場合 矩形を描く
if Sec1.Checked then
begin
ACanvas.Rectangle (ARect.Left+2, ARect.Top+8,
ARect.Right-67, ARect.Bottom-8);
end;
// テキスト領域
Arect.Left := 15;
DrawText(ACanvas.Handle, PChar(TMenuItem(Sender).Caption),
-1, ARect, DT_SINGLELINE or DT_VCENTER)
end;
procedure TForm1.sec1MeasureItem(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
Width := 60;
Height := 25;
end;
//セパレーター 背景と ラインの影とハイライト
procedure TForm1.N1DrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
begin
ACanvas.Brush.Color := $00FFB3B3;//背景色
ACanvas.FillRect (ARect);
with ACanvas do begin
Pen.Color := clGrayText;//ライン 影の色
MoveTo(ARect.Left + 1, ARect.Top +
(ARect.Bottom - ARect.Top) div 2);
LineTo(ARect.Right - 1, ARect.Top +
(ARect.Bottom - ARect.Top) div 2);
Pen.Color := clBtnHighlight;//ライン ハイライト
MoveTo(ARect.Left + 1, ARect.Top +
(ARect.Bottom - ARect.Top) div 2 +1);
LineTo(ARect.Right - 1, ARect.Top +
(ARect.Bottom - ARect.Top) div 2 +1);
end;
end;
procedure TForm1.N1MeasureItem(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
Width := 60;
Height := 10;
end;
|