procedure TForm1.FormShow(Sender: TObject);
var
r : TRect;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, @r,0);
Form1.SetBounds(r.left, r.top, r.Right - r.left, r.bottom - r.top);
end;
Here's a translation of the text into Russian:
Код на Delphi, который пытается заполнить форму всей экранной площадки при ее отображении. Вот разбивка кода:
Событие FormShow вызывается при первом отображении формы.
Функция SystemParametersInfo используется для получения рабочей зоны десктопа, исключая панели задач, меню и другие не-клиентские области. Параметр SPI_GETWORKAREA указывает, что мы хотим получить информацию о рабочей зоне.
Синтаксис @r используется для передачи ссылки на переменную типа TRectr в качестве аргумента функции SystemParametersInfo. Это позволяет получать информацию о рабочей зоне в переменной r.
Метод SetBounds формы используется для установки границ формы (то есть ее положения и размера) на основе значений, хранящихся в переменной r. Специально левая, верхняя, правая и нижняя координаты формы устанавливаются в соответствующие координаты прямоугольника рабочей зоны.
Однако в этом коде есть несколько проблем:
Form1 в Form1.SetBounds не является необходимым, потому что метод SetBounds является экземплярным методом класса TForm, и он может быть вызван напрямую на объекте формы.
Синтаксис @r не является необходимым, потому что функция SystemParametersInfo принимает указатель на переменную типа TRect в качестве последнего аргумента.
Вот улучшенная версия кода:
procedure TForm1.FormShow(Sender: TObject);
var
r: TRect;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, @r, 0);
SetBounds(r.left, r.top, r.Right - r.left, r.bottom - r.top);
end;
Альтернативно можно использовать свойства ClientWidth и ClientHeight, чтобы установить размер формы в соответствии с рабочей зоной:
Эта подход более прост и элегантен, чем использовать метод SetBounds с явными координатами.
В статье описывается процедура TForm1.FormShow, которая изменяет размер формы на весь экран по умолчанию, используя функцию SystemParametersInfo для получения области рабочего стола.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.