powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / XE8 vs Berlin 10.1 поломали DPI?
19 сообщений из 19, страница 1 из 1
XE8 vs Berlin 10.1 поломали DPI?
    #39219703
Berlin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На компьютере с DPI отличным от 96 (в моем случае 120) создаем новое приложение с кнопкой и меткой.

В XE8 в рантайме все такого же размера как в дизайнтайме, в Berlin все увеличивается на 25%. А не должно, так как design-time DPI совпадает с run-time DPI.

Виновник похоже находится в TControl, в результате чего форма считает что она была сделана на 96 DPI:

Код: pascal
1.
2.
3.
4.
5.
constructor TControl.Create(AOwner: TComponent);
begin
  ...
  FCurrentPPI := 96;
end;



Это баг?

XE8:


Berlin:
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39219705
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Berlin,

А у формы PixelsPerInch чему равно в дизайне?
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39219707
Berlin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторА у формы PixelsPerInch чему равно в дизайне?

Оно равно 120. В принципе убирание строчки
Код: pascal
1.
FCurrentPPI := 96;


из конструктора TControl проблему решает, но не факт что не ломается что-то еще.
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39219929
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. А чего не так? Дизайн-тайм не увеличенный? Ну и хорошо.
2. Почему сравниваешь с хе8 а не с сиэттлом? High dpi в нем допиливали.
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39219967
Berlin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat,

Ну хотя бы тем что оно перестало быть WYSIWYG и любой софт пересобранный Berlin делается визуально на 25% больше. То есть дизайн выглядит не фига не так, как должен был.

С Сиэттлом сравнить не могу, пропустил эту версию. Галка High DPI в настройках не влияет.
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39219969
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scaled = False и наслаждайся видом 1 в 1.
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39219975
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С точки зрения DPI IDE никогда не было WYSIWYG.
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39219985
Berlin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreatScaled = False и наслаждайся видом 1 в 1.

Тогда оно не будет масштабироваться вообще. Это не выход.

Я полагаю, что форма сдизайненая на 120 DPI должна выглядеть одинаково в дизайне и рантайме. По крайней мере так было всегда.

Завел баг , посмотрим.
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39219998
errorsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Berlin,

Думаю если в дизайнере форма начнет подстраиваться под DPI мы получим много новых неведомых глюков.
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39220001
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BerlinrgreatScaled = False и наслаждайся видом 1 в 1.

Тогда оно не будет масштабироваться вообще. Это не выход.

Я полагаю, что форма сдизайненая на 120 DPI должна выглядеть одинаково в дизайне и рантайме. По крайней мере так было всегда.

Завел баг , посмотрим.
Дизайнер работатет в 96 DPI.

Это не баг.
Мне удобней и понятней текущее поведение дизайнера чем то что предлогаешь ты.
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39220002
Berlin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
errorsoftBerlin,

Думаю если в дизайнере форма начнет подстраиваться под DPI мы получим много новых неведомых глюков.

Да и не надо постраиваться.

Я ж говорю что сломали прошлое поведение - теперь любое приложение сдизайненное не на 96 DPI масштабируется неправильно. Я уже по коду прошелся, происходит scaling когда его быть не должно.
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39220011
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чуть поясню. 96 DPI - стандарт по умолчанию, и у большинства прользователей выставлен именно он.

Если писать ПО исключительно под себя - тогда понятно что удобный чтоб дизайнилось в текущем DPI, однако в большинстве случаев надо чтобы форма выглядела прилично именно на 96 DPI, что при уменьшении с "как-бы дефолтных" 120 может (и скорей всего так и будет) и не срастись.
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39220018
errorsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Berlin,

Тогда проще всего один раз вручную поправить dfm файлы при переходе на Seattle/Berlin
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39220089
Berlin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поизучал еще Vcl.Controls.pas, насколько я могу судить выделенная строчка не исполняется никогда, таким образом PixelsPerInch формы тупо игнорируется. Потому и такое поведение, и врядли это так и задумано.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
  TControl = class(TComponent)
  protected
    ...
    FCurrentPPI: Integer;
    ...
  end;

constructor TControl.Create(AOwner: TComponent);
begin
  ...
  FCurrentPPI := 96;
end;

procedure TControl.ScaleForPPI(NewPPI: Integer);
begin
  if not FIScaling and (NewPPI > 0) then
  begin
    FIScaling := True;
    try
      if FCurrentPPI = 0 then
        FCurrentPPI := GetDesignDpi;

      if NewPPI <> FCurrentPPI then
        ChangeScale(NewPPI, FCurrentPPI, True);
    finally
      FIScaling := False;
    end;
  end;
end;

function TControl.GetDesignDpi: Integer;
var
  LForm: TCustomForm;
begin
  LForm := GetParentForm(Self);
                                                                                         
  if (LForm <> nil) and (LForm is TForm) then
    Result := TForm(LForm).PixelsPerInch
  else
    Result := 96;                                                              
end;
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39220099
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это новый код. В 10-ке его нет.
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39220632
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Berlin,

Scaled лучше отключать. Если сильно хочется можно форму масштабировать самому в рантайме - ScaleBy.
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39220635
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Berlin,

Что-то они там явно правили с dpi, если считаешь, что баг - пиши в qc.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
XE8 vs Berlin 10.1 поломали DPI?
    #39592370
Vladimir1212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решилась как-то эта проблема?
Перешёл с XE8 на Tokyo 10.2.2 : те же грабли с масштабированием форм на том же компьютере, где идёт разработка . У меня на нём тоже задан пользовательский масштаб для Винды 125% (DPI=120).
Пока пришлось установить для всех форм Scaled = False, а в обработчике события FormShow задать:
Код: pascal
1.
2.
3.
4.
procedure TForm.FormShow(Sender: TObject);
begin
ScaleBy(PixelsPerInch, 120);
end;


Каряво, как-то... Считаю, что тот факт, что на свойство PixelsPerInch в Object-Inspector теперь (в Berlin, Tokyo) вовсе нет никакой реакции - это БАГ!
...
Рейтинг: 0 / 0
XE8 vs Berlin 10.1 поломали DPI?
    #39592380
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir1212Решилась как-то эта проблема?Ну как сказать?
Berlin Завел баг Status: Closed
Resolution: Cannot Reproduce
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / XE8 vs Berlin 10.1 поломали DPI?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]