[VB6] Attribuer un index à un picturebox crée automatiquement

cs_MeSod
Messages postés
89
Date d'inscription
dimanche 21 septembre 2008
Statut
Membre
Dernière intervention
26 avril 2016
- 21 janv. 2015 à 01:19
cgandco
Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
- 22 janv. 2015 à 11:19
Bonjour,

J'ai écris un petit bout de code qui me permet de crée des picturebox quand j'appuie sur un bouton sur ma form. Pour en gros charger et décharger plusieurs images (pour gérer un petit rpg plus tard)

en gros j'ai ça :

"public WithEvents picture as PictureBox
public i as integer

private sub command1_click()
for 1 = 0 to 2
set picture(i) = Controls.Add(Vb.picturebox"," picture")
next i
End sub


sauf que quand je lance et que j'appuie sur mon command1 j'ai le droit à
=>run-time error "91":
=>Object variable or with block variable not set

Une idée ?

--

5 réponses

ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Modifié par ucfoutu le 21/01/2015 à 06:25
Bonjour,
Veux-tu bien s'il te plait commencer par montrer ici (fais-le par copier/coller) le code que tu as écrit, tel qu'écrit. Ce n'est très manifestement pas le cas de celui que tu montres ici.

________________________
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
cs_MeSod
Messages postés
89
Date d'inscription
dimanche 21 septembre 2008
Statut
Membre
Dernière intervention
26 avril 2016

Modifié par cs_MeSod le 21/01/2015 à 21:49
Je ne voit pas pourquoi tu dit ça car c'est exactement mon code...

Si j'écris juste ça :


public WithEvents picture as PictureBox


private sub command1_click()

set picture = Controls.Add("Vb.picturebox", "picture")

End sub



ça marche très bien mon picturebox est crée et je peut le gérer comme je le veut par la suite, Mais moi le but est de crée plusieurs contrôle par exemple "objet" pour afficher des objet que le joueur posera au sol. Le premier à être crée aura un index de 0, le second avec index 1 etc... en sachant que le joueur pourra poser plusieurs objets par terre...

EDIT : en me relisant j'ai effectivement vu que j'avais fais des fautes de frappe, (mon code est sur un ordi, et j'ai écrit sur le forum sur un autre ordi donc a la main..)
--
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Modifié par ucfoutu le 22/01/2015 à 07:40
Pour faire cela (créer( dynamiquement un groupe de contrôles indexés sous VB6), il te faudrait déclarer chaque contrôle concerné dans une collection, puis les traiter (leurs évènements) dans un module de classe.
Tout cela serait assez lourd.
Sous VB6, il est nettement plus simple de procéder comme suit :
exemple pour six pictureboxes :
- en mode création : une picturebox nommée picture1 dont tu mets la propriété index à 0 et la propriété visible à false (place-là où tu veux)
et ensuite, dynamiquement, là où tu le souhaites :
 For i = 1 To 6
Load Picture1(i)
' ....................picture1.move ...etc ....
Picture1(i).Visible = True
Next

Remplace par ce que tu veux la ligne de la méthode Move, de sorte à placer tes pictureboxes là où tu le veux (sinon, elles resteront toutes une au dessus de l'autre)

PS : évite ce procédé (copier à la main puis montrer ton code ainsi copié ici). Il conduit à des atrocités ! Exemple :
ces lignes :
public WithEvents picture as PictureBox
.
.
set picture = ..........

Il se trouve que picture est un mot réservé de VB6 ! Et deux fois plutôt qu'une ! ===>>>
- c'est une propriété de picturebox, d'image, etc ...)
- mais, plus grave : c'est également carrément un objet
Et si je ne savais pas que tu avais copié "à la main", je t'aurais "aussi sec" répondu que ces lignes comportaient CETTE faute !

________________________
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
cs_MeSod
Messages postés
89
Date d'inscription
dimanche 21 septembre 2008
Statut
Membre
Dernière intervention
26 avril 2016

22 janv. 2015 à 10:31
Bonjour,

d'accord d'accord ^^

Donc si je comprend bien, en créant un seul picturebox, avec l'index à 0, je pourrais charger (dans ton exemple) 6 images différente? Que je pourrais afficher en même temps ? (Car c'est ça le but de la manoeuvre)

Je teste ça tout à l'heure des que j'en ai l'occasion.

PS : pour le "picture" je ne savais pas du tout, dans mon cas j'ai utilisé picture pour "nommé" le picturebox, merci de l'info.

Merci de la réponse, je testerais et si ça fonctionne je validerais ta réponse =)
--

--
0

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

Posez votre question
cgandco
Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
9
22 janv. 2015 à 11:19
bonjour,

peut être en déclarant

public WithEvents ThePicture(2) as PictureBox


car ton ThePicture est un tableau, je n'aie pas testé.

bonne journée
0