У меня есть форма с TTreeview слева и TGroupbox справа. Когда форма изменяется, перетаскивая ее по правому краю, я хочу, чтобы Groupbox увеличивался или сокращался соответственно. Когда форма перетаскивается слева, я хочу, чтобы Treeview изменил размер. Я попробовал код ниже, и правое изменение размера прекрасно работает. Но оставленное изменение размера приводит к тому, что древовидная структура растет дольше, чем должна. Каким будет правильный способ сделать это?Динамическое изменение размера элементов управления на основе области перетаскивания
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;
Нет, при перетаскивании на левой стороне левой и правой несколько раз Groupbox в конце концов исчезает. Здесь что-то странное. – fullerm
@fullerm Добавление 'akRight' в' GroupBox1.Anchors', кажется, отлично работает в Delphi 10.1 Berlin. Если это не сработает для вас, в вашем тестовом случае должно быть что-то еще, что вы не сказали нам. –
Я использую XE и тестировал этот код в пустом проекте. После многократного перемещения вперед и назад по левой стороне Treeview перекрывается в Groupbox. Возможно, в XE есть ошибка. – fullerm