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 :

Récupérer les ropriétés des contrôles dynamiques


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut Récupérer les ropriétés des contrôles dynamiques
    Bonjour,

    Dans ma form, j'ai crée dynamiquement des contrôles textbox.

    Je voudrais maintenant savoir s'il est possible de récupérer les propriétés d'un contrôle créer dynamiquement (grâce à la faq) afin de pouvoir éventuellement les modifier lorsque la souris passe dessus ?

    Dans le même genre, je souhaiterais savoir s'il est possible de définir dynamiquement des procédures à ces contrôles pour faire du drag & drop (_dragover, mouseup, ...) ?

    Merci par avance.

  2. #2
    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
    Tes contrôles créés dynamiquement doivent avoir un nom, une valeur d'index ?
    Tu les a créés avec quelle 'recette' au juste? On peut voir le code qui les crée.

  3. #3
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Alors, voici le code que j'ai ajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        'Ajoute une zone de texte
        Set ctlText = Controls.Add("VB.TextBox", ListMasterFields, frmMain)
     
        'Définie les propriétés de la zone de texte
        With ctlText
          .Top = lngTop
          .Left = lngLeft
          .Width = lngWidth
          .Height = lngHeight
     
          .Text = ListMasterFields
     
          'Active le contrôle
          .Visible = True
        End With
    Je viens de voir effectivement que ne sont pas indiqué ni le nom, ni l'index (quelle propriétée pour le nom ?) !

    En fait, j'utilise ce code par du Drag & drop lorsque l'utilisateur déplace le champ sur le formulaire qui lui est concernée.

  4. #4
    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
    (quelle propriétée pour le nom ?) !
    Le nom est une propriété en lecture seule modifiable qu'en mode création.

  5. #5
    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
    Il y a une autre méthode pour créer des contrôles dynamiquement et qui permettent de gérer automatiquement leurs événements sans avoir à recourir aux API de Windows ou autres truc avancés.

    Tu crées d'abord un contrôle sur ta Form en mode création. Tu lui donne un nom comme txtChampSaisie par exemple. Tu mets la propriété Index à 0 (zéro). Quand tu veux en créer un autre dynamiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Load txtChampSaisie(txtChampSaisie.Count)
    ' code pour positionner correctement le champ sur la form
    '...
    txtChampSaisie.Visible = True
    La propriété Index devient un paramètre de chaque procédure événementielle pour ce tableau de contrôles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub txtChampSaisie_Change(Index As Integer)
    ...
    End Sub
    En vérifiant la valeur de Index, tu peux savoir quel champ a été modifié.

  6. #6
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Merci pour ta réponse.

    En utilisant ta méhtode, pour définir les propriétés, j'ai le message d'erreur suivant :

    L'élément du groupe de contrôle '2' n'existe pas
    Y'a pas une instruction après le load pour créer ce contrôle ?

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Load fldText(fldText.Count)
        intIndex = fldText.Count
     
        'Définie les propriétés de la zone de texte
        With fldText.Item(intIndex)
          .Top = lngTop
          .Visible = True
        End With

  7. #7
    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
    Citation Envoyé par esoso
    Y'a pas une instruction après le load pour créer ce contrôle ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Load txtChampSaisie(txtChampSaisie.Count)
    ' code pour positionner correctement le champ sur la form
    '...
    txtChampSaisie.Visible = True

  8. #8
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Ben ouais mais... ça marche pas !

  9. #9
    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
    C'est juste une piste que zaza t'a donnée, si tu veux avoir plusieurs contrôles il faut faire des boucles.

  10. #10
    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
    La propriété Count d'un tableau de contrôle ne contenant que l'indice zéro retourne 1 pour un seul élément. En en chargant (Load) un nouveau avec pour indice (Index) la valeur de propriété Count qui est toujours un de plus que l'indice le plus grand, tu en crées un nouveau. Mais ça, c'est dans l'aide de VB. Faut savoir l'utiliser!

  11. #11
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    sur ;-)... Encore faut-il avoir l'aide installée

    Sinon, j'ai effectivement réussi à placer mes nouveaux contrôles... mais j'ai encore un problème.

    Le contrôle initial se trouve dans une frame ou est située la barre d'outil. Mais ce nouveau contrôle doit se trouver dans une autre frame...

    Comment indiquer la possibilité de créer ce contrôle sur une autre frame ?

    Merci par avance.

  12. #12
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    esoso, Inscrit le vendredi 30 avril 2004, Total message: 180, discussions ouvertes: 103, Nbr.de TAGs utilisés: 24, moyenne: 23/100, ma partitipation jusqua ce post: 9


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'passage d'une conteneur à l'autre
    Set LobjetAdeplacer(Index).Container = NomDelaFrameDestination

  13. #13
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Super

    Merci !

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

Discussions similaires

  1. [Débutant] Problème pour retrouver les index des contrôles ajoutés dynamiquement
    Par BasicZX81 dans le forum VB.NET
    Réponses: 10
    Dernier message: 04/09/2012, 22h03
  2. Réponses: 11
    Dernier message: 15/04/2011, 15h25
  3. Récupérer les valeurs des champs créés dynamiquement
    Par outlawz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/05/2006, 16h32
  4. Réponses: 2
    Dernier message: 03/02/2005, 13h21
  5. [VB.NET] Creer des contrôles dynamiquement
    Par theartist dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/01/2005, 11h42

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