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 :

Controle dans une collection


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Controle dans une collection
    salut
    je cherche a créer une base de donnée qui contient tout les controles qui se trouve dans une form.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for each control in MaForm.Controls
    ...
    Next
    Mon probleme est que je n'arrive pas a faire la différence entre un controle qui se trouve dans une collection ( MonControle1(index) ) et un qui ne s'y trouve pas ( MonControle2 )

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    un controle d'une collection à sa propriété index définie

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    oui mais si on invoque la propriete index alors que le controle ne fait pas partie d'une collection le programme plante

  4. #4
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Donc il suffit d'intercepter l'exception

  5. #5
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Ce n'est pas aussi facile qu'on le croit.
    Ton problème c'est de savoir si un contrôle appartient à une collection ou pas. La différence entre les contrôles qui appartiennent à une collection et ceux qui n'appartiennent pas à une collection est la suivante : les premiers ont une propriété index et les seconds n'en n'ont pas. Je crois que tu me comprends.
    Il suffit dans ce cas de chercher une fonction qui te permet de savoir si un controle à une propriété index ou pas :

    Je te propose ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function PropertyExists(ByRef o As Object, ByVal nomPropriete As String) As Boolean
        On Error Resume Next
        CallByName o, nomPropriete, VbGet
        PropertyExists = (Err.Number = 0)
    End Function
    C'est une fonction qui te permet de tester si un contrôle a une propriété donnée
    et au moment de l'appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for each control in MaForm.Controls 
      If PropertyExists(control, "Index") Then
         ' tu fais ce que tu veux 
      End If
    next
    Scuse me while I kiss the sky ! Jimi Hendrix

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    merci bujuman pour ton aide c'etait bien ca mon pb

  7. #7
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    C'est beau mais ce n'est pas performant. Tu obtiens la même chose avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim MonControl As Control
     
    For Each MonControl In Me.Controls
        On Error Resume Next
        If IsError(MonControl.Index) Then
            MsgBox "pas collection"
            Err.Clear
        Else
            MsgBox "collection"
        End If
    Next
    On Error GoTo 0

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

Discussions similaires

  1. Ajouter des Controles automatiquement dans une collection
    Par dragondumond dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/05/2013, 16h57
  2. [VB.NET] Suppression d'objets dans une collection
    Par master56 dans le forum VB.NET
    Réponses: 7
    Dernier message: 03/06/2010, 21h46
  3. Collection des controls dans une page
    Par PatStan17 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/01/2010, 16h24
  4. controler dans une base des disponibilités
    Par rony dans le forum ASP
    Réponses: 5
    Dernier message: 22/06/2005, 16h36
  5. [PL/SQL] Charger une table dans une collection
    Par nosnoss dans le forum Oracle
    Réponses: 10
    Dernier message: 03/03/2005, 17h56

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