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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 294 fois - Téléchargée 36 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

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

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

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

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

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

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)