Bonjour,

Je ne sais pas si quelqu'un pourra répondre à ma question, néanmoins je la trouve intéressante à poser.

Je suis en train de développer une application mobile avec Delphi 11, sauf que, qui dit mobile, dit tablette, et donc 50 tailles d'écrans possible!

J'ai donc créer une petite fonction sur le FormResize toute simple pour adapter mes marges en fonction de l'écran :

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
18
19
20
procedure TMain_Login.FormResize(Sender: TObject);
begin
    if Main_Login.Width > 338 then
    Begin
      ELogin.Margins.Right := Main_Login.Width - 328;
      EPassword.Margins.Right := Main_Login.Width - 328;
    End
    Else
    Begin
      ELogin.Margins.Right := 10;
      EPassword.Margins.Right := 10;
    End;
 
      ELogin.Margins.Top := (LyMidRight.Height -(ELogin.Height
                                                +ELogin.Margins.Bottom
                                                +EPassword.Margins.Top) ) /2;  //(Hauteur du conteneur - (taille de mes éléments) ) /2
      LLogin.Margins.Top := (LyMidLeft.Height -(LLogin.Height
                                                +LLogin.Margins.Bottom
                                                +LMotDePasse.Margins.Top) ) /2;
end;
Pour ce qui est de la marge à droite, ça fonctionne bien mes TEdit ne font pas tout l'écran, par contre pour la marge .Top, ça fonctionne uniquement sous android.

Sur Iphone on dirait que la marge est calculée par la taille de la fenêtre avant le FormResize, je m'explique, quand je bascule l'Iphone en mode paysage, donc avec une petite hauteur, je me retrouve avec une grande marge, et inversement en mode portrait.

Je suis sur qu'il doit y avoir une façon plus simple d'avoir une application qui s'adapte à un écran, mais pour le coup je ne vois pas de raison à ce que le code ne fonctionne pas sur les deux plateformes de la même manière