Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
3.929 Beiträge
 
Delphi 12 Athens
 
#1

Kann man die ScreenOrientation per Runtime festlegen ?

  Alt 3. Jul 2015, 16:53
Hallo zusammen,

ich möchte in meiner Fmx App (RadStudio XE8 Pro, Upd1), für verschiedene Views verschiederne ScreenOrientations festlegen.

Dazu gibe es einen ScreenService, der das wie folgt machen soll:

Code:
// Sets the possible Screen orientations (Portrait, Landscape, InvertedPortrait, InvertedLandscape);
procedure Screen_Orientation_Set(const orientSet : TScreenOrientations );
var
  ScreenService: IFMXScreenService;

begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then
  begin
    ScreenService.SetScreenOrientation(orientSet);
  end;
end;
Damit das funktinoiert (auch die Events bei OnOrientationChange übrigens), muss wohl in
den Options\Application\Orientation die Liste der Kandidaten angeclickt sein.


Soweit, so gut.
Aber wenn ich weiter in die Sourcen schaue sieht es bei iOS so aus:

Code:
procedure TPlatformCocoaTouch.SetScreenOrientation(
  AOrientations: TScreenOrientations);
begin
  // Not needed for iOS
end;
Das ist offenbar nie dafür gedacht gewesen die ScreenOrientation mal eben per Runtime festzulegen,
sondern einmal für die ganze App.

Bei Android gibt es etwas im Sourcecode, das muss ich noch ausprobieren,
aber ich möchte das halt für beide gleich haben.

Ich möchte halt die eine View so festlegen:
Code:
Screen_Orientation_Set([Portrait, Landscape, InvertedPortrait, InvertedLandscape] );
und die andere View z.B. so:
Code:
Screen_Orientation_Set([Portrait, InvertedPortrait, ] );
Geht das überhaupt, und wenn ja wie ?

Der ScreenOrientation Service scheint jedenfalls nicht dafür zu gebrauchen zu sein (wofür er
dann überhaupt da ist wäre noch eine andere Frage ...).

Rolf
  Mit Zitat antworten Zitat