私は、左側にTTreeview、右側にTGroupboxというフォームを持っています。右端をドラッグしてフォームのサイズを変更すると、Groupboxを適切に拡大または縮小したい。フォームが左にドラッグされると、ツリービューのサイズを変更します。私は以下のコードを試して、右のサイズ変更はうまく動作します。しかし、左にリサイズすると、ツリービューは必要以上に長くなります。これを達成する正しい方法は何でしょうか?ドラッグ領域に基づいて動的にサイズを変更するコントロール
procedure TForm1.FormResize(Sender: TObject);
var
p: TPoint;
begin
P:= ScreenToClient(Mouse.CursorPos);
if(P.X<0) then begin
Treeview1.Anchors:= [akLeft,akTop,akRight,akBottom];
Groupbox1.Anchors:= [akTop,akBottom];
end
else begin
Treeview1.Anchors:= [akLeft,akTop,akBottom];
Groupbox1.Anchors:= [akLeft,akTop,akRight,akBottom];
end;
end;
いいえ、左と右に数回ドラッグすると、最終的にグループボックスが消えます。これを使用して、
Anchors
を適切に調整することができます。ここで何か奇妙なことが起こっている。 – fullerm@fullerm 'GroupBox1.Anchors'に' akRight'を追加すると、Delphi 10.1 Berlinで問題なく動作しているようです。それがあなたにとってうまくいかない場合は、テストケースに、あなたが私たちに言わなかった何か他のものがなければなりません。 –
私はXEを使用しており、空のプロジェクトでこのコードをテストしました。左側をずっと前後にドラッグすると、ツリービューはグループボックスにオーバーラップします。たぶん、XEにバグがあります。 – fullerm