IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Adresser un contrôle par une variable


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Adresser un contrôle par une variable
    Bonjour à tous,

    En tant que tout nouveau membre, je me permets d'ouvrir cette nouvelle discussion afin de vous demander un peu d'aide.
    Voilà, je ne programme depuis un mois ou deux et uniquement sous Visual Basic 6.0.

    Je patauge un peu mais avec des exemples de codes, la consultation des F.A.Q, "Le Guide du programmateur Microsoft Visual Basic 6.0" et un tube d'aspirine contre le mal de crâne, j'arrive a peu près à m'en sortir. Sauf ici. Je seche et je ne sais plus trop comment faire, et c'est pour celà que je vous demande de l'aide.

    Je vais essayer d'être le plus clair possible :
    J'ai crée une Form nommée IoFrm.
    Dans cette form j'ai crée 8 Labels nommés : Rb0Lbl, Rb1Lbl,Rb2Lbl, Rb3Lbl, etc... Rb7Lbl

    J'aimerais, tout simplement, à partir d'une autre Form contenant une TextBox modifier la Caption de Rb[I]nLbl à partir d'une routine.
    Autrement dit ce que j'essaie de faire c'est de modifier une Propriéte (en l'occurence Name), à partir d'une variable. Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IoFrm.Rb0Lbl.Caption = "BlaBla"
    Remplacé par ( ce qui ne fonctionne pas )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Mavariable As String
    Public VarPin As String
     
    MaVariable = (VarPin & "Lbl")
    IoFrm.MaVariable.Caption = "BlaBla"
    Afin de n'avoir qu'a modifier le contenu de VarPin et de créer une seule routine.
    J'ai fait beaucoup d'essais non concluants avec l'instruction Set et autres mais je ne m'en sort pas. Je seche et je ne sais plus où chercher.
    Si quelqu'un pouvait m'aider.
    Merci d'avance.

    @+ Thierry

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    bon, je crois que ton idée est bonne, seulement vb ne sais pas faire ce genre de chose.
    ce que tu peux faire, c'est un tableau de controles label. tu crées un label nommé rblbl, que tu copie avec ctrl+c, tu le colle sur ta feuille. la, vb va te prévenir qu'il existe dèjà un composant avec ce nom (rblbl) et te demanderas si tu veux créer un groupe de controles. réponds par l'affirmative. dans ta feuille tu auras alors deux composants portant le même nom mais ayant une propritété index différente. repete l'opération coller pour tous les labels dont tu as besoin .

    Maintenant remplace ton bout de code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Mavariable As String
    Public VarPin As String
     
    MaVariable = (VarPin & "Lbl")
    IoFrm.MaVariable.Caption = "BlaBla"
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Mavariable As Integer
    Public VarPin As String
     
    MaVariable = VarPin 
    IoFrm.rblbl(mavariable).Caption = "BlaBla"

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Delbeke
    bon, je crois que ton idée est bonne, seulement vb ne sais pas faire ce genre de chose.
    ce que tu peux faire, c'est un tableau de controles label. tu crées un label nommé rblbl, que tu copie avec ctrl+c, tu le colle sur ta feuille. la, vb va te prévenir qu'il existe dèjà un composant avec ce nom (rblbl) et te demanderas si tu veux créer un groupe de controles. réponds par l'affirmative. dans ta feuille tu auras alors deux composants portant le même nom mais ayant une propritété index différente. repete l'opération coller pour tous les labels dont tu as besoin .

    Maintenant remplace ton bout de code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Mavariable As String
    Public VarPin As String
     
    MaVariable = (VarPin & "Lbl")
    IoFrm.MaVariable.Caption = "BlaBla"
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Mavariable As Integer
    Public VarPin As String
     
    MaVariable = VarPin 
    IoFrm.rblbl(mavariable).Caption = "BlaBla"
    Merci pour ta réponse.

    C'est donc a ça que sert l'indexage?

    @+ Thierry

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    NI-CKEL
    Tu ne peux pas savoir a quel point ce petit bout de code m'a aidé à comprendre quelques astuces.
    Ca me permettre d'optimiser mes petites sources en créant des routines plutôt que de me taper toutes les solutions possibles.

    "Les idées éclatent déjà dans ma tête comme du Popcorn !" citation de Loïs dans Malcolm in the Middle

    Encore MERCI !!!

  5. #5
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Content que cela ait pu t'aider. Personellement, le fait que vb.net ne gere pas de façon native les groupes de controle m'a fait rester en vb6 c'est te dire comme j'utilise cette façon de programmer !

  6. #6
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut les mecs, c'est la nana zaza

    C'est parce que VB.Net est maintenant un véritable langage orienté objet (plutôt que basé objet comme était les versions précédentes). Chaque objet placé sur une feuille est en fait une instance d'objet et fait partie d'une collection. Lorsqu'on veut interroger (ou modifier) les instance d'un même type d'objet, on passe par sa collection plutôt que par une propriété Index.

    Alors si c'est ok, faut pas oublier de cliquer sur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] Liberer la memoire utilisée par une variable Objet
    Par ProgElecT dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/08/2006, 19h17
  2. [XSLT] probleme de resultat retourné par une variable
    Par coucouA dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 16/08/2006, 11h05
  3. valeur d'un champ text modifié par une variable en parametre
    Par klimero dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 21/04/2006, 10h39
  4. [XML] specifier la DTD par une variable d'environnement
    Par xxiemeciel dans le forum Valider
    Réponses: 2
    Dernier message: 20/03/2006, 16h28
  5. Réponses: 3
    Dernier message: 11/12/2005, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo