Ajouter des tableaux de contrôle dynamique sans utiliser "load"

5/5 (13 avis)

Snippet vu 5 681 fois - Téléchargée 38 fois

Contenu du snippet

Il existe deux méthodes pour créer des contrôles dynamiques.
Soit, on crée un objet indexé, et on le duplique à l'aidre de "load"
Soit on l'ajoute dans la collection de contrôles de la fenêtre.
Cependant, la seconde méthode ne permet pas un accès aux objets créés par un indice.

J'ai cherché dans le forum pour une solution, et j'ai vu que plusieurs utilisateurs avaient rencontré le même problème, sans qu'on leur donne une réponse autre que celle d'utiliser "load".

J'ai un peu cherché, et j'ai trouvé une solution simple, qui est d'utiliser des tableaux de références vers les objets créés dynamiquement.

Peut-être que ceci a déjà été expliqué, dans ce cas il suffira de supprimer cet exemple.

Source / Exemple :


Dim WithEvents LedDyn As VB.PictureBox  ' déclaration d'un objet dynamique
Dim Leds(127) As PictureBox  ' déclaration d'un tableau de références

Dim i%
  
  For i = 0 To 127                      ' pour chaque picturebox
    Set LedDyn = Me.Controls.Add("vb.picturebox", "Led" + CStr(i))    ' création du contrôle avec un nom unique
    Set Leds(i) = LedDyn             ' création d'une référence à l'objet
    LedDyn.Top = 500                 ' paramétrage du contrôle créé
    LedDyn.Left = 500 + (i * 100)
    LedDyn.Height = 300
    LedDyn.Width = 75
    LedDyn.BorderStyle = 0
    LedDyn.Visible = True
  Next i

  For i = 0 To 127       ' démonstration de l'accès par index
    Leds(i).BackColor = RGB(0, i * 2, 0)  ' accéder aux contrôles par index
  Next i

Conclusion :


Ce programme ne fait rien d'autre que de créer 128 pictures box, représentant des "leds" rectangulaires, et qu'on peut ensuite gérer via leur index

A voir également

Ajouter un commentaire Commentaires
Ce.plusplus Messages postés 48 Date d'inscription jeudi 25 septembre 2003 Statut Membre Dernière intervention 14 septembre 2012
30 mai 2008 à 09:23
On ne peut pas changer certaines propriétés..
par exemple :
With ObjPC
.Style = 1
.Visible = True
.top = top
.left = left
.Caption = name
.height = height
.width = width
End With

".Style = 1" ne peut être changé à l'execution, et cela provoque une erreur... donc si on veut un checkbox en forme de bouton, et bien on peut pas l'avoir :(
cs_nihaoma Messages postés 140 Date d'inscription jeudi 2 mai 2002 Statut Membre Dernière intervention 2 février 2010
9 août 2005 à 15:40
bonjour à tous,
J'ai une petite question concernant la méthode Load, est-ce possible de charger par cette méthode tout d'un groupe d'objets simplement en chargeant une frame dans laquelle seront préalablement placés tous les objets à charger ?
merci pour vos réponse,
Noxid Messages postés 78 Date d'inscription lundi 13 mai 2002 Statut Membre Dernière intervention 4 mai 2008
30 nov. 2003 à 16:00
Y'a un moyen de créer des Shape de cette facon SVP?
cs_Troopers Messages postés 81 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 29 août 2003
29 août 2003 à 16:30
En ce qui concerne les évènements, j'ai apporté un début de solution
cf: http://www.vbfrance.com/article.aspx?Val=10306
Bazinou Messages postés 9 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 26 mai 2004
29 août 2003 à 11:30
Idem, je ne suis pas très optimiste sur la question.

Etant donné qu'il faut que le contrôle soit déclaré durant la création pour pouvoir lui implémenter du code évènement, et qu'apparamment on ne peut créer de tableau de contrôles (sauf en posant des groupes de contrôles), je ne vois pas bien quelle pourrait être la porte de sortie.

Baz
Afficher les 13 commentaires

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.

Du même auteur (cs_Bigonoff)