Растягивание формы на весь экран. Программирование Delphi.

Источник: rgblog
Руслан Гайсин

Сегодня я расскажу как растягивал форму в 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;

Для проверки работоспособности кода поместим на форму две кнопки, в разные углы формы.

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


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=33722