Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как избежать автоматической ориентации экрана в приложениях Delphi XE3: решение проблемы с TRibbon

Delphi , ОС и Железо , Монитор и Экран

Как избежать автоматической ориентации экрана в приложениях Delphi XE3

Автоматическая ориентация экрана может быть нежелательной функцией, особенно в приложениях, где интерфейс не предназначен для изменения ориентации. В случае использования компонента TRibbon в Delphi XE3, проблема может заключаться в том, что компонент некорректно обрабатывает изменение ориентации экрана, что приводит к зависанию приложения. В данной статье мы рассмотрим, как можно предотвратить автоматическую ориентацию экрана на планшетах, используя примеры на Object Pascal, которые будут полезны разработчикам, работающим с Delphi.

Оригинальный способ ограничения ориентации экрана

Согласно документации Microsoft, существует два основных способа ограничения автоматической ориентации экрана приложения на планшетах:

Метод 1: Изменение файла appxmanifest

Добавление следующего кода в файл appxmanifest может помочь ограничить начальные предпочтения ориентации экрана:

<InitialRotationPreference>
    <Rotation Preference="landscape"/>
    <Rotation Preference="landscapeFlipped"/>
</InitialRotationPreference>

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

Метод 2: Изменение предпочтений ориентации через код

Возможно использование следующего кода для установки предпочтений ориентации:

Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences =
    Windows.Graphics.Display.DisplayOrientations.Landscape;

Для использования данного метода в проектах на Delphi потребуется информация о соответствующем API DLL.

Альтернативное решение для Delphi XE3

Разработчик Jim McKeeth предложил решение, основанное на использовании внешней функции, доступной в Windows 8:

unit MetroDisplayRotation;

interface

type
  TMetroDisplayRotation = class
  public const
    ORIENTATION_PREFERENCE_NONE = $0;
    ORIENTATION_PREFERENCE_LANDSCAPE = $1;
    ORIENTATION_PREFERENCE_PORTRAIT = $2;
    ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED = $4;
    ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED = $8;
    class procedure SetDisplayAutoRotationPreferences(ORIENTATION_PREFERENCE: Integer);
  end;

implementation

uses
  SysUtils, Windows;

{ TMetroDisplayRotation }

class procedure TMetroDisplayRotation.SetDisplayAutoRotationPreferences(
  ORIENTATION_PREFERENCE: Integer);
type
  TSDARP = procedure(ORIENTATION_PREFERENCE: Integer); stdcall;
var
  UserHandle: THandle;
  SDARP: TSDARP;
begin
  UserHandle := GetModuleHandle('User32.dll');
  @SDARP := GetProcAddress(UserHandle, 'SetDisplayAutoRotationPreferences');
  if Assigned(SDARP) then
    SDARP(ORIENTATION_PREFERENCE);
end;

end.

Использование:

TMetroDisplayRotation.SetDisplayAutoRotationPreferences(TMetroDisplayRotation.ORIENTATION_PREFERENCE_LANDSCAPE or TMetroDisplayRotation.ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED);

Этот код следует использовать только в приложениях для Windows 8, так как соответствующая функция не доступна в других операционных системах.

Также существует менее предпочтительный вариант — отключение автоматической ориентации для всего устройства через редактирование реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AutoRotation

Изменение значения параметра Enable на 0 отключит автоматическую ориентацию.

Заключение

В данной статье мы рассмотрели, как можно предотвратить автоматическую ориентацию экрана в приложениях Delphi XE3, используя примеры из реальной практики. Важно помнить, что методы могут зависеть от версии операционной системы и конкретных требований приложения. Разработчикам, работающим с Delphi, следует учитывать эти подходы для обеспечения стабильной и предсказуемой работы своих приложений на устройствах с разной ориентацией экрана.

Создано по материалам из источника по ссылке.

Статья описывает способы ограничения автоматической ориентации экрана в приложениях Delphi XE3, используя различные методы, в том числе редактирование файла `appxmanifest`, изменение предпочтений ориентации через код и использование внешней фун


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Монитор и Экран ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-03-13 22:58:32/0.025365114212036/1