OVH Cloud OVH Cloud

Pointeur sur objet

6 réponses
Avatar
Curl
Bonjour à tous !

Je voudrais creer une variable qui "pointe" (désigne) un objet dans un
formulaire

Par exemple :
PtrObj est le pointeur
ListBox1 et ListBox2 , 2 contrôles Lisbox
Je voudrais écrire quelque chose comme:

PtrObj = LisBox2
PtrObj.clear

Dois-je déclarer PtrObj comme un objet ayant les mêmes références
qu'un contrôle ListBox ?

Merci pour votre aide.

6 réponses

Avatar
François Picalausa
Hello,

Essaye ceci:

Dim MyList As ListBox

Set MyList = FormXYZ.ListBox1

...

MyList.Clear

VB fait tout pour éviter les pointeurs.
Tu pourrais récupérer un pointeur à l'aide de la fonction ObjPtr(MonObjet)
mais il faudrait y aller à coup de copy memory pour récupérer ensuite
l'objet à partir du pointeur pour appeler ses fonctions.

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Curl" a écrit dans le message de
news:41011575$0$1516$
Je voudrais creer une variable qui "pointe" (désigne) un objet dans un
formulaire


Avatar
Zoury
Salut Curl! :O)

On ne peut utiliser de pointeur en VB directement en VB, mais tu peux tout
simplement te déclarer un objet du même type.

Par exemple :
PtrObj est le pointeur
ListBox1 et ListBox2 , 2 contrôles Lisbox



Voici l'équivalent :
'***
Dim lb As ListBox
Set lb = ListBox2
Call lb.Clear
'***

Le mot clé Set est utiliser lorsque l'on travaille avec des objets, tu peux
lire l'aide à ce sujet (surligne "Set" et appui sur F1).

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
Curl
Curl a tapoté :
| Je voudrais creer une variable qui "pointe" (désigne) un objet dans
un
| formulaire

Mon esprit embrouillé n'a pas réagi au quart de tour..

J'ai simplement écrit (en reprenant l'exemple précédent)
Dim PtrObj as Variant
PtrObj = Listbox1
PtrObj.clear

Désolé pour le bruit !
Avatar
Curl
Zoury a tapoté :
| Voici l'équivalent :
| '***
| Dim lb As ListBox
| Set lb = ListBox2
| Call lb.Clear
| '***

Merci pour vos réponses !!
Avatar
Zoury
Juste pour m'assurer d'une chose :
Dim PtrObj as Variant



étant donné que tu as posté une réponse à mon message *après* celui-ci,
j'imagine que tu as opté pour la solution qu'on t'a proposée ? parce qu'il
faudrait éviter le type variant le plus possible. As Object passe encore,
mais As ListBox est plus rapide (early-binding et pas de cast nécessaire..)
en plus d'offrir l'intellisense.

pour plus d'info sur le "binding"
http://faq.vb.free.fr/index.php?question4

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
Curl
Zoury a tapoté :
| Juste pour m'assurer d'une chose :
| étant donné que tu as posté une réponse à mon message *après*
| celui-ci, j'imagine que tu as opté pour la solution qu'on t'a
| proposée ?

Oui !!! :o) ..
Je n'ai vu ta réponse qu'apres l'envoi de mon second post.
Mais j'ai bien sur rectifié le code en suivant tes conseils !
Encore merci