Insérer dynamiquement une picturebox dans une autre picturebox

Résolu
Malokoxis Messages postés 83 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 22 février 2021 - 4 mars 2015 à 10:46
Malokoxis Messages postés 83 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 22 février 2021 - 4 mars 2015 à 20:28
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 mars 2015 à 12:43
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) ...
1
Malokoxis Messages postés 83 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 22 février 2021 2
4 mars 2015 à 14:05
Merci Ucfoutu, je n'arrivais pas à trouver ça... super!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 mars 2015 à 15:00
Bien.
Pense alors à libérer cette discussion.
Un clic sur le tag RESOLU au niveau de ton tout premier message.
0
Malokoxis Messages postés 83 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 22 février 2021 2
Modifié par Malokoxis le 4/03/2015 à 19:43
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
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 4/03/2015 à 19:52
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
0
Malokoxis Messages postés 83 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 22 février 2021 2
4 mars 2015 à 20:00
En fait l'image s'affichait très loin à droite et était donc invisible... ;)

Merci pour ton aide.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 4/03/2015 à 20:12
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
0
Malokoxis Messages postés 83 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 22 février 2021 2
4 mars 2015 à 20:12
Je sais pas pourquoi tu t'énerves... j'ai résolu mon problème, merci.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 4/03/2015 à 20:15
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
0
Malokoxis Messages postés 83 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 22 février 2021 2
4 mars 2015 à 20:28
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...
0
Rejoignez-nous