Delphi6 Personal でメニューバーをOfficeXPのような、マウスが乗った部分に枠をつけて背景を変えるような方法ってありますでしょうか?
もしあったらご教授下さい。宜しくお願いします
HotImagesで枠付の画像を設定してはどうでしょう?
ボタンのMouseDown時にツールバーのキャンバスにBoundsRectで取得した範囲内に描画することもできます
るるとん@Kさん。返信ありがとうございます。
前者のHotImagesで枠付きの〜〜はとりあえずやり方が分かったのでやってみたのですが、どうしてもボタンの周りに枠が表示されるのではなく、内側に表示されてしまいます・・・。
後者のは私には全く意味が分かりません。。。。
それから、ツールバーでやったのですが、メニューバーはどうにかなりませんかね?
これじゃ無理かなぁ
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;
メニューバーなら文字を描画しなければいけないので変更が必要
↑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を広げれば出来ると思います
凄いです。感動です。
ツールバーはソレっぽくなりました。
メニューバーもいろいろ考えてみようと思います。
どうもありがとうございました!!
ツイート | ![]() |