Руслан Гайсин
Сегодня я расскажу как растягивал форму в Delphi во весь экран без искажения из-за разных соотношений высоты и ширины экрана. И изменение масштаба компонент установленных на форме.
Создаем новый проект в Делфи. И кидаем на форму панель - Panel1, установив для нее свойство Align = alClient (растягивать по форме).
Самой форме необходимо поменять свойства BorderStyle = bsNone и WindowState = wsMaximized

Создаем процедуру procedure FullScreen(oForm: TForm; oPanel: TPanel);
Со следующим кодом:
procedure TForm1.FullScreen(oForm: TForm; oPanel: TPanel); var percentw,percenth: integer; begin oPanel.Align := alNone; oForm.Color := clBlack; //Цвет участков за панелью if Screen.Width > 800 then begin percentw := Round(((Screen.Width - 800) / 800) * 100) + 100; percenth := Round(((Screen.Height - 600) / 600) * 100) + 100; if (percentw < percenth) then oForm.ScaleBy(percentw, 100) else oForm.ScaleBy(percenth, 100); end; oForm.Height := Screen.Height; oForm.Width := Screen.Width; oPanel.Top := Round((oForm.Height - oPanel.Height) / 2); oPanel.Left := Round((oForm.Width - oPanel.Width) / 2); end;
В данном коде вместо 800, подставляем ширину формы при разработке приложения. А вместо 600 высоту.
Я выносил эту процедуру в отдельный файл (unit), поэтому сделал передачу формы в процедуру.
Создаем процедуру FormCreate, которая выполняется при создании формы
procedure TForm1.FormCreate(Sender: TObject); begin FullScreen(Form1,Panel1); end;
Для проверки работоспособности кода поместим на форму две кнопки, в разные углы формы.

В результате работы данного приложения, мы получим следующую картину при запуске:

Ссылки по теме