Перейти к содержанию
Fire Monkey от А до Я
  • 0

Один размер под разные дисплеи


d7d1cd

Вопрос

Привет всем! Не знал в каком разделе форума задать свой вопрос, поэтому задам тут.

Существует ли в FMX способ, при помощи которого можно создать полноэкранное приложение для Windows так, что видимый размер элементов управления окна будет одинаков для дисплеев всех размеров? Например, приложение запущено на планшете с диагональю 8 дюймов. Размер кнопки, измеренный линейкой приложенной к экрану, 40х10 мм. Затем это же приложение запускается на десктопе с диагональю 27 дюймов. Размер кнопки так же 40х10 мм.

 

P.S. Измените, пожалуйста, название темы на "Один размер под разные дисплеи".

Изменено пользователем d7d1cd
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

В FireMonkey нету реализации того, что вы хотите. 

 

Так что единственный вариант, самостоятельно вычислять на основании DPI все размеры контролов. Вы можете сделать некий вариант менеджера, который будет изменять все размеры контролов согласно текущему DPI.

Ссылка на комментарий
  • 0

простой способ - это предложить пользователю программы ввести диагональ своего монитора, чтобы он мог точно оценить размеры того, что на экране. Типа: хотите увидеть реальные размеры чего-то там, тогда введите сколько у вас дюймов в диагонали.

Тогда на основании этой величины и разрешения экрана вычислить размер пикселя как отношение диагонали к квадратному корню из суммы квадратов ширины и высоты экрана в пикселях. И еще умножить на 25.4 (к-во миллиметров в дюйме).

И если, к примеру, оказалось что размер пикселя равен 0.23 мм, то, чтобы кнопка была размером 40 на 10 мм, нужно задать ей размеры 40/0.23 и 10/0.23 пикселей.

 

P.S. По предыдущему ответу догадываюсь, что в WinAPI все-же есть функция считывания DPI. Тогда все вообще элементарно. Не нужно даже просить пользователя ввести диагональ. )) Но мне не доводилось пользоваться такой функцией.

Изменено пользователем Alex7wrt
Ссылка на комментарий
  • 0

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

 

Хотелось бы реализовать примерно такой механизм:

1. Программа создается на компьютере с каким то монитором определенного размера и определенным разрешением.

2. Для этого монитора и разрешения коэффициент увеличения (назовем его так) равен 1.

3. Все элементы управления на этом мониторе создаются таких размеров, какие требуются.

4. При запуске программа вычисляет выше указанный коэффициент и увеличивает (при коэффициенте меньше 1 - уменьшает) все формы программы. При этом элементы управления тоже увеличиваются (уменьшаются) как на картинке, размер которой меняют.

 

Тут, конечно, есть проблема, когда соотношение сторон на проектировочном компьютере отличается от такого соотношения на рабочем. Пусть это будут пока детали...

Как вы считаете, возможно реализовать такой механизм, используя свойство Scale, например?

 

P.S. Наверное, моя тема тесно связана с этой http://fire-monkey.ru/topic/1205-masshtabirovanie-elementov-otnositelno-razme/#entry5472

Изменено пользователем d7d1cd
Ссылка на комментарий
  • 0

Тогда уж проще юзать TScaledLayout

То есть, вы имеете ввиду класть все элементы управления на TScaledLayout, а потом увеличивать (уменьшать) размеры всех элементов меняя свойство Scale у данного компонента?

Ссылка на комментарий
  • 0

Нет, просто помещаете все на TScaledLayout, а он сам уже вычисляет увеличить надо или уменьшить.

Изменено пользователем xenon54
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...