ControlBarに配置したToolBarに、MainMenu例えばファイルの書き込み、読み込み
等を自由に登録できるようにしています。
ToolBarにどんどん登録していくと、登録はされているようですが、
表示しきれなくなってしまいます。
ToolBarの右端をつまんで右へドラッグすると幅を変更するような
ことはできるのでしょうか?
その他何かよい方法がございましたら教えて下さい。
よろしくお願い致します。
TPageScroller でも使用したらどうでしょうか?
BDS 2006 なら WIN32 の所にあります
春子:「Menu項目を追加した時に、コードでToolBarの幅を広げてもイイと思うけどネ」
真琴:「でもぉ、右端つまんでドラッグ出来たらオモシロイんじゃない?」
春子:「オモシロイ? そんなぁ〜…」
真琴:「ナンて言いながら、もう作っちゃったンだね^^、ハルコさん」
type
TToolBar = class(ComCtrls.TToolBar)
private
FSizing: Boolean;
FOffset: Integer;
TotalButtonWidth: Integer;
procedure WndProc(var Msg: TMessage); override;
end;
.........
procedure TToolBar.WndProc(var Msg: TMessage);
var
i: Integer;
begin
inherited;
case Msg.Msg of
WM_LBUTTONDOWN:
if (Width - Msg.LParamLo) < 4 then begin
SetCursor(Screen.Cursors[crHSplit]);
FSizing := True;
FOffset := Width - Msg.LParamLo;
TotalButtonWidth := 0;
for i:=0 to ButtonCount-1 do inc(TotalButtonWidth, Buttons[i].Width);
end;
WM_LBUTTONUP: FSizing := False;
WM_MOUSEMOVE:
begin
if (FSizing)and(Msg.LParamLo > TotalButtonWidth)and(Msg.LParamLo < Parent.Width) then begin
Width := Msg.LParamLo + FOffset;
end;
if (Width - Msg.LParamLo) < 4 then begin
if FSizing then SetCursor(Screen.Cursors[crHSplit]) else SetCursor(Screen.Cursors[crSizeWE]);
end else begin
SetCursor(Screen.Cursors[crDefault]);
end;
end;
end;
end;
春子:「だけどネ〜…もしかしたら変な不具合が出るコトだってあるのよ? マコト」
真琴:「不具合? どんな?」
春子:「まだ、全部確かめたワケじゃないの、でもナニか変える時は十分気を付けなきゃネ、マコト」
真琴:「そうだよね、ハルコさん、…アタシも変えたいと思う時は気をつける…」
春子:「ン? マコトもナニか変えたいコトあるの?」
真琴:「うん、アタシ…、おじいちゃんだけは、どうしても助けたいの」
春子:「えっ? マサルさんを? マサルさんがどうかしたの? マコト」
真琴:「でも、まだ1年以上先のコト…時間はあるし、一番イイ方法を考えなきゃ…」
春子:「またぁ…、もうどんなオモシロイこと言ってもズル休みはさせないからネ」
真琴:「そんなツモリないよ、ハルコさん、分かってと言ってもムリだと思うけど…」
春子:「ほかにもオモシロイ話あったら、聞いてあげるよ? マコト」
真琴:「もう^^;、チャカさないでよ、ハルコさん」
春子:「マコトがジツはマサルさんのお母さんだった…ナンて話でもオモシロイよね」
真琴:「うっ、それはシリアス過ぎて…笑えないよ;、ハルコさん」
春子:「エッ!?…」
真琴:「あれ? ホンキにした? ハルコさん^^」
KHE00221さん、オモシロイさん、
ご解答をいただいておきながら、
なにも連絡せずにすみませんでした。
あれこれ、色々行ってみました所、
ちょっとぶさいくですが、
テストプログラムで、以下の方法で
動作ができたようです。
1.Form1にControlBar1を配置
2.ControlBar1の上にPanel1を配置
3.Panel1の上にPanel2を配置し、
Panel2のAlignをalRightにし、
Widthは10ぐらい(つまめる程度)
Panel2はつまんでドラッグする為に使用
4.Panel1の上にPageScroller1を配置し、
PageScroller1のAlignをalClientにする
5.PageScroller1の上にToolBar1を配置&
ToolButtonを作成
6.Panel2のMouseMoveのイベントで、引数:Xを
利用して、Panel1のWidthを変更
※MouseMoveのイベントが欲しかったので、
別にPanelでなくてもよかったのですが。
これで、バーそのものもリサイズできるし、
リサイズして、幅が狭くなると、PageScrollerで
バー内のスクロールもできます。
もう少し色々行ってみます。
どうも、ありがとうございました。
ツイート | ![]() |