Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Listimage et imaglist

19 réponses
Avatar
Dan
Bonjour à tous.
Voici mon code ça ne marche pas !
Dans envoi les adresses de mes images sont dans une matrice est séparé par
un ;
dans envoi1 je fais un tableau de ma matrice envoi le séparateur étant le
point,.
Je chargeImageList1 avec le contenu de mon tableau envoi1
ensuite je cherche à remplir mon listviewer avec le contenu de ImageList1
je dois avoir tout faux et j'ai vraiment besoin de votre aide pour corriger
ma petite programmation.
Merci de votre aide car je tourne en rond depuis pas mal de temps
maintenant.



Private Sub Form7_Load(ByVal eventSender As System.Object, ByVal eventArgs
As System.EventArgs) Handles MyBase.Load
envoi1 = Split(envoi, ";")
'dimention du tableau
Dim aa = (UBound(envoi1, 1))
Dim i As Integer
' Un ImageList par code:
'******************
For i = 1 To aa
ImageList1.Images.Add(Image.FromFile(envoi1(1)))
Next
'************************
ListView1.LargeImageList = ImageList1
ListView1.Items.Clear() 'initialiser listviewer

'on affiche les image
For i = 1 To ImageList1.Images.Count
Dim LVI As New ListViewItem
LVI.Text = i.ToString
'première cellule
LVI.SubItems.Add((i * i).ToString)

ListView1.Items.Add(envoi1(LVI))
Next
ListView1.Visible = True
End Sub

10 réponses

1 2
Avatar
Bill2
Dan wrote:
' Un ImageList par code:
'******************
For i = 1 To aa
ImageList1.Images.Add(Image.FromFile(envoi1(1)))
Next
'************************



Bonjour,
y'a pas une erreur là ?

C'est pas
ImageList1.Images.Add(Image.FromFile(envoi1( i )))
plutôt ?



--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/
Avatar
Dan
merci,oui peut etre mais maintenant coment coder pour metre mes image
dans ma listviewer?
je suis perdu la
encore un grand merci pour ton aide
"Bill2" a écrit dans le message de
news:%
Dan wrote:
' Un ImageList par code:
'******************
For i = 1 To aa
ImageList1.Images.Add(Image.FromFile(envoi1(1)))
Next
'************************



Bonjour,
y'a pas une erreur là ?

C'est pas
ImageList1.Images.Add(Image.FromFile(envoi1( i )))
plutôt ?



--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/



Avatar
Bill2
Dan wrote:
merci,oui peut etre mais maintenant coment coder pour metre mes
image dans ma listviewer?
je suis perdu la
encore un grand merci pour ton aide



ben, euh, y'a juste un 1 à remplacer par un "i" ...

la boucle est bonne mais c'est jsute que tu n'utilises pas l'index i pou
récupérer chaque valeur ...

For i = 1 To aa
ImageList1.Images.Add(Image.FromFile(envoi1( i )))
Next

devrait le faire

mais bon, j'ai repéré cette erreur, et je n'ai pas cherché plus loin voir si
il y avait un autre pb ... (ou pas)

---

hop, je viens de revoir le code :

Tu associes ton imageList à ton ListView, et la ligne d'après, tu fais un
clear ... je pense que ça doit poser pb !

Faut plutôt dans l'autre sens : tu fais un clear, et ensuite tu associes la
imageList qu'il faut

Sinon, moi, perso, les images, je leur associe un "key" pour que le listView
s'y retrouve.
Par exemple, en prennant le nom/chemin de l'image associée

Et ensuite, qd tu ajoutes un item au listview, il suffit de préciser la key
de l'image correspondante

du coup, j'ai un peu de mal à comprendre la partie qui doit servir à
"afficher" tes images ...

Bon, on est vendredi soir, j'ai pas les idées très claires ....
je reverrais ça demain ;)



--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/
Avatar
Dan
en tout cas je te remercie.
ce qui compte pour moi avant tout c'est le resulta,metre mes image dans un
listviewer ,si ta methode est plus simple,donne moi le code que j'essaie,je
tourne en rond depuis 3 j a chercher des ex concret.
Passe un bon we en tout cas
"Bill2" a écrit dans le message de
news:
Dan wrote:
merci,oui peut etre mais maintenant coment coder pour metre mes
image dans ma listviewer?
je suis perdu la
encore un grand merci pour ton aide



ben, euh, y'a juste un 1 à remplacer par un "i" ...

la boucle est bonne mais c'est jsute que tu n'utilises pas l'index i pou
récupérer chaque valeur ...

For i = 1 To aa
ImageList1.Images.Add(Image.FromFile(envoi1( i )))
Next

devrait le faire

mais bon, j'ai repéré cette erreur, et je n'ai pas cherché plus loin voir
si il y avait un autre pb ... (ou pas)

---

hop, je viens de revoir le code :

Tu associes ton imageList à ton ListView, et la ligne d'après, tu fais un
clear ... je pense que ça doit poser pb !

Faut plutôt dans l'autre sens : tu fais un clear, et ensuite tu associes
la imageList qu'il faut

Sinon, moi, perso, les images, je leur associe un "key" pour que le
listView s'y retrouve.
Par exemple, en prennant le nom/chemin de l'image associée

Et ensuite, qd tu ajoutes un item au listview, il suffit de préciser la
key de l'image correspondante

du coup, j'ai un peu de mal à comprendre la partie qui doit servir à
"afficher" tes images ...

Bon, on est vendredi soir, j'ai pas les idées très claires ....
je reverrais ça demain ;)



--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/



Avatar
Bill2
Hello,

bon, je viens de coder ça rapide .. j'ai pas testé...
Bien entendu, il faut que la var "envoi" soit déclarée au niveau du form ;)

Sinon, si vos images se trouvent toutes dans un même répertoire, il y a
moyen de faire beaucoup mieux...

Private Sub Form7_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

Dim MyImgList As New ImageList

Dim Tab As Array = Split(envoi, ";")

Dim img As String

Dim imgName As String

Dim LVitem As ListViewItem = New ListViewItem

ListView1.Items.Clear()

For Each img In Tab

' On récupère le nom de l'image : ça servira d'index ds l'imglist

imgName = System.IO.Path.GetFileName(img)

MyImgList.Images.Add(imgName, Image.FromFile(img))

' on utilise le nom du fichier pour cet element du listview

LVitem.Text = imgName

'on affecte l'image correspondante

LVitem.ImageKey = imgName ' imgname sert de Key dans notre imgList

' ajout de l'élement au listView

ListView1.Items.Add(LVitem)

Next

' maintenant, on associer notre imageList à notre listView

ListView1.LargeImageList = MyImgList

End Sub



--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/
Avatar
Dan
Bonjour

Merci pour tout mais je bloque a la ligne

MyImgList.Images.Add(imgName, Image.FromFile(img))

"l'expression argumenté n'as pas été géré, Le chemin d'accès n'a pas une
forme conforme"

la valeur de imgName = " "

la valeur de img = " "

je tiens aussi a preciser que envoi contien l'adresse et le nom des images
ex:

"c:ph1photo1.jpg;c:ph2vue1.jpg;D:RR1photo31.jpg;....."

Voila si vous pouviez vous pencher encore sur mon cas je vous en serai
infiniment reconaissant

Bien cordialement

Dan

"Bill2" a écrit dans le message de
news:%23Kg%
Hello,

bon, je viens de coder ça rapide .. j'ai pas testé...
Bien entendu, il faut que la var "envoi" soit déclarée au niveau du form
;)

Sinon, si vos images se trouvent toutes dans un même répertoire, il y a
moyen de faire beaucoup mieux...

Private Sub Form7_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

Dim MyImgList As New ImageList

Dim Tab As Array = Split(envoi, ";")

Dim img As String

Dim imgName As String

Dim LVitem As ListViewItem = New ListViewItem

ListView1.Items.Clear()

For Each img In Tab

' On récupère le nom de l'image : ça servira d'index ds l'imglist

imgName = System.IO.Path.GetFileName(img)

MyImgList.Images.Add(imgName, Image.FromFile(img))

' on utilise le nom du fichier pour cet element du listview

LVitem.Text = imgName

'on affecte l'image correspondante

LVitem.ImageKey = imgName ' imgname sert de Key dans notre imgList

' ajout de l'élement au listView

ListView1.Items.Add(LVitem)

Next

' maintenant, on associer notre imageList à notre listView

ListView1.LargeImageList = MyImgList

End Sub



--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/



Avatar
Bill2
Dan wrote:
Bonjour

Merci pour tout mais je bloque a la ligne

MyImgList.Images.Add(imgName, Image.FromFile(img))

"l'expression argumenté n'as pas été géré, Le chemin d'accès n'a pas
une forme conforme"

la valeur de imgName = " "

la valeur de img = " "



ben, si la valeur de img est vide, c'est que dans le tableau de départ, il y
a un élément vide (par exemple, 2 ";" qui se suivent

Rajoutez cette ligne juste après le "for each"
If String.IsNullOrEmpty(img.Trim) Then Continue For

Comme ça, si une valeur est vide, on passe direct à la suivante sans
chercher à faire quoi que ce soit d'autre

je tiens aussi a preciser que envoi contien l'adresse et le nom des
images ex:

"c:ph1photo1.jpg;c:ph2vue1.jpg;D:RR1photo31.jpg;....."

Voila si vous pouviez vous pencher encore sur mon cas je vous en
serai infiniment reconaissant

Bien cordialement

Dan



--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/
Avatar
Dan
bonjour.
Merci encore

Cette fois cie j'ai bien le nom de ma photo 'divers 2008 053 [50%].JPG'
dans
LVitem mais il bloque sur la ligne :

ListView1.Items.Add(LVitem) en m'indiquant l'erreur :

"Impossible d'ajouter ou d'insérer l'élément 'divers 2008 053 [50%].JPG' à
plusieurs emplacements. Vous devez tout d'abord le supprimer de son
emplacement actuel ou le cloner. Nom du paramètre : item"

Je crois que grace a vous je touche au but mais je ne sais pas ce que cela
veut dire.



"Bill2" a écrit dans le message de
news:%
Dan wrote:
Bonjour

Merci pour tout mais je bloque a la ligne

MyImgList.Images.Add(imgName, Image.FromFile(img))

"l'expression argumenté n'as pas été géré, Le chemin d'accès n'a pas
une forme conforme"

la valeur de imgName = " "

la valeur de img = " "



ben, si la valeur de img est vide, c'est que dans le tableau de départ, il
y a un élément vide (par exemple, 2 ";" qui se suivent

Rajoutez cette ligne juste après le "for each"
If String.IsNullOrEmpty(img.Trim) Then Continue For

Comme ça, si une valeur est vide, on passe direct à la suivante sans
chercher à faire quoi que ce soit d'autre

je tiens aussi a preciser que envoi contien l'adresse et le nom des
images ex:

"c:ph1photo1.jpg;c:ph2vue1.jpg;D:RR1photo31.jpg;....."

Voila si vous pouviez vous pencher encore sur mon cas je vous en
serai infiniment reconaissant

Bien cordialement

Dan



--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/




Avatar
Dan
j'ai fait un essai en ne prenant en compte qu'une seule photo dans envoi et
ca tourne mazis je ne vois aucune photo dans listview1
apres la ligne ListView1.Items.Clear()
j'ai ajouté la ligne ListView1.OwnerDraw = True
et aussi ListView1.View = View.List j'ai tout essaye pour cette derniere
ligne
detail....
c'est la meme chose.
faut il aussi metre une entete de colonnes?


"Bill2" a écrit dans le message de
news:%
Dan wrote:
Bonjour

Merci pour tout mais je bloque a la ligne

MyImgList.Images.Add(imgName, Image.FromFile(img))

"l'expression argumenté n'as pas été géré, Le chemin d'accès n'a pas
une forme conforme"

la valeur de imgName = " "

la valeur de img = " "



ben, si la valeur de img est vide, c'est que dans le tableau de départ, il
y a un élément vide (par exemple, 2 ";" qui se suivent

Rajoutez cette ligne juste après le "for each"
If String.IsNullOrEmpty(img.Trim) Then Continue For

Comme ça, si une valeur est vide, on passe direct à la suivante sans
chercher à faire quoi que ce soit d'autre

je tiens aussi a preciser que envoi contien l'adresse et le nom des
images ex:

"c:ph1photo1.jpg;c:ph2vue1.jpg;D:RR1photo31.jpg;....."

Voila si vous pouviez vous pencher encore sur mon cas je vous en
serai infiniment reconaissant

Bien cordialement

Dan



--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/




Avatar
Bill2
Dan wrote:
bonjour.
Merci encore

Cette fois cie j'ai bien le nom de ma photo 'divers 2008 053
[50%].JPG' dans
LVitem mais il bloque sur la ligne :

ListView1.Items.Add(LVitem) en m'indiquant l'erreur :

"Impossible d'ajouter ou d'insérer l'élément 'divers 2008 053
[50%].JPG' à plusieurs emplacements. Vous devez tout d'abord le
supprimer de son emplacement actuel ou le cloner. Nom du paramètre :
item"
Je crois que grace a vous je touche au but mais je ne sais pas ce
que cela veut dire.




Visiblement, c'est qu'il y a 2 photos au moins avec le même nom je pense ...

Vous pourriez m'envoyer le projet complet, et au moins 2 rep contenant
quelques photos, que je regarde ça ?
--
Bill2
Utilisez Process Manager, gestionnaire de processus automatique :
http://www.bill2-software.com/processmanager/
1 2