Peut-on générer des boutons dynamiquement ?

Résolu
Herve_be
Messages postés
957
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
5 août 2022
- 2 mars 2013 à 15:42
Herve_be
Messages postés
957
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
5 août 2022
- 3 mars 2013 à 11:02
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

NHenry
Messages postés
14968
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 août 2022
161
2 mars 2013 à 16:07
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
3
Herve_be
Messages postés
957
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
5 août 2022
2
2 mars 2013 à 17:03
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 !
0
NHenry
Messages postés
14968
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 août 2022
161
2 mars 2013 à 17:36
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
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
2 mars 2013 à 22:49
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Herve_be
Messages postés
957
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
5 août 2022
2
3 mars 2013 à 09:34
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.
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
3 mars 2013 à 10:05
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.
0
Herve_be
Messages postés
957
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
5 août 2022
2
3 mars 2013 à 11:02
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 !?!
0