cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 2009
-
14 juil. 2006 à 17:33
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 2009
-
17 juil. 2006 à 12:14
salut,
j'ai implementé un "magnet" entre mes forms lors du resize et du deplacement à l'aide de WM_WINDOWPOSCHANGING. J'ai aussi forcé les fenêtres à rester sur l'écran. ça marche bien.
Mais,
Ce que je voudrais, c'est que le rectangle gris que l'on voit lors du deplacement soit representatif de la position final.
Mais pas moyen de changer la position de ce rectangle... Ce code ne marche pas chez moi. De plus, ma déclaration (Delphi 9.0) de Messages.TWMMoving différe de celle de l'exemple du net.
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 17 juil. 2006 à 12:14
Merci à toi!
Sachant que le code marche, j'ai trouvé mon problème. J'utilise les composant JEDI pour le dock de mes form et c'était ça qui me masquait le traitement du message.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 15 juil. 2006 à 10:48
Salut,
j'ai testé le code et il fonctionne sous D4 et D9 (avec toute fois une petite modification):
Pour D9 :
procedure TForm1.OnFormMoving(var Msg: TWMMoving);
var screenArea: TRect;
begin screenArea := Screen.WorkareaRect;
if msg.DragRect^.Left < screenArea.left then OffsetRect(msg.DragRect^, screenArea.Left - msg.DragRect^.Left, 0);
if msg.DragRect^.Top < screenArea.top then OffsetRect(msg.DragRect^, 0, screenArea.Top - msg.DragRect^.Top);
if msg.DragRect^.Right > screenArea.Right then OffsetRect(msg.DragRect^, screenArea.right - msg.DragRect^.Right, 0);
if msg.DragRect^.Bottom > screenArea.Bottom then OffsetRect(msg.DragRect^, 0, screenArea.bottom - msg.DragRect^.Bottom);
// et ici on change la taille de la fenêtre
msg.DragRect^ : = Rect(msg.DragRect^.Left,msg.DragRect^.Top, msg.DragRect^.Left+100, msg.DragRect^.Top+100);
inherited;
end;