Redimentionner une form avec une image [Résolu]

Signaler
Messages postés
157
Date d'inscription
dimanche 19 novembre 2000
Statut
Membre
Dernière intervention
14 avril 2009
-
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
-
Bonjours, je voudrai savoir comment faire pour redimentionner une feneitre grace a une image dans le coin inférieur droit de la form (BorderStyle := bsNone)

...

8 réponses

Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
salut,

je pense que tu dois utiliser les propriété left top width et height de l'image et de la form

je n'ai pas le code sous la main mais le principe est le suivant:

dans l'évènement onmouse down de l'image tu mets un flag qui mémorise l'action

dans l'évènement on mousemove tu récupère le déplacement de la souris
et tu mets à jour les propriétés width et height de la fenetre et les
propriétés top et left de l'image

dans le onmouseup tu reset le flag



@+

jlen
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
essaye çà



procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

image1.Tag:= 1;

old.X:=X;old.Y:=Y;

end ;



procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState;

X, Y: Integer);

begin

if image1.Tag =0 then exit;

with TForm1 do

begin

Height:= Height+Y-old.Y;

Width:= Width +X-old.X;

end ;

with Image1 do

begin

top: = top+ Y-old.Y;

left:= left+X-old.X;

end ;



end;



procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

image1.Tag: =0;



end;

je n'ai pas mis de controle de validité en particulier si tu réduit trop la fenêtre

@+

jlen
Messages postés
157
Date d'inscription
dimanche 19 novembre 2000
Statut
Membre
Dernière intervention
14 avril 2009

ok je vai essayer... merci

...
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
si tu n'y arrives pas je rechercherai la source ou j'ai fait quelque chose de similaire

@+

jlen
Messages postés
157
Date d'inscription
dimanche 19 novembre 2000
Statut
Membre
Dernière intervention
14 avril 2009

Oui, si tu pouvai me passer quelques bouts de codes,... car je voi pas bien comment faire...

...
Messages postés
157
Date d'inscription
dimanche 19 novembre 2000
Statut
Membre
Dernière intervention
14 avril 2009

Voici le code que j'ai utilisé :

procedure TForm1.ImgCoinBasDroiteMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ImgCoinBasDroite.Tag:=1;
old.X:=X;old.Y:=Y;
end;

procedure TForm1.ImgCoinBasDroiteMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if ImgCoinBasDroite.Tag=0 then exit;
with TForm1 do
begin
Form1.Height:= Form1.Height+Y-old.Y;
Form1.Width:= Form1.Width +X-old.X;
end;

end;

procedure TForm1.ImgCoinBasDroiteMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ImgCoinBasDroite.Tag:=0;
end;

(Faut pas oublier de déclarer old comme variable de type Tpoint)

et ce bout de code ne m'as pas servis, car il y avai déja des alignements pour l'image...
with ImgCoinBasDroite do

begin

top:= top+ Y-old.Y;

left:=left+X-old.X;

end;

Merci beaucoup !
Messages postés
157
Date d'inscription
dimanche 19 novembre 2000
Statut
Membre
Dernière intervention
14 avril 2009

PS : pour la taille minimale de la feneitre c'étai déja prévu.

...
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
oui j'avais oublié de te dire de déclarer old en record ou en
Tpoint en variable globale et pour les alignements c'est vrai que çà
simplifie le code mais bon je l'ai refait en 1/4 heure à partir d'une
autre source alors je n'ai pas cherché à optimiser

@+

jlen