Bonjour,
j'ai chargé des images dans un TListView. Je voudrais afficher l'image sélectionner dans un TImage.
Pour ajouter des images : Add, mais pour en récupérer une ?
Merci
A+
Charly
Version imprimable
Bonjour,
j'ai chargé des images dans un TListView. Je voudrais afficher l'image sélectionner dans un TImage.
Pour ajouter des images : Add, mais pour en récupérer une ?
Merci
A+
Charly
Tu veux dire ça MakeImageList pour afficher un dossier entier par exemple ?
Ce n'est que la correction d'un exemple Embarcadero pour un TButtonedEdit élargi à une TListView, après tout ce qui compte c'est la TImageList en réalité !
Pense que TImageList contient les images, pour récupérer une image au click je dirais un truc genre
Code:
1
2 ListView.LargeImages.GetImage(Item.ImageIndex, BMP); Image.Picture.Bitmap.Assign(BMP);
D'ailleurs un TWebBrowser peut aussi faire le job pour afficher les images d'un dossier avec une seule ligne de code à voir le même sujet ici soit un Navigate, une fois le Navigate Completed, en réalité, c'est une SysListView32 (celle d'explorateur Windows) que l'on peut manipuler et modifier.
Cela date de Windows 2000 et XP mais ça doit pouvoir encore fonctionner.
Tu peux voir pour utiliser un TShellListView si tes images sont sur le disque ou un TJvThumbNail aussi
Cela a été fait en D5 perso puis D6 pro pour la version TWebBrowser et en D7 pour la version TListView
https://www.developpez.net/forums/at...miniature.jpg/
Merci Shai,
GetImage n'existe pas chez moi. Pour récupérer la premiere image du ListView, j'ai essayé :
Mais j'ai une violation d'accès !Code:
1
2
3
4
5
6
7
8
9
10
11
12 procedure TForm2.Button3Click(Sender: TObject); var Bmp: TBitmap ; begin Bmp := TBitmap.Create; try ListView1.LargeImages.GetBitmap(0, BMP); Image1.Picture.Bitmap.Assign(BMP); finally Bmp.Free; end; end;
A+
Charly
Faudrait savoir où la violation d'accès !
Imaginons que tu as une ImageList1 et Image1
Mais depuis hier, je suppose que tu as résolu ton problèmeCode:ImageList1.GetBitmap(0, Image1.Picture.Bitmap);
D'ailleurs, tu vas peut-être vouloir charger l'image d'origine et non la vignette, pour cela on manque d'info sur la sources des images.
Bonjour,
comme j'ai encore D7 d'installé j'ai utilisé ma machine à remonter le temps. (c'est là on l'on voit l'évolution du produit, je me demande comment j'ai pu travaillé toutes ces années avec D3-D7 sans péter un cable)
bref, ceci fonctionne, j'y ai mis bretelles et ceinture suite à ton message indiquant des violations d'accès
reste que ce n'est pas vraiment juste, car j'utilise itemindex de la liste et non l'imageindex de l'itemCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 procedure TForm1.ListView1Click(Sender: TObject); var abitmap : Tbitmap; begin if assigned(listview1.LargeImages) AND (Listview1.ItemIndex>=0) // bretelles then begin abitmap:=tbitmap.Create; try Listview1.LargeImages.GetBitmap(listview1.ItemIndex,abitmap); if assigned(abitmap) // ceinture then image1.Picture.Bitmap.Assign(aBitmap); finally abitmap.Free; end; end; end;
[Edit] Grillé plus élégament par ShaiLeTroll
Merci à tous les 2, mais je vais tester tout ça. Mais je ne pourrai le faire que dans quelques jours
A+
Charly
Merci beaucoup, je garde la procedure de Serge qui fonctionne, mais avec SmallImages :
A+Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 { ======================================================================== } procedure TForm2.Button3Click(Sender: TObject); var abitmap : Tbitmap; begin if assigned(listview1.SmallImages) AND (Listview1.ItemIndex>=0) // bretelles then begin abitmap:=tbitmap.Create; try Listview1.SmallImages.GetBitmap(listview1.ItemIndex,abitmap); if assigned(abitmap) Then // ceinture image1.Picture.Bitmap.Assign(aBitmap); finally abitmap.Free; end; end; end; { ======================================================================== }
Charly