Insérer dynamiquement une picturebox dans une autre picturebox [Résolu]

Signaler
Messages postés
83
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
22 février 2021
-
Messages postés
83
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
22 février 2021
-
Bonjour,

Je souhaite insérer dynamiquement un groupe de picturebox dans une autre picturebox.
Je n'arrive déjà pas à intégrer une picture box dynamiquement sur ma forme.
J'ai trouvé pluisuer code, mais aucun ne marche... :
Me.Controls.Add Picturebox1(0)

Set picture(i) = Controls.Add(VB.PictureBox, "picture")



Merci de votre aide.

Malo

9 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Regarde ce que fait ceci avec un projet vierge sur lequel tu insères une picturebox picturebox1 à la propriété index de laquelle tu donnes la valeur 0 ===>>
Load Picture1(1)
With Picture1(1)
Set .Container = Picture1(0)
.Move 0, 0, Picture1(0).Width / 2, Picture1(0).Height / 2
.Visible = True
.BackColor = RGB(255, 0, 0)
End With

Analyse, comprends, et ... à toi de jouer (super simple) ...
Messages postés
83
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
22 février 2021
2
Merci Ucfoutu, je n'arrivais pas à trouver ça... super!
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Bien.
Pense alors à libérer cette discussion.
Un clic sur le tag RESOLU au niveau de ton tout premier message.
Messages postés
83
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
22 février 2021
2
Je ne l'ai pas fait car je voulais tester le code et être sur qu'il s'applique bien à ce que je voulais faire.
En fait je souhaite que lorsque l'utilisateur appuie sur un bouton, ça rajoute une Picturebox dans la grande Picturebox et qu'elle est le dernier index du groupe, qu'elle soit rajouté à la fin en fait.
Mais j'ai l'erreur : "L'élément du groupe de contrôles '2' n'existe pas." et cette erreur renvoie à la ligne
Set .Container = Picture1(0)
ou alors je n'ai pas d'erreur mais rien ne s'affiche mais l'erreur apparait lorsque je veux modifier la couleur de la picturebox (après l'avoir créé)!

Dans les lignes suivantes :
Load Picture1(1)
 With Picture1(1)

A la place de (1), j'ai mis : Picture1.count pour avoir le dernier index du groupe.
Peut-être que mon erreur est là, mais j'ai beau chercher, je ne la comprends pas.

Si j'ai bien compris ton code :
Load Picture1(1) 'charge la nouvelle image
 With Picture1(1)
   Set .Container = Picture1(0) 'inclus la nouvelle image dans l'image existante
   .Move 0, 0, Picture1(0).Width / 2, Picture1(0).Height / 2 'placement de l'image à l'endroit voulu
   .Visible = True
   .BackColor = RGB(255, 0, 0)
 End With
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Tes difficultés mettent en exergue une c arence d'analyse.
Regarde ce que fait ceci (auto-explicite) ===>>
Dim toto As Integer
toto = Picture1.Count
Load Picture1(toto)
With Picture1(toto)
Set .Container = Picture1(0)
.Move 0, 0, Picture1(0).Width / 2, Picture1(0).Height / 2
.Visible = True
.BackColor = RGB(255, 0, 0)
End With
toto = Picture1.Count
Load Picture1(toto)
With Picture1(toto)
Set .Container = Picture1(0)
.Move Picture1(toto - 1).Left + Picture1(toto - 1).Width, 0, Picture1(0).Width / 2, Picture1(0).Height / 2
.Visible = True
.BackColor = RGB(0, 255, 0)
End With

J'estime quant à moi que le fond est traité. Le reste (l'utilisation) ne dépend que de toi... et de tes facultés à concevoir, articuler, etc ... (et là, c'est autre chose).

________________________
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'interviend
Messages postés
83
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
22 février 2021
2
En fait l'image s'affichait très loin à droite et était donc invisible... ;)

Merci pour ton aide.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Je ne sais pas ce que tu fabriques.
Voici un exemple (exemple, hein) écrit à main levée, pour ajouter 3 pictureboxes dans la picturebox1(0), chacune d'entre elles étant d'une largeur égale au quart de la largeur de Picturebox1(0)
J'ai dans cet exemple décidé de faire une procédure :
Private Sub Command1_Click()
ajouter_picture Picture1(0), RGB(255, 0, 0)
ajouter_picture Picture1(0), RGB(0, 255, 0)
ajouter_picture Picture1(0), RGB(0, 0, 255)
End Sub

Private Sub ajouter_picture(dans_quoi As PictureBox, couleur As Long)
Dim toto As Integer
toto = Picture1.Count
Load Picture1(toto)
With Picture1(toto)
Set .Container = Picture1(0)
agauche = IIf(toto = 1, 0, Picture1(toto - 1).Left + Picture1(toto - 1).Width)
.Move agauche, 0, Picture1(0).Width / 4, Picture1(0).Height / 4
.Visible = True
.BackColor = couleur
End With
End Sub


Tout le reste (l'utilisation que tu vas en faire) ne dépend que de toi et de ce que tu veux faire ! Et cela n'est plus le sujet de cette discussion, mais uniquement dee tes facultés à concevoir et à faire des calculs arithmétiques de positionnement là où tu veux tes pictureboxes.
L'affaire est pour moi réglé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'interviend
Messages postés
83
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
22 février 2021
2
Je sais pas pourquoi tu t'énerves... j'ai résolu mon problème, merci.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Je ne "m'énerve" pas. Je suis ainsi (entier) et ai des difficultés (mon âge) à accepter sans broncher les discussions inutilement à rallonge, de type salon. Ic i : nous traitons une difficulté isolée et non la conception.
J'attends toujours que tu fermes cette discussion. ...

________________________
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'interviend
Messages postés
83
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
22 février 2021
2
La réponse a été fermée juste après mon précédent message.
Le message #6 ne demandait pas de suite, tu as apporté une suite par toi même, je ne pense pas faire de discussion à rallonge...