NOTES :
L'exemple donné ici montre comment obtenir et modifier la position d'une fenêtre, même si celle-ci est agrandie ou réduite.
Il est ainsi possible de donner la position que doit avoir la fenêtre dans son état "normal" même si celle-ci est agrandie ou réduite.
De même dans le cas d'une fenêtre réduite ( hors fenêtre principale ), il est possible d'obtenir et de modifier la position de cette fenêtre réduite.
Cet exemple montre aussi la détection du déplacement d'une fenêtre à l'aide du message WM_MOVE.
CODE :
Unit Unit2; // // Sujet : Obtention de la position de la fenêtre. // // Par Nono40 : http://nono40.developpez.com http://nono40.fr.st // mailTo:nono40@fr.st // // Le 14/03/2003 //
Type
TForm2 = Class(TForm) Procedure FormMove(Var Mess:TMessage); Message WM_MOVE; Procedure FormCloseQuery(Sender: TObject; Var CanClose: Boolean); Private { Déclarations privées } Public { Déclarations publiques } End;
Var
Form2: TForm2;
Implementation
{$R *.dfm}
Uses Unit1;
{ TForm2 }
Procedure TForm2.FormMove(Var Mess: TMessage); Var Place:TWindowPlacement; Begin // Obtention des positions actuelles
FillChar(Place,SizeOf(Place),#0);
Place.length := SizeOf(PLace);
GetWindowPLacement(Handle,@Place); // Mise à jour des positions With Form1 Do Begin
seNormaleTop .Value := PLace.rcNormalPosition.Top;
seNormaleLeft .Value := PLace.rcNormalPosition.Left;
seAgrandieTop .Value := PLace.ptMaxPosition.Y;
seAgrandieLeft.Value := PLace.ptMaxPosition.X;
seReduiteTop .Value := PLace.ptMinPosition.Y;
seReduiteLeft .Value := PLace.ptMinPosition.X; End; End;
Procedure TForm2.FormCloseQuery(Sender: TObject; Var CanClose: Boolean); Begin // Blocage pour l'exemple de la fermeture de Form2
CanClose:=False; End;