Quelqu'un sait pourquoi je n'arrive pas à copier l'image contenue dans un TimageList à index indiqué vers le Timage ?
- couverture est le TImage destination.
- ImageList1 est la liste d'image.
- ARow est l'index de l'image à copier.
Code qui marche pas :
couverture (le TImage) reste toujours vide avec ce code, alors qu'il se remplit bien d'une image quand je la charge par sa fonction loadFromFile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin ImageList1.GetBitmap(ARow,couverture.Picture.Bitmap); end;
Code qui marche :
Les -1 c'est parce que l'index des lignes du stringGrid commence à 1, tandis que celui du TimageList commence à 0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin ImageList1.GetBitmap(ARow-1,couverture.Picture.Bitmap); if (ARow-1=0) then couverture.Picture.LoadFromFile('couvertures/livre1.bmp'); if (ARow-1=1) then couverture.Picture.LoadFromFile('couvertures/livre2.bmp'); end;
Auparavant, le TImageList à été chargé par :
En attendant, j'utilise ce code qui fonctionne bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 procedure TForm1.couvertureClick(Sender: TObject); begin if OpenPictureDialog1.Execute then begin couverture.Picture.LoadFromFile(OpenPictureDialog1.FileName); ImageList1.Add(couverture.Picture.Bitmap,Nil); end; end;
Ce code utilise le loadfromfile mais je préfèrerais charger l'image dans Timage en utilisant directement l'image prise du TimageList (voir haut du post)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin ImageList1.GetBitmap(ARow-1,couverture.Picture.Bitmap); chaine:='couvertures/livre'+IntToStr(ARow)+'.bmp'; couverture.Picture.LoadFromFile(chaine); end;
Partager