2013-07-11 4 views
1

Я бы подумал, что в XE4 будет событие OnRotate, но оказывается, что используется OnResize. Понял.Обнаружение ориентации iPad в Delphi

Однако мне нужно определить, какая ориентация устройства. Я уверен, что это просто, но Google не может помочь!

+0

OnResize больше не увольняется при изменении ориентации. См. Новое решение здесь: http://stackoverflow.com/questions/32670119/delphi-android-detect-device-orientation-change – Hans

ответ

6

Для определения текущей ориентации устройства вы можете использовать метод statusBarOrientation, который является частью класса UIApplication.

Попробуйте этот образец

uses 
    iOSapi.UIKit; 

function SharedApplication:UIApplication; 
begin 
    Result:=TUIApplication.Wrap(TUIApplication.OCClass.sharedApplication); 
end; 

procedure TForm23.Button1Click(Sender: TObject); 
var 
    LOrientation: Cardinal; 
begin 
    LOrientation := SharedApplication.statusBarOrientation; 
    if (LOrientation = UIDeviceOrientationLandscapeLeft) or (LOrientation = UIDeviceOrientationLandscapeRight) then 
    ShowMessage('Landscape') 
    else 
    if (LOrientation = UIInterfaceOrientationPortrait) then 
    ShowMessage('Portrait'); 
end; 
+0

Пробовал это с портретом и перевернутым портретом, если вы вызываете код в Onresize, он выглядит следующим образом: : обнаружен портрет, обнаружен инвертированный портрет, затем он перестает обнаруживать какие-либо изменения. Может быть, я делаю что-то неправильно ... опубликую, если узнаю. –

1

Кажется, что проверка высоты и ширины - это путь. Если h> w, то potrait, иначе пейзаж. Удивительно, что в этом нет ничего.

0

Вы можете использовать свою функцию на OnResize случае основной формы.

функция TERMainForm.GetOrientation: TScreenOrientation; var
Ориентация: IFMXScreenService; начинают
, если TPlatformServices.Current.SupportsPlatformService (IFMXScreenService, IInterface (ориентации)), то
начинают Результат: = OrientationS.GetScreenOrientation;
конец
еще raise Exception.Create ('Ориентация не поддерживается'); конец;

Смежные вопросы