Peut-on générer des boutons dynamiquement ? [Résolu]

Signaler
Messages postés
898
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
22 mai 2021
-
Messages postés
898
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
22 mai 2021
-
Bonjour,
Je doit créer un certain nombre de boutons (Option Button).
Comment les générer at run time ?
Je voudrais aussi savoir comment les supprimer.
Merci d'avance.

7 réponses

Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
155
Bonjour,

En VB6, tu créé un bouton avec la propriété Index à 0
Puis en execution : Load Button(x)
ou Unload Button(x)

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
898
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
22 mai 2021
2
Merci pour la réponse rapide,
J'ai 2 problèmes :
- je ne sais pas si un bouton existe déjà, il m'arrive d'essayer de le charger à nouveau mais ça coince; comment savoir qu'il est déjà chargé ?
- le bouton est bien chargé puisque je ne parviens pas à le charger une 2è fois, mais il n'est pas visible !
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
155
Bonjour,

Avec un On Error Goto, ça devrait passer.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Bonjour (et un s&alut à NHenry)
Et si l'on veut éviter une gestion d'erreur ===>> une petite fonction :
(exemple avec groupe de commandbuttons indexés nommé Command1)
Private Function existe(ind As Integer) As Boolean
   For Each c In Command1
    If c.Index = ind Then
      existe = True
      Exit Function
    End If
   Next
End Function

et pour l'appel (exemple pour vérifier si l'index 3 est déjà là :
If Not existe(3) Then '... on le crée

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
898
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
22 mai 2021
2
Merci pour les réponses et pour la façon d'éviter une seconde création.
Reste le problème signalé que le bouton créé n'est pas visible.
Mais je ne vais pas investiguer d'avantage dans cette direction car j'ai trouvé une autre solution.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Reste le problème signalé que le bouton créé n'est pas visible

Un bouton ainsi créé ;
- est positionné exactement au même endroit que le tout premier de la collection
- n'est visible que si l'on met à True sa propriété Visible
Lorsque l'on ajoute dynamiquement un bouton à une collection :
- on met sa propriété Visible à True
- on le positionne et dimensionne comme on l'entend (propriétés Left, Top, Width et Height)
- on lui donne le caption qui convient (propriété Caption).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
898
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
22 mai 2021
2
J'avais bien positionné la bouton ailleurs avec Left et Top.
Si je lis les propriétés après load, Caption = Caption du bouton d'origine
mais Visible = False (alors que la propriété Visible du bouton d'origine est True).
Persuadé que c'était l'explication, j'ai donc fait
Load Spot(1)
Spot(1).Left = X0
Spot(1).Top = Y0
Spot(1).Visible = True
mais le bouton n'est toujours pas visible !
Si je lis les propriétés après ce bout de code Visible = False malgé la dernière ligne !?!