Récupération d'un nom de control

Résolu
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 - 12 nov. 2004 à 09:51
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 - 12 nov. 2004 à 11:17
Bonjour :) ,

Je viens du VBA et le VB me semlbe encore assez obscure, surtout sans msdn...

Sous access on peut appeler un control de plusieurs façon:
NomCtrl ou Me.NomCtrl ou Me("NomCtrl")

Apparemment, la dernière solution n'est pas possible de le faire en VB et c'est justement ce dont j'ai besoin :sad)

En effet, j'aimerais mettre le nom d'un control (sur lequel on a cliqué par exemple) dans une variable string ou autre afin de pouvoir m'en servir pour faire des comparaisons, du genre
if Me(NomCtrl).visible = true ...

Mais comment faire pour appeler Me.NomCltr(Index) en mettant le nom du control en paramètre? comme dans Me(Nomctrl)

Merci pour votre aide ;)
TBBUIM

8 réponses

Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
12 nov. 2004 à 10:11
Salut ;O)

En effet, VB est moins souple de ce point de vue là (et pas seulement celui-là) par rapport à son petit frère VBA.

Pour arriver à tes fins, il faudra utiliser la collection Controls du formulaire en cours. Exemple :

Pour savoir si un bouton de commande nommé "Command2" est visible ou pas on ferait ceci :

Dim MyCtrl As String

MyCtrl = "Command2"

MsgBox Me.Controls(MyCtrl).Visible

J'espère que cela répond à ta question.

Guy
3
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
12 nov. 2004 à 10:33
Tout à fait 8-)
Merci
TBBUIM
0
crn_c21 Messages postés 302 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 4 février 2011
12 nov. 2004 à 10:36
T'as la solution de passé par une variable controle du genre :

Dim X as control

set X=command2

if X.visible=true

end if
set X= command3

if X.name= "toto"

end if
.....

set X=Nothing
0
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
12 nov. 2004 à 10:38
crn_c21 > ta solution n'est pas mauvaise mais celle-ci a l'inconvénient de devoir instancier un nouvel objet à chaque fois.
Tandis que ma solution utilise la collection Controls du formulaire, donc je fais directement référence aux controls par leur nom sans passer par un nouvel objet.

Guy
0

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

Posez votre question
crn_c21 Messages postés 302 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 4 février 2011
12 nov. 2004 à 10:42
Merci Neo

mais peux tu me dire quel sont les inconvénient de ma solution?

en terme de coût par exemple!

merci
0
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
12 nov. 2004 à 10:46
Simplement d'un point de vue optimisation de la mémoire.
Chacun fera comme il l'entend. Mais dans mes projets, j'essaye toujours d'utiliser la mémoire au mieux en sachant que VB est un piètre économe de ce point de vue là.

Mais bien entendu ta façon de faire fonctionnera. Je n'en disconviens pas. Disons que me code est "light" par rapport au tiens.

Guy
0
crn_c21 Messages postés 302 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 4 février 2011
12 nov. 2004 à 10:51
Attend je ne critique en aucune manière ta solution
Bien au contraire!
Je voulais juste ton comprendre pkoi ma solution était plus "couteuse"
Ce que je ne comprend pas c pkoi tu dis que ma soultion instance un nouvel objet a chaque fois
Pour moi je n'instance qu'un objet ki pointe sur des controles différents!
Je me trompe?
0
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
12 nov. 2004 à 11:17
Je sais que tu ne critiques pas.
La question est celle-ci : pkoi utiliser une nouvelle variable alors qu'il est possible de pointer directement sur le controle voulu via la collection Controls ?

Guy
0
Rejoignez-nous