Bonjour,
J'aimerais comprendre le fonctionnement de la VCL sur la position des fenêtres.
J'ai deux écrans, le principal est à droite et donc l'origine 0,0 est le point en haut à gauche de mon moniteur de droite, le moniteur de gauche a une abscisse négative.
Ce code fonctionne, la fenêtre est bien affichée à 200 pixel à gauche sur le moniteur de droite :
Si j'écris MyForm.Left := -100; ça marche aussi la fenêtre est affichée à cheval sur les deux écrans en -100.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 procedure TForm1.Button1Click(Sender: TObject); Var MyForm:TForm2; begin MyForm := TForm2.Create(self); MyForm.Position := poDesigned; MyForm.Left := 200; MyForm.Show; end;
Si j'écris MyForm.Left := -500; ça ne marche pas ! la fenêtre est affiché à droite de mon écran principal.
J'ai remarqué que si MyForm.Left est inférieur à -Width/2 ça ne marche pas !!!
Bien sur, si j'écris la ligne "MyForm.Left := -500" après le Show, ça marche mais ça ne me convient pas.
J'ai absolument besoin de positionner la fenêtre avant l'appel du Show car je fait une lecture d'objets dans un flux et cela me pose trop de problème.
Que se passe-t-il lors de l'appel de la fonction Show ??
Y a-t-il une propriété à modifier pour éviter cela ? Comme par exemple DefaultMonitor ?
Merci
Franck
Partager