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 :

[vb6] supprimer un contrôle d'un groupe de contrôles


Sujet :

VB 6 et antérieur

  1. #1
    t26
    t26 est déconnecté
    Membre averti
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Par défaut [vb6] supprimer un contrôle d'un groupe de contrôles
    Bonjour,
    J'utilise dans mon projet un contrôle que j'ai créé avec l'assistant de vb. Ce contrôle est d'abord présent en plusieurs exemplaires dans un groupe de contrôles.
    Mais il m'est impossible de gérer ce groupe dynamiquement: les méthodes Load et Unload provoquent l'erreur 438: "Cet objet ne gère pas cette propriété ou méthode".
    Comment gérer dynamiquement ce groupe de contrôles?
    Merci d'avance.

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Deux façons de procéder sont là :
    http://vb.developpez.com/faq/?page=Form#ctl_dynamique

  3. #3
    t26
    t26 est déconnecté
    Membre averti
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Par défaut
    merci mais j'avais déjà essayé: Load ne marche pas, et le contrôle personnalisé n'est pas dans la colection VB... une autre idée?

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    pour que le load "marche" (lis bien) il te faut au moins un contrôle à dupliquer, avec l'index 0....
    C'est simple...

  5. #5
    t26
    t26 est déconnecté
    Membre averti
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Par défaut
    J'ai 6 contrôles, dont un index 0, et pour charger le 7 eme avec Load, j'ai une erreur du type "l'élément du groupe de contrôle '6' n'existe pas", ou "l'objet ne gère pas cette méthode".
    Mais finalement je crois que je vais me débrouiller avec un objet VBcontrol extender et la méthode me.controls.add.
    Merci quand même pour votre [aide] chaleureuse.

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    dieu seul sait ce que tu as fait
    alors :
    un nouveau projet...
    sur une Form : un contrôle text1(0)
    et le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Activate()
      Text1(0).Move 0, 0
      Text1(0).Text = "texte0"
      For i = 1 To 9
        Load Text1(i)
        Text1(i).Text = "text" & Str(i)
        Text1(i).Move 0, i * 300
        Text1(i).Visible = True
      Next i
    End Sub
    lances et observe...

    maintenant : si tu en as déjà 6, ils sont indexés de 1 à 5 et donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form_Activate()
     
      For i = 0 To 5
        Text1(i).Text = "text" & Str(i)
        Text1(i).Move 0, i * 300
      Next i
      Load Text1(6)
      Text1(6).Text = "text6"  '<<<<le voilà, ton 7èeme. il porte bien sur le numéro 7-1 = 6
      Text1(6).Move 0, 1800
      Text1(6).Visible = True
    End Sub
    pour voir avant de juger n'importe comment

  7. #7
    t26
    t26 est déconnecté
    Membre averti
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Par défaut
    Rebonjour,
    Non, je ne juge pas... quand j'ai un problème en vb, je vais d'abord voir la faq de développez.com. Ce n'est qu'en suite, si cela persiste, que je vais sur le forum. Je me suis probablement mal exprimé auparavant:
    1- Le contrôle que je veux dupliquer est un "usercontrol", un contrôle active X créé dans VB à partir d'un contrôle shape et d'un timer.
    2- La méthode Load, que j'ai utilisée normalement, comme vous le montrez dans l'exemple, ne semble pas être applicable à ce genre de contrôle.
    3- Il reste apparemment une solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim dynacontrol as vbControlExtender
    Set dynacontrol = Me.Controls.Add("projet1.usercontrol1", "contrôle1")
    dynacontrol.Visible = True
    Le seul problème restant étant d'intégrer cette méthode dans une boucle For Next afin de générer des contrôles dont les noms sont différents ( index?)....
    Si vous avez une idée, je suis preneur !

  8. #8
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    Je viens de faire un essai : j'ai pris un control que j'ai moi-meme construit (donc un usercontrol), je l'ai mis sur une feuille avec pour index 0 et j'ai fait un Load.

    Ca a tout a fait bien fonctionné, aucune erreur, et j'ai belle et bien 2 controls .
    Tu peut mettre ton Projet en piece jointe, pour voir si ton souci perciste chez moi ?
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  9. #9
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Je ne te juge pas, non...
    Mais comme chez moi (je viens d'essayer), tout fonctionne parfaitement avec la méthode load, appliquée à plusieurs OXC de ma fabrication... je ne peux que penser que ton usercontrol (de ta fabrication) a un défaut...


    EDIT :
    A moins que, les faisant apparaître l'un sur l'autre, tu ne finisses par en voir qu'un seul à l'exécution...

    As-tu bien pensé à les afficher à des endroits différents ?

    esaye ceci, ou tu remplaces Loupe1 par le nom de ton usercontrol :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Load()
      loupe1(0).Move 0, 0
      For i = 1 To 3
        Load loupe1(i)
        loupe1(i).Move 0, i * 1500
        loupe1(i).Visible = True
      Next
     
    End Sub

  10. #10
    t26
    t26 est déconnecté
    Membre averti
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Par défaut
    D'abord, merci d'avoir été patients avec moi, ensuite, j'ai [enfin] trouvé l'erreur. Elle est plus que stupide: il s'agit de parenthèses. En fait, il fallait écrire:
    Et non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Load ( control(i) )
    C'est bête, mais ça fiche tout en l'air ... merci à vous deux pour vos réponses et votre patience...

  11. #11
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    j'y crois pas !!

    Voilà a quoi on utilise les ressources de developez.com !!!

    A poser des questions à la noix, sans même prendre le temps de vérifier sa syntaxe la plus basique qui soit !!!!!!

  12. #12
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    ca, c'est le genre de truc qui me met hors de moi

    un bout de code dans le premier post, et on n'aurait pas dépensé du temps à chercher un problème qui n'existe pas !!!

    sauf une con***rie de celui qui poste

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

Discussions similaires

  1. [VB6]Property Get/Set avec groupe de contrôles
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/01/2006, 12h09
  2. Réponses: 8
    Dernier message: 01/11/2005, 22h48
  3. [VB6] Supprimer des caractères d'une chaine
    Par Overflow64 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/10/2005, 10h26
  4. [VB6] supprimer fichier caché
    Par camyo dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 28/07/2004, 13h45
  5. [VB6] Supprimer un enregistrement dans une ListView ??
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2002, 09h37

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