Настройка Font.Size не работает правильно в конструкторе TFrame с масштабированием 150% (Delphi 10.2 Tokyo) - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть TFrame с 2 метками.Один установлен на Verdana 10 во время разработки.Другой установлен в Verdana 10 в конструкторе TFrame.

Внешний вид времени разработки:

enter image description here

procedure TMyFrame.Button1Click(Sender: TObject);
begin
  SetFont;
end;

constructor TMyFrame.Create(AOwner: TComponent);
begin
  inherited;
  SetFont;
end;

procedure TMyFrame.SetFont;
begin
  Label1.Font.Name := 'Verdana';
  Label1.Font.Size := 10;
end;

Я создаюКадр динамически в главной форме:

procedure TForm1.FormCreate(Sender: TObject);
begin
  FMyFrame := TMyFrame.Create(Self);
  FMyFrame.Parent := Self;
  FMyFrame.Align := alClient;
end;    

Когда я запускаю приложение, метка со шрифтом, измененная во время выполнения (в конструкторе TFrame.Create), непропорционально велика:

enter image description here

Если я нажму на кнопку, размер метки будет изменен правильно: enter image description here

Таким образом, код работает правильно во время выполнения, простоне работает в TFrame.Create.

Как это можно исправить?

Я работаю в Windows 10 с масштабированием 150% и Delphi 10.2 Tokyo.

РЕДАКТИРОВАТЬ

Основываясь на комментарии, я добавил несколько обработчиков для Font.OnChange, как показано ниже:

constructor TMyFrame.Create(AOwner: TComponent);
begin
  inherited;
  Self.Font.OnChange := FontChanged;
  Self.Label1.Font.OnChange := LabelFontChanged;
  SetFont;
end;

procedure TMyFrame.FontChanged(Sender: TObject);
begin
  // empty
end;

procedure TMyFrame.LabelFontChanged(Sender: TObject);
begin
  // empty
end;

То, что я нахожу очень странным, это то, чтов этом случае результат, как и ожидалось (т. е. правильный Verdana 10).Простая установка обработчика OnChange для Frame.Font и Label.Font, даже если они пусты, приведет к другому / правильному результату.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...