Bouger une image sur une form en cliquant dessus et en bougeant la souris

[Résolu]
Signaler
Messages postés
134
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
10 août 2008
-
Messages postés
41
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
31 mars 2006
-
Salut à tous! Voila, ce que j'aimerais faire, c'est un petit programme de conception graphique, alors, j'ai une image1, et j'aimerais la faire glisser sur la form pour que l'user puisse choisir son emplacement. Sauriez-vous m'ider ? Ca se passe dans l'evenement on Mouse Move non ?
A+


[url]www.yiliman2201.be.tf/url
Mon site !

16 réponses

Messages postés
992
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
24 avril 2013
2
voila ben tu places ton Timage ds un panel et tu fais ceci
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
ReleaseCapture;
panel1.Perform(WM_SYSCOMMAND, $F012, 0);
end;

je sais pas prq mais ca marche pas directement ac un Timage slt
Messages postés
992
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
24 avril 2013
2
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
ReleaseCapture;
form1.Perform(WM_SYSCOMMAND, $F012, 0);
end;
Messages postés
992
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
24 avril 2013
2
non tromper de sujet mais c un truc du genre
Messages postés
134
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
10 août 2008

Ok, merci bêaucoup, je me suis inspiré de ta réponse et d'une source dont je ne toruve plus l'url, ca fonctionne a merveille ! Merci pour cette réponse si rapide!

[url]www.yiliman2201.be.tf/url
Mon site !
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
45
Salut,
la bonne commande est :

ReleaseCapture;
Perform (WM_SYSCOMMAND, SC_MOVE or HTCAPTION, 0);

parce que $F012 ça veut rien dire

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

sans passer par un pannel:

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

Y: Integer);

begin

with sender as Timage do

begin

if (ssLeft in Shift)

then

begin

Top:=Top+Y;

if Top< 0 then top:=0;

if
Top>Form1.Height-Height-32 then
Top:=Form1.Height-Height-32 ;

Left:=Left+X;

if Left<0 then Left:=0;

if Left>Form1.Width -Width then Left:=Form1.Width-Width ;

end;

end;

end;



@+



jlen
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
45
oui ça c'est la bonne vielle méthode qui fonctionne avec tout
comme quoi ça peut toujours servir c'est un peut plus long mais tout aussi fonctionnel

@+
Cirec
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
surtout qu'avec perform si tu clique sur l'image ça ne fonctionne pas
-->il faut obligatoirement cliquer sur le panel; ce qui n'est pas
vraiment l'effet recherché!!



@+

jlen
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
45
euh désolé mais j'ai fait le teste et ça fonctionne :

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
ReleaseCapture;
Perform (WM_SYSCOMMAND, SC_MOVE or HTCAPTION, 0);
end;

@+
Cirec
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
45
oups pardon
c'est la form qui bouge et c'est pas l'effet recherché
pardon

@+
Cirec
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
oui si tu veux bouger la form c'est nickel tu me diras vu que l'image est sur la form elle bouge aussi!!

@+

jlen
Messages postés
992
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
24 avril 2013
2
@Jlen
en meme temps il suffit de mettre la taille du panel = a la taille de l'image ou du moins 2 voir 3 pixels plus grand de chaque cote pr que ca marche et que se ne soit pas trop genant mais c est sur que ta methode est pile poil ce que tu demandais ...

Ciao
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
ce que j'ai voulu dire c'est que pour ta méthode fonctionne il faut
obligatoirement cliquer en dehors de l'image car si tu clique sur
l'image c'est celle-ci qui intercepte le message et il ne se passe
rien: c'est la meme chose que si elle était placée directement sur la
form.

Ce qui rend le fonctionnement plutot désagréable sutout si tu mets les
propriétés bevelinner et bevelouter du panel à bsnone mais bon là
je chipote



@+

jlen
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
45
@ Nicolas__
as-tu vu la précision que j'ai apporté sur le code plus haut, ce qui permet de comprendre ce que $F012 signifie

@+
Cirec
Messages postés
992
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
24 avril 2013
2
@Jlen oui c juste ...
@ Cirec Merci,moi meme je ne savais pas ce que cela voulait dire , je connaissais juste l astuce

Ciao
Messages postés
41
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
31 mars 2006

Les codes les plus court et les plus simples sont parfois les meilleurs codes ...



Bonne programmation à vous tous ... ((( "travailler c'est s'amuser ..."



Wolf691300.