AIMP Forum

AIMP для Windows => Skin Editor / Skin Engine => Ошибки / Замечания => Topic started by: Kibermanick on May 03, 2018, 14:04:01

Title: [x] [2075] Неправильное отображение положений объектов меняющихся через скрипт.
Post by: Kibermanick on May 03, 2018, 14:04:01
Code: [Select]
procedure Execute(Sender, Arguments: TComponent);
begin
      FindObject('BT').Set('PlaceInfo.Margins.Left', Arguments.Get('X')-(FindObject('BT').Get('PlaceInfo.Size.Width')/2)  );
      FindObject('BT').Set('PlaceInfo.Margins.Top', Arguments.Get('Y')-(FindObject('BT').Get('PlaceInfo.Size.Width')/2)  );
end;

Видео:  https://yadi.sk/i/y79Bmelu3VEfAR
Title: Re: Неправильное отображение положений объектов меняющихся через скрипт.
Post by: gr-e on May 03, 2018, 16:37:54
А если так
Code: [Select]
procedure Execute(Sender, Arguments: TComponent);
var scaling: Double;
begin
      scaling := BindingsGetDataAsInteger('AIMPMainForm', 'CurrentDPI') / 96;
      FindObject('BT').Set('PlaceInfo.Margins.Left', Arguments.Get('X')/scaling - FindObject('BT').Get('PlaceInfo.Size.Width')/2);
      FindObject('BT').Set('PlaceInfo.Margins.Top', Arguments.Get('Y')/scaling - FindObject('BT').Get('PlaceInfo.Size.Width')/2);
end;
Title: Re: Неправильное отображение положений объектов меняющихся через скрипт.
Post by: Kibermanick on May 03, 2018, 16:45:55
А если так
Code: [Select]
procedure Execute(Sender, Arguments: TComponent);
var scaling: Double;
begin
      scaling := BindingsGetDataAsInteger('AIMPMainForm', 'CurrentDPI') / 96;
      FindObject('BT').Set('PlaceInfo.Margins.Left', Arguments.Get('X')/scaling - FindObject('BT').Get('PlaceInfo.Size.Width')/2);
      FindObject('BT').Set('PlaceInfo.Margins.Top', Arguments.Get('Y')/scaling - FindObject('BT').Get('PlaceInfo.Size.Width')/2);
end;

Так работает, спасибо.
Title: Re: Неправильное отображение положений объектов меняющихся через скрипт.
Post by: Artem on May 03, 2018, 19:57:18
Повторяю - не надо писать костылей! Тут явно баг, ваши костыли в следующем же обновлении перестанут работать, а виноват буду я
Title: Re: Неправильное отображение положений объектов меняющихся через скрипт.
Post by: gr-e on May 03, 2018, 21:11:03
Тут явно баг
В случае с контейнерами это багом не считалось.
Title: Re: [x] [2075] Неправильное отображение положений объектов меняющихся через скрипт.
Post by: Artem on May 03, 2018, 21:17:36
Вот, попробуйте на этой сборке:
https://yadi.sk/d/U_XW1N9m3VGRgJ

Сейчас должно быть все нормально
Title: Re: [x] [2075] Неправильное отображение положений объектов меняющихся через скрипт.
Post by: Artem on May 03, 2018, 21:17:59
В случае с контейнерами это багом не считалось.

Что именно? Текущий размер контейнера?
Title: Re: [x] [2075] Неправильное отображение положений объектов меняющихся через скрипт.
Post by: gr-e on May 03, 2018, 21:43:15
Что именно? Текущий размер контейнера?
Да
Title: Re: [x] [2075] Неправильное отображение положений объектов меняющихся через скрипт.
Post by: Artem on May 03, 2018, 21:58:47
Да

Размер возвращается в пикселях ровно тот, который контейнер занимает.  А вот если скин не будет поддерживать масштабирование, то и этот размер будет возвращаться = 100%, т.к. растягивание будет происходить самого окна, а не контейнера.
Title: Re: [x] [2075] Неправильное отображение положений объектов меняющихся через скрипт.
Post by: gr-e on May 03, 2018, 22:58:05
Размер возвращается в пикселях ровно тот, который контейнер занимает.
Да, в этом и проблема. Не вижу практического применения этому размеру при создании скина.
А вот если скин не будет поддерживать масштабирование, то и этот размер будет возвращаться = 100%, т.к. растягивание будет происходить самого окна, а не контейнера.
Не понял, скины с поддержкой масштабирования и без нее работают с контейнерами по-разному? Можно поподробнее?

Кстати, в справке у свойства объекта PlaceInfo.ActualXXX и у свойств контейнера Width/Height одинаковое описание: "реальные размеры элемента (только чтение).", при этом одно возвращает размер с учетом масштаба, а другое - без.
Title: Re: [x] [2075] Неправильное отображение положений объектов меняющихся через скрипт.
Post by: Artem on May 04, 2018, 00:35:46
Да, в этом и проблема. Не вижу практического применения этому размеру при создании скина.Не понял, скины с поддержкой масштабирования и без нее работают с контейнерами по-разному? Можно поподробнее?

Кстати, в справке у свойства объекта PlaceInfo.ActualXXX и у свойств контейнера Width/Height одинаковое описание: "реальные размеры элемента (только чтение).", при этом одно возвращает размер с учетом масштаба, а другое - без.


Я запутался. PlaceInfo.ActualXXX возвращают размеры для масштаба в 100%, не важно какой он и кем обрабатывается. Вы до этого размеры контейнера как получали? Через что-то еще?
Title: Re: [x] [2075] Неправильное отображение положений объектов меняющихся через скрипт.
Post by: gr-e on May 04, 2018, 02:33:30
Вы до этого размеры контейнера как получали? Через что-то еще?
Размеры контейнера получал через Width/Height, потом применял костыль как в посте выше.
PlaceInfo.ActualXXX возвращают размеры для масштаба в 100%, не важно какой он и кем обрабатывается.
Да, логично было бы, если б у контейнера тоже было свойство, возвращающее размеры для масштаба в 100%.
Title: Re: [x] [2075] Неправильное отображение положений объектов меняющихся через скрипт.
Post by: Kibermanick on May 04, 2018, 07:14:39
Вот, попробуйте на этой сборке:
https://yadi.sk/d/U_XW1N9m3VGRgJ

Сейчас должно быть все нормально

Да, все работает как должно. Спасибо. :)
Title: Re: [x] [2075] Неправильное отображение положений объектов меняющихся через скрипт.
Post by: Artem on May 04, 2018, 07:37:10
Размеры контейнера получал через Width/Height, потом применял костыль как в посте выше. Да, логично было бы, если б у контейнера тоже было свойство, возвращающее размеры для масштаба в 100%.

Нужно запрашивать ActualWidth и ActualHeight, они возвращают размеры независимые от dpi.
Title: Re: [x] [2075] Неправильное отображение положений объектов меняющихся через скрипт.
Post by: gr-e on May 04, 2018, 13:51:15
Нужно запрашивать ActualWidth и ActualHeight, они возвращают размеры независимые от dpi.
У контейнеров нет таких свойств.
Title: Re: [x] [2075] Неправильное отображение положений объектов меняющихся через скрипт.
Post by: Artem on May 04, 2018, 14:47:34
У контейнеров нет таких свойств.

LayoutContainer? Да, возможно... значит нужно сделать.