
Сегодня я расскажу как растягивал форму в 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;
Для проверки работоспособности кода поместим на форму две кнопки, в разные углы формы.
В результате работы данного приложения, мы получим следующую картину при запуске:
Комментариев: 1 RSS
1 Андрей 22-09-2011 01:49
Ну что Вы, автор, не красиво без рабочего примера (демо), что бы можно было поиграть, посмотреть а только потом заглядывать в код..
Хотя тут то и нечего смотреть, пример простенький, но на будущее, лучше везде прикреплять исходники и примеры.