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

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

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

Ну что Вы, автор, не красиво без рабочего примера (демо), что бы можно было поиграть, посмотреть а только потом заглядывать в код..

Хотя тут то и нечего смотреть, пример простенький, но на будущее, лучше везде прикреплять исходники и примеры.

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

     

  

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)