ToolBarの一部のボタンのみ幅を変更するには?

解決


AYU  2010-07-27 04:23:05  No: 38854

いつもお世話になります。次の点について質問させてください。

1  目的の動作
  ・ToolBar上の複数のToolButtonのうち、一部のボタンのみ
    幅を変更したい。(細くしたい)
2  試したこと
  ・ToolButtonの幅を指定しても、ToolBarのButtonWidthの
    幅に戻ってしまう。
    (ヘルプで見ても、ToolButtonのStyleがtbsButtonのままでは、
    任意の幅に変更することは不可の様子。)
3  環境
  Windows XP + Delphi 6 Personal

過去の同様の事例があれば、それを元に解決しようと思ったのですが、
あまり需要がないのか、見つかりませんでした。そもそもできるのかも
よく分かっておりません。もし、この解決方法をご存知の方が
いらっしゃいましたら、ヒントになりそうなことだけでも結構ですので、
ご教示いただけますよう、お願いいたします。


D  2010-07-27 07:50:47  No: 38855

ツールバーと同じ高さのPanel(BevelOuterプロパティはFalse)を親にして、通常の幅のボタンのツールバーと狭い幅のボタンのツールバーを組み合わせてみてはどうでしょうか。

ツールバーのAlignはalTopのままだとうまくいかないのでalLeftにするとかAutoSizeをTrueにするとか、ボタンにイメージを表示するなら狭い幅に合わせたイメージを別に用意しないといけないなど手間はかかりますが実現はできます。


AYU  2010-08-01 16:59:51  No: 38856

返答が遅れてしまい、申し訳ありません。
昨日帰宅してから、動作を確認してみました。うまくいきそうです。
こんな単純なことで実現するとは思わなかったので、ただ驚くばかりです。
本当にどうもありがとうございます。

ただ、ツールバーにはいろいろなボタンやコントロールを配置して、
若干複雑な動作をさせる部分もあるため、もう少し動作を確認させて
いただいたうえで解決とさせていただきます。

いずれにせよ、大きく前進しました。どうもありがとうございました。


KHE00221  2010-08-01 17:28:10  No: 38857

ToolBar.ShowCaption := True
ToolButton.AutoSize := True
でサイズは自動で調整してくれるけど
それじゃないのかな?

文字を表示させたくなければスペースで幅調整できるけど


D  2010-08-01 20:09:51  No: 38858

ツールバーのFlatプロパティをTrueにしたフラットな見た目のツールボタンで良ければツールバーを入れ子にすることで、もう少し単純にできます。

ツールバーのFlatプロパティはすべてTrue。
まず親となる通常幅のToolBar1を配置します。
その中に幅の狭いボタンのToolBar2を配置します。
入れ子にするToolBar2のEdgeBordersプロパティは無し(すべてFalse)にします。

入れ子にしたToolBar2は設計時にマウスでつかめるように幅を広めにしておくとToolBar2の設定の変更や移動の時に便利です。
(ぴったりの幅にするとマウスでつかめないので移動などがやりづらくなります)
高さを高めにすると親のToolBar1のボタンの高さがそれに合わせて高くなってしまうのでうまくいきません。
ただこのままでは実行時に通常のボタンと狭いボタンに間ができてしまうのでフォームのOnCreateイベントの時にでも

  ToolBar2.AutoSize := True;

とすることでぴったりの幅になります。


AYU  2010-08-12 15:50:25  No: 38859

あのあと、実際に適用して、プログラムをいじり倒していたのですが、
不都合らしい不都合もおきず、うまくいきました。
そのため、これで解決とさせていただきます。
些細な質問にも関わらず、親切にもたくさんのご助言をいただきまして、
本当にありがとうございました。


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

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






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