Détecter souris hors d'un Timage

JackTheRipp3r Messages postés 50 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 5 février 2004 - 4 févr. 2004 à 22:23
JackTheRipp3r Messages postés 50 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 5 février 2004 - 5 févr. 2004 à 22:41
Salut @ tous !
Voilà, je suis en train de créer une application dont le design est totalement modifié, et là j'en suis aux boutons agrandissement quitter, et réduire.
J'aimerais qu'au passage de la souris, l'image qui est présente dans le Timage (que j'utilise comme bouton) change, ce que je fais avec ca:

procedure TForm1.reduireMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
form1.petit.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'reduire2.bmp');
end;

mais j'aimerais que lorsque la souris n'est plus sur le Timage nommé "reduire", l'image redevienne celle de base (reduire.bmp). Si quelqu'un a une idée pour détecte quand la souris n'est plus sur le Timage...

;) Ne dors pas trop la nuit pour pouvoir faire une sieste le jour ! ;)

5 réponses

yoghisan Messages postés 204 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 2 juin 2005 1
5 févr. 2004 à 09:48
Soit tu peux recreer un composant TImage auquel tu rajouter les evenements

Voici une partie du code
procedure WndProc(var Message : TMessage); override;

procedure TForm1.WndProc(var Message : TMessage);
begin
case Message.Msg of
// La souris 'entre' sur le composant
CM_MOUSEENTER : begin 
// Code...
      end;
// La souris 'sort' du composant
CM_MOUSELEAVE : 
// Code...
end;
inherited; // Continuer a faire passer le message
end;


TU peux si tu veux vraiment créer les evenements 'OnMouseEnter' et 'OnMouseLeave'

Si tu as besoin de plus, je te filerais le code pour ton nouveau composant. Ta question m'interesse et ce n'est pas trop long normalement donc je vais le faire. Si tu veux demande.
0
JackTheRipp3r Messages postés 50 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 5 février 2004
5 févr. 2004 à 12:13
Juste une dernière question :
C'est où qu'on spécifie le nom du composant concerné par les lignes de code ?

;) Ne dors pas trop la nuit pour pouvoir faire une sieste le jour ! ;)
0
JackTheRipp3r Messages postés 50 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 5 février 2004
5 févr. 2004 à 12:18
Parce que là dès que ma souris est quleque part sur la form1, le composant timage appelé "petit" qui sert de bouton de réduction de la form change d'image, moi je voudrais que ca n'arrive que lorsque la souris est sur l'image...
il faut que je m'amuse avec des getcursorpos et des case les coordonnées de la souris of... pour savoir si la souris est sur le composant concerné ?
Je sais pas si c'est clair mais je me comprends, j'espère que toi aussi... :big)
;) Ne dors pas trop la nuit pour pouvoir faire une sieste le jour ! ;)
0
yoghisan Messages postés 204 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 2 juin 2005 1
5 févr. 2004 à 16:41
Ta première question me laisse perplexe car tu ne dois pas utiliser la source correctement car le nom du composant n'a pas besoin d'etre specifié. Je m'explique...

Il faut que tu installes le nouveau composant (TImageMouse) en installant le fichier "ImageMouse.pas".
Cliquer sur "Composant" - "Nouveau Composant"
Un nouveau onglet (David) devrait apparaitre et la tu trouveras le nouveau composant.

Ca devrait marcher en utilisant ce composant et tu n'auras pas ton probleme.

Maintenant si tu as copié le code sur ton unité, c'est normal que ca ne marche pas car le code permet de capter les événements sans faire attention au composant que l'on "entre" ou que l'on "quitte". C'est pour ca que j'ai crée des composants, c'est plus simple ainsi. Chaque composant aura ainsi son evenement.

Regarde bien l'exemple et son contenu. UTILISE UN NOUVEAU COMPOSANT OU TU TROUVERAS LES EVENEMENTS ONMOUSEENTER ET ONMOUSELEAVE

J'espere que l'on parle de la meme chose
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JackTheRipp3r Messages postés 50 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 5 février 2004
5 févr. 2004 à 22:41
Ok merci

;) Ne dors pas trop la nuit pour pouvoir faire une sieste le jour ! ;)
0
Rejoignez-nous