Hello,
Je rencontre un sérieux problème, que ce soit avec Delphi 2005 P.E. ou Turbo Delphi.
A l'aide d'un bouton, je souhaite remettre à 0 la taille et positions de mes fenêtres, qu'elles soient visibles ou non.
J'utilise ce type de code pour chaque fenêtre :
Si les fenêtres ne sont pas maximisées tout se passe bien. Dans le cas contraire, je suis obligé d'appuyer 2 fois sur mon bouton pour que cela fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 FMain.WindowState := wsNormal; FMain.Width := FMain.Constraints.MinWidth; FMain.Height := FMain.Constraints.MinHeight; FMain.Top := (Screen.WorkAreaHeight div 2) - (FMain.Height div 2); FMain.Left := (Screen.WorkAreaWidth div 2) - (FMain.Width div 2);
En débug, j'observe le phénomène suivant (le N° = ligne du code) :
1 - Ok (wsNormal)
2 - WindowState reviens à wsMaximized !!
J'appuie une seconde fois sur le bouton et WindowState reste bien à wsNormal après la ligne 2.
Si je place le FMain.WindowState := wsNormal à la fin, il est mieux pris en compte (pas toujours !), par contre la position de la fenêtre est fausse !
Toujours en débug, la valeur Left est correcte après la dernière instruction ci-dessus et à l'entrée du FMain.onShow mais devient fausse à la sortie du onShow
J'ai reproduit ce problème avec un projet vierge, 2 forms et 1 bouton qui cache/affiche Form2 et un 1 bouton qui lance l'init de la taille et position.
J'y comprend plus rien !!
Partager