AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Formfamily

Ein Thema von Union · begonnen am 27. Apr 2013 · letzter Beitrag vom 29. Apr 2013
Antwort Antwort
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#1

Formfamily

  Alt 27. Apr 2013, 20:53
Ich würde gerne abhängig von der Geräteausrichtung unterschiedliche Hauptformulare auf dem GLEICHEN Gerät verwenden. Leider scheint die Wunsch-Ausrichtung (z.b. soPortrait, soLandscape) im TFormfactor gar nicht verglichen zu werden und der Vergleich der Breite und Höhe mit der Geräteauflösung funktioniert nicht so richtig. Hat das schon mal jemand gelöst?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: Formfamily

  Alt 27. Apr 2013, 22:17
Hi,

die Prüfung width > height klappt bei mir. Es gibtauch eine extra Funktion dafür. Suche sie am Montag mal raus.
Philip
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Formfamily

  Alt 27. Apr 2013, 22:29
Das wäre schön. Ich wollte das ganz gerne durch das FMX Framework automatisch erledigen lassen. Das sollte ja ausgehend von TApplication.CreateMainForm auch funktionieren. In GetFormRegistryItem wird dann versucht, das am Besten passende Forumlar der selben FormFamily zu ermitteln. Devices werden hart gefiltert, das ist ok, so kann man verhindern dass ein IPad-Formular auf einem IPhone erzeugt wird. Dann aber wird ausschließlich ein Gewichtiungsfakor zum weiteren Ermitteln des "Best-Fit" herangezogen und in diesen fließt der Orientations-Set nicht mit ein.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Formfamily

  Alt 29. Apr 2013, 09:33
Hi,

anbei wie versprochen die Funktionen mit denen es bei mir klappt:

Delphi-Quellcode:
function isIpad: boolean;
begin
  result := TUIDevice.Wrap(TUIDevice.OCClass.currentDevice).userInterfaceIdiom = UIUserInterfaceIdiomPad;
end;

function isRetina: boolean;
begin
  result := TUIScreen.Wrap(TUIScreen.OCClass.mainScreen).scale >= 2.0;
end;

function isLandscape: boolean;
begin
  result := (TUIDevice.Wrap(TUIDevice.OCClass.currentDevice).orientation = UIDeviceOrientationLandscapeLeft)
    or (TUIDevice.Wrap(TUIDevice.OCClass.currentDevice).orientation = UIDeviceOrientationLandscapeRight);
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  if isLandscape then form1.Label1.Text := 'Querformatelse form1.Label1.Text := 'Hochformat';
  if isRetina then form1.Label2.Text := 'Retinaelse form1.Label2.Text := 'kein Retina';
  if isIpad then form1.Label3.Text := 'ipadelse form1.Label3.Text := 'iPhone';
end;
Wichtig, isRetina funktioniert nicht im Simulator, dafür aber glücklicherweise auf dem Device

P.S.:
Btw. uses [..], iOSapi.UIKit;
Philip

Geändert von Darlo (29. Apr 2013 um 10:42 Uhr) Grund: isLandscape angepasst...
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Formfamily

  Alt 29. Apr 2013, 09:51
Danke für die Funktion. Ich will aber feststellen in welcher Ausrichtung sich das Device VOR dem Erzeugen des ersten Formulars befindet - eben um davon abhängig das passende Forumular zu laden. Ich könnte jetzt nactürlich auch pragmatisch vorgehen und als Hauptformular ein Dummy laden, welches dann an das gewünschte Formular weiterleitet.

Im ScreenService sind die Orientierung und die Bildschirmabmessungen konstant, solange nicht mindestens ein Formular geladen wurde:
Delphi-Quellcode:
var
  ScreenService: IFMXScreenService;
  o : TScreenOrientation;
begin
  Application.Initialize;
  Application.CreateForm(TFormVertical, FormVertical);
  Application.CreateForm(TFormHorizontal, FormHorizontal);
  Application.RegisterFormFamily('Main', [TFormHorizontal, TFormVertical]);

  if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then
    O := ScreenService.GetScreenOrientation; // Funktioniert nicht

  Application.Run;
end.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Formfamily

  Alt 29. Apr 2013, 10:41
Ah, ok.

Habe jetzt leider auch keine Lösung gefunden.
Das einzigste was mir einfällt ist, entweder das MainForm leer zu lassen und den Content entsprechend später zuweisen oder
im Create des letzten Forms das entsprechende Form einblenden...
Philip

Geändert von Darlo (29. Apr 2013 um 10:44 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz