Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как написать приложение, адекватно отображающееся на экранах с различным разрешением монитора

Delphi , ОС и Железо , Монитор и Экран

Как написать приложение, адекватно отображающееся на экранах с различным разрешением монитора


Существует ровно один интуитивно понятный интерфейс - соска. Остальные осваиваются путем обучения.


unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
  Button1: TButton;
  Edit1: TEdit;
  procedure Button1Click(Sender: TObject);
  procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    // Отлавливаем, сообщение о изменении разрешения экрана
    procedure WMDisplayChange(var message: TMessage); message WM_DISPLAYCHANGE;
  public
    { Public declarations }
    W, H: integer;
end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Width := Round(Width * 1.5);
  Height := Round(Height * 1.5);
  ScaleBy(150, 100)
end;

procedure TForm1.WMDisplayChange(var message: TMessage);
begin
  inherited;
  Width := Round(Width * LOWORD(message.LParam) / W);
  Height := Round(Height * HIWORD(message.LParam) / H);
  ScaleBy(LOWORD(message.LParam), W);
  W := Screen.Width;
  H := Screen.Height;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  W := Screen.Width;
  H := Screen.Height;
end;

end.

Перевод контента на русский язык:

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

Создание формы В процедуре FormCreate вы устанавливаете начальные значения W и H в соответствии с текущим шириной и высотой экрана, используя Screen.Width и Screen.Height. Это хорошая практика.

Клик по кнопке В процедуре Button1Click вы увеличиваете ширину и высоту формы на 50% умножением их на 1,5 и округлением результатов. Вы также используете ScaleBy, чтобы масштабировать все дочерние контролы. Хотя это работает, может не быть лучшим подходом, так как может вызвать проблемы с расположением.

Обработка сообщения WM_ DISPLAYCHANGE Процедура WMDisplayChange отвечает за обработку сообщения WM_ DISPLAYCHANGE, которое отправляется при изменении разрешения экрана. Вы обновляете ширину и высоту формы в соответствии с новым разрешением экрана, используя значения из параметра LParam сообщения. Вы также обновляете переменные W и H, чтобы отражать новый размер экрана.

Предложения 1. Используйте более robust layout management: вместо зависимости только от масштабированияconsider using a grid or panel-based layout that can adapt to different screen resolutions. 2. Обновляйте позиции и размеры дочерних контролов: помимо обновления ширины и высоты формы, обновляйте позиции и размеры дочерних контролов (например, кнопок, меток) для обеспечения их правильного расположения и размера. 3. Рассмотрите более современный подход: Delphi 2007 - это старая версия языка. Если возможно, рассмотрите возможность обновления до newer version или использования альтернативных библиотек, которые обеспечивают лучшую поддержку современных разрешений экрана.

Вот обновленная версия процедуры WMDisplayChange, которая включает некоторые из этих предложений:

procedure TForm1.WMDisplayChange(var message: TMessage);
begin
  inherited;
  Width  := Round(Width  * LOWORD(message.LParam) / W);
  Height := Round(Height * HIWORD(message.LParam) / H);
   // Обновляйте позиции и размеры дочерних контролов
  Button1.Left  := Round(Button1.Left  * LOWORD(message.LParam) / W);
  Button1.Top   := Round(Button1.Top   * HIWORD(message.LParam) / H);
  Button1.Width := Round(Button1.Width * LOWORD(message.LParam) / W);
  Button1.Height:= Round(Button1.Height* HIWORD(message.LParam) / H);
   // Обновляйте любые другие дочерние контролы, которые нужно обновить
end;

Не забудьте обновлять позиции и размеры всех дочерних контролов в этой процедуре.

В статье описывается способ создания приложения на языке Delphi, адаптирующегося к различным разрешениям монитора с помощью отловки сообщений о изменении разрешения экрана и перерасчета размеров формы в соответствии с новым разрешением.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Монитор и Экран ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-07-11 10:56:03/0.0065510272979736/0