OVH Cloud OVH Cloud

Comment savoir si un control est indexé...

5 réponses
Avatar
Drizzit
Bonjour,
J'ai une proc=E9dure g=E9n=E9rique qui pour une fen=EAtre donn=E9e parcours
tous les contr=F4les de cette fen=EAtre, et qui en fonction de son nom et
de son index =E9ventuel va rechercher dans un fichier Xml un texte =E0
afficher (ceci afin que mon application soit multilingue).

Ceci me pose un probl=E8me.
J'ai actuellement, dans une class, la fonction suivante :

Private Function strIdentifiantXmlDuControle(ByRef vobjControl As
Control) As String
Dim intIndex As Integer
On Error GoTo GstErreur

intIndex =3D vobjControl.Index
strIdentifiantXmlDuControle =3D vobjControl.Name & "_" & intIndex

Exit Function
GstErreur:
strIdentifiantXmlDuControle =3D vobjControl.Name
End Function

Je dois bien avouer ne pas =EAtre un inconditionnel d'utiliser la
gestion des erreurs de cette mani=E8re.
D ou ma question :
Existe t il un moyen simple, qui ne renvoie pas d erreur, si un control
est index=E9 ?

5 réponses

Avatar
Fred
Dans : news:
Drizzit écrit :
Bonjour,



Bonjour,

Existe t il un moyen simple, qui ne renvoie pas d erreur, si un
control est indexé ?



Tu peux essayer ceci une fois que tu as le nom du contrôle (ou groupe de
contrôle) [ctrName]

If TypeOf(ctrlName) Is Control Then
MsgBox ctrlName & " n'est pas un groupe de contrôles"
Else
MsgBox ctrlName & " est un groupe de contrôles"
End If

Cela semble fonctionner mais je n'ai pas fait de tests approfondis.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Drizzit
J'n'ai pas tout compris...
A ma fonction strIdentifiantXmlDuControle, je vais forcement passer une
variable de type Control....
En faite, avant d'appeler cette fonction strIdentifiantXmlDuControle,
j'ai une procédure publique à ma class qui est :
Public Function mblnTraduireFenetre (ByRef robjForm As Form, _
ByVal vstrLangue As String) As
Boolean
......
For Each objControl In robjForm.Controls
strKeyControl = strIdentifiantXmlDuControle(objControl)
En fonction du code
If TypeOf objControl Is .... Then
objControl.Caption = ....
ElseIf TypeOf objControl Is ... Then
.......
End if
Next objControl
End Function
Avatar
Fred
Dans : news:
Drizzit écrit :
J'n'ai pas tout compris...



C'est normal, j'ai zappé une partie du problème.
Voici un bout de code plus complet.
Tu peux le tester en posant sur une feuille des contrrôles simples et
des contrôles indexés.

Dim c As Control
Dim o As Object

For Each c In Me.Controls
Set o = Me.Controls(c.Name)
If TypeOf o Is Control Then
MsgBox c.Name & " est un contrôle"
Else
MsgBox c.Name & " est un contrôle d'index " & c.Index
End If
Next

En fait, c'est le résultat de Me.Controls qui est :
- soit un tableau de contrôles
- soit un contrôle

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Fred
Dans : news:
Drizzit écrit :
J'n'ai pas tout compris...



Sans compter que mon code comportait une grosse erreur.
Ce n'était pas TypeOf(ctrlName) mais plutôt
TypeOf(Me.Controls(ctrlName))

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Drizzit
Un grand merci
Ca fonctionne super bien...