Gestion des évènements Android / IOS
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:
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 :mur: