Vianneyp
Messages postés82Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 2010
-
6 juin 2008 à 17:10
Vianneyp
Messages postés82Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 2010
-
6 juin 2008 à 22:58
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 ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 6 juin 2008 à 19:34
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.
Vianneyp
Messages postés82Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 2010 6 juin 2008 à 21:57
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.
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 6 juin 2008 à 22:12
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Vianneyp
Messages postés82Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 2010 6 juin 2008 à 22:31
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.
Vianneyp
Messages postés82Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 2010 6 juin 2008 à 22:58
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.