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

Messages postés
457
Date d'inscription
mercredi 4 août 2010
Dernière intervention
24 janvier 2019
- - Dernière réponse : Herve_be
Messages postés
457
Date d'inscription
mercredi 4 août 2010
Dernière intervention
24 janvier 2019
- 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.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
14383
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
10 février 2019
153
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de NHenry
Messages postés
457
Date d'inscription
mercredi 4 août 2010
Dernière intervention
24 janvier 2019
0
Merci
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 !
Commenter la réponse de Herve_be
Messages postés
14383
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
10 février 2019
153
0
Merci
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
Commenter la réponse de NHenry
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
457
Date d'inscription
mercredi 4 août 2010
Dernière intervention
24 janvier 2019
0
Merci
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.
Commenter la réponse de Herve_be
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
457
Date d'inscription
mercredi 4 août 2010
Dernière intervention
24 janvier 2019
0
Merci
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 !?!
Commenter la réponse de Herve_be

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.