0 Пользователей и 1 Гость просматривают эту тему.
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;
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;
А если такПодробнее...Код: [Выделить]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;
Тут явно баг
В случае с контейнерами это багом не считалось.
Что именно? Текущий размер контейнера?
Да
Размер возвращается в пикселях ровно тот, который контейнер занимает.
А вот если скин не будет поддерживать масштабирование, то и этот размер будет возвращаться = 100%, т.к. растягивание будет происходить самого окна, а не контейнера.
Да, в этом и проблема. Не вижу практического применения этому размеру при создании скина.Не понял, скины с поддержкой масштабирования и без нее работают с контейнерами по-разному? Можно поподробнее?Кстати, в справке у свойства объекта PlaceInfo.ActualXXX и у свойств контейнера Width/Height одинаковое описание: "реальные размеры элемента (только чтение).", при этом одно возвращает размер с учетом масштаба, а другое - без.
Вы до этого размеры контейнера как получали? Через что-то еще?
PlaceInfo.ActualXXX возвращают размеры для масштаба в 100%, не важно какой он и кем обрабатывается.
Вот, попробуйте на этой сборке:https://yadi.sk/d/U_XW1N9m3VGRgJСейчас должно быть все нормально
Размеры контейнера получал через Width/Height, потом применял костыль как в посте выше. Да, логично было бы, если б у контейнера тоже было свойство, возвращающее размеры для масштаба в 100%.
Нужно запрашивать ActualWidth и ActualHeight, они возвращают размеры независимые от dpi.