Перейти к содержанию
  • Регистрация
  • 0
Alex7wrt

Определение положения экрана

Вопрос

Добрый день.
В приложении использую только портретную ориентацию экрана.

Application.FormFactor.Orientations := [TFormOrientation.Portrait];

Необходимо определить, что устройство повернулось в альбомный вид (при этом интерфейс все время отображается в портретном виде)

Как такое реализовать? Есть ли такие функции в FMX или обязательно нужно использовать датчики?

Изменено пользователем Alex7wrt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

  • 0

Там есть пример как отследить изменение положения экрана

Изменено пользователем Rusland

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Самый простой и тупой способ это у формы в OnResize анализировать ширину и высоту. Этот способ будет одинаково работать везде.

Если хочется более нативного варианта решения задачи, то можно воспользоваться TfgApplicationEvents.OnDeviceOrientationChanged.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Спасибо, с OnResize уже начал делать, нужно попробовать с TfgApplicationEvents.OnDeviceOrientationChanged 

Наверно, вы имели ввиду TfgApplicationEvents.OnOrientationChanged?

Изменено пользователем Alex7wrt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
10 минут назад, Alex7wrt сказал:

Спасибо, с OnResize уже начал делать, нужно попробовать с TfgApplicationEvents.OnDeviceOrientationChanged 

Наверно, вы имели ввиду TfgApplicationEvents.OnOrientationChanged?

Да точно! :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Вариант с TfgApplicationEvents.OnOrientationChanged тоже не подходит. 

Следующий код

procedure TForm1.fgApplicationEvents1OrientationChanged(const AOrientation: TScreenOrientation);
begin
    if AOrientation = TScreenOrientation.Portrait then text7.Text:='portrait'
    else if AOrientation = TScreenOrientation.Landscape then text7.Text:='landscape';
end;

Всегда возвращает 'portrait' при вращении устройства.

По-видимому остается только вариант с OnResize и сравнением ширины и высоты.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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


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

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

×
×
  • Создать...