cs_katharos
Messages postés10Date d'inscriptionmardi 27 février 2007StatutMembreDernière intervention14 mars 2007
-
6 mars 2007 à 11:20
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 2021
-
6 mars 2007 à 16:06
J'aimerais pouvoir animer une image en l'agrandissant et en la mettant au premier plan juste quand la souris passe dessus cette image, quand la souris n'est plus dessus j'aimerais que l'image redeviennent comme avant. Merdi d'avance je ne trouve que des codes avec des clic
sylvunix
Messages postés93Date d'inscriptionmardi 11 avril 2006StatutMembreDernière intervention 4 mars 2009 6 mars 2007 à 12:39
Si l'image ne s'agrandit pas, il manque certainement la propriété Strech à True pour Image1.
En tenant compte de la remarque de Loda que je salue au passage, le code devient :
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
// Agrandissement de l'image
Image1.Height := 482;
Image1.Width := 706;
// Armer le timer
Timer1.Enabled := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Regarder si la souris est en dehors de l'image
if not PtInRect(Image1.BoundsRect, Mouse.CursorPos) then
begin
// Réduction de l'image (remettre la taille initiale)
Image1.Height := 48;
Image1.Width := 70;
// Désarmer le timer
Timer1.Enabled := False;
end;
end;
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 6 mars 2007 à 12:39
Le code de Loda permet de savoir si la souris est au dessus de l'image ou pas.
AU moins une faute de frappe d'ailleurs, c'est : if not PtInRect(image1.boundsrect, Mouse.cursorpos) then
Ca remplace :
if (Mouse.CursorPos.X-Form1.Left < Image1.Left) or
(Mouse.CursorPos.X-Form1.Left > Image1.Left+Image1.Width) or
(Mouse.CursorPos.Y-Form1.Top < Image1.Top) or
(Mouse.CursorPos.Y-Form1.Top > Image1.Top+Image1.Height) then
Pour ton image qui change pas de dimensions... C'est peut être une
propriété de ton composant qui force la taille de celui-ci à la taille
de l'image.
sylvunix
Messages postés93Date d'inscriptionmardi 11 avril 2006StatutMembreDernière intervention 4 mars 2009 6 mars 2007 à 11:49
Bonjour katharos,
Je pense que tu as trouvé facilement l'évènement OnMouseMove de ton TImage qui est appelé lorsque la souris passe au dessus de l'image.
Le problème est que tu n'auras pas d'évènement pour te signaler que la souris n'est plus sur l'image.
Tu peux créer un timer qui après un certain temps (1000 ms par exemple) effectuera ce contrôle. Voici un exemple de code :
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
// Ici ton code pour agrandir l'image ...
// Armer le timer
Timer1.Enabled := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Regarder si la souris est en dehors de l'image
if (Mouse.CursorPos.X-Form1.Left < Image1.Left) or
(Mouse.CursorPos.X-Form1.Left > Image1.Left+Image1.Width) or
(Mouse.CursorPos.Y-Form1.Top < Image1.Top) or
(Mouse.CursorPos.Y-Form1.Top > Image1.Top+Image1.Height) then
begin
// Ici ton code pour réduire l'image ...
// Désarmer le timer
Timer1.Enabled := False;
end;
end;
Il y a peut-être mieux mais en tout cas cette solution fonctionne ...
cs_katharos
Messages postés10Date d'inscriptionmardi 27 février 2007StatutMembreDernière intervention14 mars 2007 6 mars 2007 à 12:10
Oui merci j'avais trouvée OnMouseMove (bonne idée le timer) mais j'ai encore un probleme dans ton code tu as mis //Ici ton code pour agrandir l'image ... mais cette image ne s'agrandie pas. Aurai je oublié quelque chose j'ai juste fait :
Image1.Height := 482;
Image1.Width := 706;
à la place de Ici ton code pour agrandir l'image dans le OnMouseMove. Merci
sylvunix
Messages postés93Date d'inscriptionmardi 11 avril 2006StatutMembreDernière intervention 4 mars 2009 6 mars 2007 à 12:44
Bonjour Cirec,
En ce qui concerne la propriété Stretch, nos messages se sont croisés !
Par contre les évènements OnMouseEnter et OnMouseLeave ne sont pas codés dans TImage (sauf erreur de ma part) et je ne vois pas sur quels composants tu peux les accrocher.