Modifier classe (?)

[Résolu]
Signaler
Messages postés
82
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2010
-
Messages postés
82
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2010
-
Bonjour,
J'ai disposé un certain nombre de controls de type shape sur une feuille,et je souhaiterai leurs ajouter  un ou deux événements afin d'effectuer diverses modifications de style lorsque l'on les survoles a la souris.Cela fait plusieurs mois que j'emploie la même "technique" a savoir,leur superposer des labels transparents.Mais ne peut t-on pas leur "injecter" directement un événement ?

6 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Le controle Shape n'a pas d'évènement, d'ailleurs ce n'est pas réellement un controle, c'est un élément graphique.

Pour lui "injecter" un évènement, il faudrait acceder aux sources de ce controle. Donc ce n'est pas possible.

VB6 ne connait pas l'heritage, donc tu ne peux pas faire non plus ton propre controle héritant du Shape auquel tu rajouterais des évènements.

Si tu maitrise assez bien le vb6, tu pourrais peut-etre à la limite te faire un controle perso de A à Z faisant la même chose que le Shape.

Autre piste : si tu connais la position exacte du shape sur l'écran, tu peux gérer l'évènement de souris de l'écran en testant si le pointeur se trouve dans la zone couverte par le shape.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
35
Salut,

Une autre methode est d'utiliser il me semble des picturebox, et ce composant a les évenements inclus.

Apres si il y a de la gestion de la transparence et compagnie, je seche regardes les sources sur vbfrance et tu trouveras surement quelque chose.

Exemple lien
qui joue avec le click et les controles indéxés de vb6
Messages postés
82
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2010

Merci a tous les deux pour vos réponses.
Pour ce qui est de tester la position du pointeur cela va étre compliqué les shapes étant en mode "rounded".J'ai disposé une grille de 81 (9 x 9) shapes identiques et j'aimerai juste faire un effet de "surbrillance" au passage de la souris sur chacun d'entre eux.J'avais toujours utiliser un label transparent pour ce genre de choses,cela fonctionne très bien en faite, mais si je double chaque shape d'un un label je dépasse la limite de controls autorisé par vb.Je n'ai encore jamais créer de control personnalisé mais j'ai deja vu que l'on pouvait réunir plusieurs controls de vb en un seul control utilisateur.Je pourrai peut étre "fusionner" mon shape et mon label de cette façon,seule la couleur du shape  varie,sa taille ne change pas.Va falloir que je me documente car la je nage en pleine inconnue.
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
35
En utilisant les controles indexés
la limite est repoussée car les n controles sont de memoire pris comme un seul.

Pour le user control de la facon que tu dis ca dois fonctionner aussi,
tu cree un usercontrol avec tes labels et ton shap
tu declares les evenements de tes labels en evenements de ton userconntrol

et la tu es moins limités avec la limite des controles
1 UC = 1 controle

NB tu peux meme pousser le probleme a faire des UC indexé
n UC --> 1 controle

Pour les controles indexés il suffit de faire un copier coller de ton controle et du aura
les index, sinon il y a moyen aussi de les charger dynamiquement dans le chargement.

Si tu veux savoir comment je peux fouiller dans mes archives.

Bon coding
Messages postés
82
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2010

Sinon j'ai regardé la source que m'a suggéré (http://www.vbfrance.com/codes/JEU-MEMORY-JO-MEMORY-II_22227.aspx).
Elle semble répondre parfaitemlent a mes attententes a un detaille prés : je ne comprend pas pourquoi lorsque j'essaie d'utiliser une couleur personnalisé a la place des constantes vbGreen/vbBlue,ect (Shape1.BackColor = &H80000002& par exemple)...cela ne fonctionne pas.Une explication :o ?
Merci encore pour votre aide.
Messages postés
82
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2010

Heu...en faite non tout va bien.
Je vient tout juste de comprendre que Point() retournait la couleur du pixel ou se trouvait le pointeur et non sa position ^^ .C'est astucieux et cela devrai me permettre d'arriver a mes fins.
Problème résolue.