IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

Rotation du téléphone [Android]


Sujet :

Composants FMX Delphi

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut Rotation du téléphone
    Bonjour,

    Encore une bouteille à la mer
    Je m'explique mieux :
    J'ai un tlayout1 en Align=top, un autre en client, qui contient deux autres layout top et client
    Lorsque le téléphone est vertical, je souhaite que ce soit comme décrit ci-dessus (les deux tlayout l'un en dessous de l'autre), mais lorsque je met le téléphone ou la tablette en horizontal, je souhaiterai que le 1er layout ne soit plus en top, mais en left, avec la moitié de l'écran seulement et que le layout client prenne la place libre à droite (que les deux tlayout soit côte à côte).
    Je ne sais pas si j'explique bien ...
    Je n'arrive pas à m'en sortir. Je croyais qu'il fallait le définir avec les vues, mais ça ne conserve pas pour chaque orientation la configuration donnée.
    Y a t'il une astuce pour arriver à ce résultat ?
    Je n'ai pas trouvé d'événement onrotate ou de ce genre ? mais j'ai peut-être mal cherché ? et puis le docwiki embarcadero est dans les choux ...

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 785
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    as-tu pensé au TFlowLayout ?

    démo :
    Nom : Capture.PNG
Affichages : 178
Taille : 28,2 Ko

    Nom : Capture.PNG
Affichages : 174
Taille : 23,7 Ko

    explication à ta mode, j'ai un layout (align left) et un TFlowlayout (align client) contenant 2 TLayouts (ou plutôt dans mon cas des TRectangles) non alignés.

    Je n'ai pas trouvé d'événement onrotate ou de ce genre ?
    Bonne question, n'ayant que peu développé pour Android je n'ai jamais pensé à faire une recherche sur ce sujet.
    Je jouerai sur l'évènement onResize de la forme et l'utilisation de IFMXScreenService.GetScreenOrientation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.FormResize(Sender: TObject);
    var
      ScreenService: IFMXScreenService;
    begin
      if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then
      begin
        if ScreenService.GetScreenOrientation in [TScreenOrientation.soPortrait, TScreenOrientation.soInvertedPortrait] then
          ShowMessage('Orientation Portrait')
        else
         begin
          ShowMessage('Orientation Paysage');
         end;
      end;
    end;
    le docwiki embarcadero est dans les choux ...
    C'est signalé depuis samedi matin (Getit et le portail qualité aussi sont aux abonnés absents) et c'est en cours de résolution bien qu'il faille attendre l'ouverture des bureaux sous je ne sais quel fuseau horaire.
    Le début du week-end a encore frappé (2° fois cette année ).
    [mode Troll] Quelqu'un aurait éteint, par souci d'économie d'énergie, la mauvaise machine en sortant du bureau ? [/mode]

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Merci Sergio ! Tu es un génie !
    Je n'aurai jamais pensé à ça pour cette fonctionnalité !
    Allez un tout petit chapitre sur le sujet

    Avec quelques aménagements ça marche sur mon s22+
    Mais je ne sais pas ce que ça donnerait sur un téléphone plus petit.
    A traiter dans le OnResize je pense.

    Je marque comme Résolu

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Finalement, ce n'est plus résolu car mon dernier Tlayout contenu dans le TFlowLayout, avec la propriété Align à Client ne fonctionne plus ... pourquoi ?
    Mais pour une fois, l'aide est explicite :
    Remarque : La propriété Align des contrôles au sein d'un TFlowLayout est ignorée. La propriété Position des contrôles enfant est automatiquement définie, et le changement explicite de sa valeur est sans effet.
    Je vais voir si je peux faire quelque chose en travaillant en plus sur le OnResized.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Sergio, si tu es encore dans le coin, est ce que tu sais comment éviter que l'application ne cache les boutons système (applis lancées, home, retour) en bas de l'écran ?
    Je peux la retrouver en glissant le bas de l'écran vers le haut, mais il me semblait qu'au début ça ne le faisait pas alors que maintenant oui ... et je ne sais pas ce que j'ai fait
    Merci d'avance

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 696
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Pour le dernier point, je pense que tu trouveras ton bonheur ici : https://github.com/viniciusfbb/fmx_t...i_system_bars/
    Mon site - Mes tutoriels - GitHub - Youtube - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Citation Envoyé par gbegreg Voir le message
    Bonjour,

    Pour le dernier point, je pense que tu trouveras ton bonheur ici : https://github.com/viniciusfbb/fmx_t...i_system_bars/
    Merci je vais regarder.

    EDIT : Arrrgghhh c'est en anglais ! Bon je m'y colle quand même.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Alors finalement, j'ai pu résoudre mon problème avec une autre solution, quoique évoquée en partie :
    Voilà la disposition des TLayout (j'ai mis des TLabel dans les Tlayout pour mieux visualiser) :
    Nom : Capture.JPG
Affichages : 160
Taille : 101,2 Ko
    On voit bien la structure sur le côté.
    La propriété Align de chaque Layout est la suivante :
    Layout1 (conteneur "racine") : Client
    Layout2 (contenu dans Layout1) : Top
    Layout3 (contenu dans Layout1) : Client
    Layout4 (contenu dans Layout3) : Top
    Layout5 (contenu dans Layout3) : Client

    Donc l'objectif est que le Layout2 et le Layout3 soit l'un au-dessous de l'autre en mode portrait et que en mode paysage, ils soient côte à côte.

    Pour cela j'ai mis un petit bout de code dans un onResized (pas onResize) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    procedure TForm3.Layout1Resized(Sender: TObject);
    begin
    // si la hauteur du conteneur racine est supérieure à la largeur
    if Layout1.height>Layout1.Width then
       begin
       // mode portrait
       Layout2.align:=TAlignLayout.Top;
       Layout2.Height:=Hauteur_définie_ou_calculée;   //hauteur choisie pour le Layout2 en mode portrait.
       end
    else
       begin
       // mode paysage
       Layout2.align:=TAlignLayout.Left;
       Layout2.Width:=Layout1.Width/2;   //choix de diviser l'écran en deux parties égales en mode paysage
       end;
    end;
    Les seules contraintes sont :
    - de décider la Hauteur du Layout2 en mode portrait car sinon après 2 ou 3 manipulations, la hauteur de Layout2 prend la hauteur de Layout1 et ne laisse plus la place à Layout3.
    - en mode Paysage, de choisir comment partager l'écran en largeur (j'ai choisi de partager l'écran en deux moitiés égales, mais c'est adaptable).
    Pour ce qui me concerne, ce n'était pas une contrainte.
    Bien entendu, tout ce qui est à l'intérieur des Layout doit être le cas échéant redimensionné, notamment en largeur en mode Portrait selon le partage choisi.
    Mais ça marche très bien.

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Citation Envoyé par gbegreg Voir le message
    Bonjour,

    Pour le dernier point, je pense que tu trouveras ton bonheur ici : https://github.com/viniciusfbb/fmx_t...i_system_bars/
    Alors de prime abord, ça a l'air de bien fonctionner, mais je me suis aperçu que ça remonte mon appli vers le haut et fait disparaître en haut la hauteur de la barre système ;o)
    Ou alors je n'ai pas compris comment utiliser cette unité ?

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Alors je ne sais pas ce que j'ai fait (en tout cas pas exprès) mais la barre système apparaît bien maintenant en bas sans que je ne fasse rien ... Mystère !

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 785
    Billets dans le blog
    65
    Par défaut
    Cela n'aurait pas un lien avec les écrans partagés des nouvelles versions Android (perso, j'ai du mal à m'y faire) ?

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 400
    Par défaut
    Je sais pas, je ne sais pas ce que j'ai fait mais tout est revenu à la normale.
    Mais c'est peut-être aussi dû au fait que j'ai supprimé les fiches visualisant les différentes versions de taille d'écran sous android.
    Je n'ai laissé que la fiche Maître.
    Et cette nuit, ça m'a refait la même chose avec une mise en forme d'objet qui n'apparaissait pas alors que je l'avais faite dans la fiche Maître, mais elle n'apparaissait pas dans la fiche android 5 pouces.
    Il a suffit que je la supprime et tout est revenu à la normale.
    Il faut vraiment se méfier de ces fiches "enfants" dédiées à une plateforme.
    A savoir.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de rotation
    Par Francky033 dans le forum DirectX
    Réponses: 1
    Dernier message: 17/07/2003, 17h38
  2. Rotation de Bitmap -> ScanLine
    Par jujuesteban dans le forum Langage
    Réponses: 7
    Dernier message: 03/07/2003, 16h11
  3. Rotation d'un bouton ?
    Par ken_survivant dans le forum Composants
    Réponses: 3
    Dernier message: 01/04/2003, 19h16
  4. matrice et rotation
    Par charly dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 07/12/2002, 18h59
  5. algo : rotation d'objet 3d
    Par numeror dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 19/08/2002, 23h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo