Comment savoir qd la souris passe sur et quitte un contrôle?

Comment savoir qd la souris passe sur et quitte un contrôle? - Delphi/Pascal - Programmation

Marsh Posté le 15-01-2004 à 23:40:34    

Salut!
 
Voilà!
 
Tout est dans le titre.
 
Je cherche à créer un contrôle descendant par exemple de TPanel, et qui réagisse à la souris, quand celle ci passe dessus et quitte également!
 
Sur le net, j'ai trouvé qu'il fallait utiliser les messages Delphi CM_MOUSEENTER et CM_MOUSELEAVE, mais ma version (Delphi 7) ne semble pas les connâitre? Est ce que vous avez une idée?
 
PS : J'ai également essayé les mesages Windows : WM_MOUSEFIRST et WM_MOUSELAST. Le First marche bien, mais aps le Last :(
 

Reply

Marsh Posté le 15-01-2004 à 23:40:34   

Reply

Marsh Posté le 16-01-2004 à 00:04:12    

c'est certainement dans la liste des événements de ton TPanel, je te répondrais plus tard je ne suis pas au boulot et je n'ai pas delphi sur mon pc
 
tu veux pas utiliser l'événement onmousemove


Message édité par bossamiral2 le 16-01-2004 à 00:06:52
Reply

Marsh Posté le 16-01-2004 à 00:07:08    

D'accord!
 
(PS : Mon controle est en fait un dérivé de TButton, mais ça ne change pas grand chose!)
 
Dans l'inspecteur de propriété, y arien de ce genre!
 
J'attends donc ta réponse (à moins que quelqu'un d'autre puissse aussi répondre)

Reply

Marsh Posté le 16-01-2004 à 05:32:51    

je n'ai pas testé (c'est trop tot :d) mais je pense que tu dois faire un truc dans le genre
 

TEnterLeavePanel=class(TPanel)
  Private
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
   procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
 public
end;
 
implentation
 
procedure TEnterLeavePanel.CMMouseEnter(var Message: TMessage);
begin
 // traitement CM_MOUSEENTER
end;
 
procedure TEnterLeavePanel.CMMouseLeave(var Message: TMessage);
begin
 // traitement CM_MOUSELEAVE
end;

Reply

Marsh Posté le 16-01-2004 à 09:01:39    

Taureau a écrit :

je n'ai pas testé (c'est trop tot :d) mais je pense que tu dois faire un truc dans le genre
 

TEnterLeavePanel=class(TPanel)
  Private
    procedure CMMouseEnter(var Message: TMessage); message [g]CM_MOUSEENTER[/g];
   procedure CMMouseLeave(var Message: TMessage); message [g]CM_MOUSELEAVE[/g];
 public
end;
 
implentation
 
procedure TEnterLeavePanel.CMMouseEnter(var Message: TMessage);
begin
 // traitement CM_MOUSEENTER
end;
 
procedure TEnterLeavePanel.CMMouseLeave(var Message: TMessage);
begin
 // traitement CM_MOUSELEAVE
end;




 
 
Oui, mais comme je le dis plus haut...mon Delphi ne reconnaît pas les constantes CM_MOUSEENTER et CM_MOUSELEAVE. (Delphi 7!) Et ils n'apparaissent pas dans l'aide en ligne non plus!
 
C'est bien là tout mon problème...
 
Merci du coup de pouce quand même :)

Reply

Marsh Posté le 16-01-2004 à 09:41:05    

C'est défini dans la unit Controls


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 16-01-2004 à 09:51:53    

Ah oui, exact... Ca marche!
 
Donc, c'était bien ça!
 
Mais alors, ça me fait peur...Car je n'ai trouvé aucune référence à CM_MOUSEENTER dans l'aide en ligne.... Ca vveut dire qu'il fodrait qu'on puisse deviner quels sont les messages qui existent? Comment faire pour connaître les messages qui sont "recevables", etc? leurs noms?

Reply

Marsh Posté le 16-01-2004 à 09:57:20    

C'est dans la doc de Microsoft (la MSDN) j'imagine  
http://msdn.microsoft.com


Message édité par antp le 16-01-2004 à 09:57:43

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 16-01-2004 à 10:00:06    

Non, je ne penses pas : Les messages du type CM (Component Message) et CN (Component Notification) sont des messages "internes" aux TControls de la VCL. (Enfin, bon, je suis newbie, donc, peut etre je dis des betises?)

Reply

Marsh Posté le 16-01-2004 à 10:59:07    

ha, c'est possible en effet


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 16-01-2004 à 10:59:07   

Reply

Marsh Posté le 16-01-2004 à 11:06:08    

En tout cas je ne connais rien de tel en Win32 pûr....

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed