Deplacement "fluide" d'une fenêtre

Description

Cette procedure déplace et redimmensionne une fenêtre avec "animations"
Le plus simple est d'aller voir l'exemple dans le zip ;)

Sinon voici la procedure:
frm -> la fenêtre a déplacer
FinX -> Position X finale de la fenêtre
FinY -> Position Y finale de la fenêtre
FinW -> Largeur finale de la fenêtre
FinH -> Hauteur finale de la fenêtre
Temps-> temps voulu pour le déplacement(pas de mesure spéciales, 10 recommandé)

Source / Exemple :


procedure Bouge(frm:TForm;FinX:Integer;FinY:Integer;FinW:Integer;FinH:Integer;Temps:Integer);
var
DecX:integer;    //Décalage X (Left)
DecY:integer;    //Décalage Y (Top)
DecH:integer;    //Décalage H (Height)
DecW:integer;    //Décalage W (Width)
MemTimer:integer;  //ME sert pour garder une vitesse identique sur chaq ordi
a:integer;
begin
With frm do begin 
  DecX := (FinX - Left) div Temps; //Calcul des décalages
  DecY := (FinY - Top) div Temps;  //Plus temps est grand, plus c lent
  DecH := (FinH - Height) div Temps;
  DecW := (FinW - Width) div Temps;

  For a := 1 To Temps do begin    //Ben la ca déplace
    MemTimer := GetTickCount;
    Top := Top + DecY;
    Left := Left + DecX;
    Width := Width + DecW;
    Height := Height + DecH;
    Application.ProcessMessages;

    repeat
    Until GetTickCount - MemTimer > 10;
  end;
End;

End;

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.