"evenements" onmouseout et onmouseover pour un controle

0/5 (6 avis)

Vue 6 343 fois - Téléchargée 501 fois

Description

But de la source, simuler ces deux événements pour un seul et unique controle qui possède un handle. :'(

Comment ça marche :

- Faut toujours laisser le module et le module de classe ensemble.
- Faut jamais accéder aux méthodes du module !!
- Faut créer sur le form courrant deux procédures publiques : Composant_OnMouseOut() et Composant_OnMouseOver() puis mettre le code désiré dedans.
- Suffit de manipuler le module de classe pour déclencher ces événements.

Dans cette source vous trouverez d'intéressant :

- Des API : GetWindowRect, GetCursorPos, SetTimer, KillTimer, GetDlgItem.
- Un parcours de collection (For Each) pour déterminer si un composant possède un handle ou pas.
- Le code qui permet de "simuler" OnMouseOut et OnMouseOver pour un objet.

Pour les débutants :
- Ne vous inspirer pas de la structuration du code, notament au niveau du module de classe et du module !
- Si ce code est trop compliqué, suffit juste de copier le code du module et de l'ajouter à celui de la form, mettre un timer (avec qq modifs) et ça fera la meme chose...

Source / Exemple :


' In the zip

Conclusion :


En fait, j'arrive pas à utiliser SetTimer hors d'un module à cause de l'instruction : AddressOf. Visiblement AddressOf et la procédure qu'il pointe ne sont utilisables que dans un module... :'''(
Sans quoi, yaurait qu'un unique module de classe avec la possibilité de l'instancier plusieurs fois pour plusieurs composants...
Si quelqu'un a une solution...

Bon..., on est d'accord, cette source n'a d'intérêt que l'aspect pédagogique de la chose... Donc pour des remarques à deux balles, passer votre chemin.

Bon coding à tous :)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
kfchicken Messages postés 9 Date d'inscription jeudi 19 août 2004 Statut Membre Dernière intervention 21 juillet 2005
5 oct. 2004 à 15:46
salut j'ai lu ke tu avais une version de bataille navale contre l'ordinateur
je pense ke ça peut interressé du monde, si tu pouvais poster ton prog ce serait cool
d'avance merci
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
9 janv. 2004 à 16:39
GetCapture, SetCapture et ReleaseCapture sont des fonctions qui permettent de capturer les événements souris sur un handle bien particulier, ce qui permet de savoir ce que fait la souris, par contre, ca bloque les événements souris sur tout les autres contrôles !

DarK Sidious
Greengold Messages postés 57 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 31 mars 2004
5 janv. 2004 à 20:30
Hum... ça a l'air carrément mieux ton code :)

PtInRect.... celle là elle est utile...

En ce qui concerne les api GetCapture, SetCapture et ReleaseCapture, peux-tu me faire un petit topo stp, g pas bien compris à quoi elles servaient ?

Merci
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
5 janv. 2004 à 10:04
Gros Problème sous NT4 en tous cas. J'ai lu ton code cependant. Je pense que tu peux l'amélirorer (notemment pour savoir si un point est dans un rectangle).

Excuse-moi de me citer mais j'ai posté un source d'un controle qui possède l'évènement MouseLeave et MouseEnter. Je pense qu'il y a deux ou trois API qui peuvent te servir.

http://www.vbfrance.com/code.aspx?ID=18965

++

Moustachu
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
3 janv. 2004 à 18:03
Il y a des moyens plus simples (mais certes beaucoup plus artisanaux) de rendre cet effet... Je m'explique : on créé une variable qui va indiquer où se trouve la souris, et à chaque fois qu'il y a un évènement MouseMove sur un objet, on sait que la souris est sur celui-ci, donc on place dans la variable une valeur correspondant à cet objet.
Mais bon voilà...
Saros

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.