OfficeXP風メニュー

解決


超初心者  2004-05-07 00:20:00  No: 8820

Delphi6 Personal  でメニューバーをOfficeXPのような、マウスが乗った部分に枠をつけて背景を変えるような方法ってありますでしょうか?
  もしあったらご教授下さい。宜しくお願いします


るるとん@K  2004-05-07 01:30:47  No: 8821

HotImagesで枠付の画像を設定してはどうでしょう?


るるとん@K  2004-05-07 01:47:13  No: 8822

ボタンのMouseDown時にツールバーのキャンバスにBoundsRectで取得した範囲内に描画することもできます


超初心者  2004-05-08 08:34:28  No: 8823

るるとん@Kさん。返信ありがとうございます。
  
前者のHotImagesで枠付きの〜〜はとりあえずやり方が分かったのでやってみたのですが、どうしてもボタンの周りに枠が表示されるのではなく、内側に表示されてしまいます・・・。
  後者のは私には全く意味が分かりません。。。。

  それから、ツールバーでやったのですが、メニューバーはどうにかなりませんかね?


るるとん@K  2004-05-08 21:20:52  No: 8824

これじゃ無理かなぁ
procedure TForm1.ToolBar1CustomDrawButton(Sender: TToolBar;
  Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
var
R:TRect;
begin
if (cdsHot in State) and not(cdsSelected in state) then
begin
R:=Button.BoundsRect;
Sender.Canvas.Pen.Color:=clBlue;
Sender.Canvas.Rectangle(R.Left,R.Top,R.Right,R.Bottom);
Sender.Canvas.Rectangle(R.Left+1,R.Top+1,R.Right-1,R.Bottom-1);
Sender.Images.Draw(Sender.Canvas,R.Left+3,R.Top+3,Button.ImageIndex);
DefaultDraw:=False;
end;
end;
メニューバーなら文字を描画しなければいけないので変更が必要


るるとん@K  2004-05-08 21:23:09  No: 8825

↑OfficeXPみたことないので、適当な枠ですよ
ボタンの外側に表示するには、
>Sender.Canvas.Rectangle(R.Left+1,R.Top+1,R.Right-1,R.Bottom-1);
>Sender.Images.Draw(Sender.Canvas,R.Left+3,R.Top+3,Button.ImageIndex);
をずらして、BorderWidthを広げれば出来ると思います


超初心者  2004-05-09 11:41:58  No: 8826

凄いです。感動です。
  ツールバーはソレっぽくなりました。
メニューバーもいろいろ考えてみようと思います。

どうもありがとうございました!!


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

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






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