Я бы подумал, что в XE4 будет событие OnRotate
, но оказывается, что используется OnResize
. Понял.Обнаружение ориентации iPad в Delphi
Однако мне нужно определить, какая ориентация устройства. Я уверен, что это просто, но Google не может помочь!
Я бы подумал, что в XE4 будет событие OnRotate
, но оказывается, что используется OnResize
. Понял.Обнаружение ориентации iPad в Delphi
Однако мне нужно определить, какая ориентация устройства. Я уверен, что это просто, но Google не может помочь!
Для определения текущей ориентации устройства вы можете использовать метод 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;
Пробовал это с портретом и перевернутым портретом, если вы вызываете код в Onresize, он выглядит следующим образом: : обнаружен портрет, обнаружен инвертированный портрет, затем он перестает обнаруживать какие-либо изменения. Может быть, я делаю что-то неправильно ... опубликую, если узнаю. –
Кажется, что проверка высоты и ширины - это путь. Если h> w, то potrait, иначе пейзаж. Удивительно, что в этом нет ничего.
Вы можете использовать свою функцию на OnResize случае основной формы.
функция TERMainForm.GetOrientation: TScreenOrientation; var
Ориентация: IFMXScreenService; начинают
, если TPlatformServices.Current.SupportsPlatformService (IFMXScreenService, IInterface (ориентации)), то
начинают Результат: = OrientationS.GetScreenOrientation;
конец
еще raise Exception.Create ('Ориентация не поддерживается'); конец;
OnResize больше не увольняется при изменении ориентации. См. Новое решение здесь: http://stackoverflow.com/questions/32670119/delphi-android-detect-device-orientation-change – Hans