Avoir un objet de type controle en sortie de fonction

Résolu
le_nain27 Messages postés 13 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 19 octobre 2006 - 18 janv. 2005 à 11:32
le_nain27 Messages postés 13 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 19 octobre 2006 - 18 janv. 2005 à 12:45
Bonjour,

Voila j'ai un fonction comme ca:

Function GetControlFromName( ControlName as String) as Control

dim cControl as Control

For Each cControl in Form1.Controls
If CStr(cControl.Name) = ControlName Then
GetControlFromName = cControl
End If
Next cControl

End Function

Bien evidement cela ne marche pas, sinon je serais pas ici
L'appel de cette fonction donne une erreur car on essai d'attribuer la valeur
par defaut du cControl (le .Text d'un textBox, par exemple) a une variable de
type inadapté.
Quelqu'un sait comment on peut faire pour passer le controle en entier à cette
variable ?

5 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
18 janv. 2005 à 12:43
Pour tous les objets, il faut utiliser SET et un control est un objet.

Cordialement, CanisLupus
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
18 janv. 2005 à 12:15
Ben tout dépend de quel type de control il te renvoie : c'est sûr que
si tu essaie de modifier la propriété Text d'un commandButton par
exemple, il va te signaler une erreur ! A ce moment là :



Dim oControl as Control



On Error Resume Next



Set oControl = GetControlFromName("Command1")

Let oControl.Text = "Salut !" ' ca ne provoque pas d'erreur mais ca ne modifie pas la propriété Text !


DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
18 janv. 2005 à 12:27
Salut,

Essaie un truc dans ce genre-là :

Private Sub Form_Load()
Dim c As Control


Set c = GetControlFromName("Command1")
MsgBox c.Caption


End Sub


Function GetControlFromName(ControlName As String) As Control


Dim cControl As Control


For Each cControl In Form1.Controls
If CStr(cControl.Name) = ControlName Then
Set GetControlFromName = cControl
End If
Next cControl


End Function

Cordialement, CanisLupus
0
le_nain27 Messages postés 13 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 19 octobre 2006
18 janv. 2005 à 12:32
Pour Darksidious

Bien evidement que ton Let oControl.Text="Salut !" marche puisque il y a le On Error Resume Next ...
Mais moi ca m'interesse pas de "passer" sur cette erreur.

Pour CanisLupus

Merci !!!
Peut tu m'expliquer pourquoi le Set est, dans ce cas la, obligatoire ? On passe pas par référence par defaut en déclarant les types ?
0

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

Posez votre question
le_nain27 Messages postés 13 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 19 octobre 2006
18 janv. 2005 à 12:45
Ok, c'était la premiere fois que je m'attaquais a ce genre de morceau, je le saurai désormais.
Thx !
0