Pb de parcours de collection...

cs_angelia Messages postés 18 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 27 avril 2004 - 17 févr. 2004 à 13:25
cs_angelia Messages postés 18 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 27 avril 2004 - 17 févr. 2004 à 16:49
Bonjour à tous,
j'explique mon pb :
je veux changer la couleur de certains composants (controles) de toute mon appli par une couleur choisie par l'utilisateur et stockée dans une variable (en fait il y a plusieurs couleurs stockées dans une variable tableau nommée couleurs() ).
je dois dire que parmis ces composants, ii y a des activeX non Vb notamment ceux fait par un developpeur qui sont nommée Rey... comme les boutons qui sont des ReyCommand, etc...
je veux donc parcourir tous les controls de tous les formulaires, analyser si il sont des boutons ("Reycommand") et changer une de leurs propriétés.
Dans un premier temps c'est ce que je veux faire... et je n'y arrive pas :(
en fait déjà lorsque je déclare

Public Sub AppliquerCouleur()
Dim formulaire As Form
Dim Composant As control

vous voyez qu'il me met le mot "control" avec un petit "c" alors que je le choisi dans la liste déroulante qu'il me propose et qui'il est mentionné avec un "C" (majuscule) !!
Et du coup dans la suite de mon code je mets ceci :

For Each formulaire In Forms
    For Each Composant In formulaire.Controls
        If Composant.typeof = "ReyCommand" Then
        Composant.OfficeOverColor = Couleurs(0)
        End If
    Next
Next

il me dit au débogage que l'objet (sous entendu "composant" ne gère pas cette propriété ou cette méthode (sous entendu "typof") !
j'espere m'etre bien fait comprendre.
Merci d'avance pour vos réponses.

7 réponses

cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
17 févr. 2004 à 15:25
labout

Je ne connais pas le composant de Renfield mais avec un composant vb je ferais cela

Dim formulaire As Form
Dim Composant As Control
For Each formulaire In Forms
For Each Composant In formulaire.Controls
If TypeOf Composant Is CheckBox Then
Composant.BackColor = RGB(250, 128, 200)
End If
Next
Next
@+
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
17 févr. 2004 à 15:31
Si avec TypeOf ca ne passe pas, essaye de faire un test sur la propriété Name des controles :

If lcase$(Composant.Name) Like "reycmd*" then ...

Si tout tes ReyCommand buttons sont nommés ReyCmdOK, reyCmdAnnuler, etc ...
Ca marchera peut-être ?
Christophe R.
0
cs_angelia Messages postés 18 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 27 avril 2004
17 févr. 2004 à 16:12
merci les gars de votre aide, je suis arrivé à ce que je voulais et à priori cela marche sauf que il ne me parcours que les form chargés or moi je voudrais qu'il parcours tous les form de mon appli même si ils ne sont pas chargés !
voici le code que j'ai fait (avec votre aide):

Public Sub AppliquerCouleur()
Dim formulaire As Form
Dim Composant As control

For Each formulaire In Forms
    For Each Composant In formulaire.Controls
        If TypeOf Composant Is ReyCommand Then
        Composant.OfficeOverColor = Couleurs(0)
        End If
    Next
Next

End Sub


vous remarquez quand même que le mot clé control dans ma décalration :" Dim Composant as control" reste avec un c minuscule !!!! bizzare non? !
et donc comment faire pour changer la couleur de mes bouton pour tous les formulaires (chargés ou non) ?!
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
17 févr. 2004 à 16:29
labout

Tu fais appel à la fonction dans l'évènement Load de chaque form avec les paramétre le tableau de couleur

que tu mets dans un module
AppliquerCouleur(couleurs)

@+
0

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

Posez votre question
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
17 févr. 2004 à 16:30
labout

Tu fais appel à la fonction dans l'évènement Load de chaque form avec les paramétre le tableau de couleur

que tu mets dans un module
AppliquerCouleur(couleurs)

@+
0
cs_angelia Messages postés 18 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 27 avril 2004
17 févr. 2004 à 16:46
c'est exactement ce que je viens de faire et cela fonctionne !, comme quoi les grands esprits se rencontrent bien que je pense qu'en Vb mon esprit est loin d'avoir atteint le tiens !
Merci encore ;)
0
cs_angelia Messages postés 18 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 27 avril 2004
17 févr. 2004 à 16:49
en fait voici ma procédure dans un module :

Public Sub AppliquerCouleur(formulaire As Form)
Dim Composant As control
    For Each Composant In formulaire.Controls
        If TypeOf Composant Is ReyCommand Then
            If Composant.ButtonType = 1 Then
                Composant.OfficeOverColor = Couleurs(0)
            End If
        ElseIf TypeOf Composant Is ReyFrame Then
            Composant.BorderColor = Couleurs(0)
        ElseIf TypeOf Composant Is ReyTextBox Then
            Composant.LegendBackColor = Couleurs(0)
        End If
    Next
End Sub



et voici comment je l'appel dans le load de chaque form

Call AppliquerCouleur(Me)


et le tour est jouer!
Merci encore de ton aide
0
Rejoignez-nous