Если я правильно понимаю ваш вопрос, у вас есть кадры, которые не меняют размер, вы хотите, чтобы форма обновляла размер в соответствии с вашими кадрами.Пусть Delphi справится с этим для вас, используя свойство AutoSize
.
Установите AutoSize = True
для вашей формы.
Я протестировал AutoSize
с помощью следующего кода, используяDelphi 2010
:
- Создайте новое приложение VCL.На пустую форму поместите одну панель, пусть она сохранит свое имя (
Panel1
).Убедитесь, что панель не слишком мала, потому что мы напишем код, чтобы уменьшить ее размер во время выполнения. - Установите для свойства
AutoSize
формы значение True
. - Отпустите две кнопкипанель,
Button1
и Button2
. - Дважды щелкните кнопки и скопируйте и вставьте следующие обработчики событий:
Код:
procedure TForm31.Button1Click(Sender: TObject);
var NewR: TRect;
begin
NewR := Panel1.BoundsRect;
Dec(NewR.Right, 32);
Dec(NewR.Bottom, 32);
Button1.Parent := Self;
Button2.Parent := Self;
Panel1.Free;
Panel1 := TPanel.Create(Self);
Panel1.BoundsRect := NewR;
Panel1.Parent := Self;
Button1.Parent := Panel1;
Button2.Parent := Panel1;
end;
procedure TForm31.Button2Click(Sender: TObject);
begin
Panel1.Height := Panel1.Height - 32;
Panel1.Width := Panel1.Width - 32;
end;
По сути, это дает вам два способа уменьшить размер панели, чтобы справиться с двумя возможными сценариями: Button1
освобождает старую панель и создает новую меньшую панель.Button2
напрямую изменить размер существующей панели.Оба работают как положено!