ImageList crée dynamiquement et transparence ...

Résolu
Malonesystems Messages postés 25 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 21 avril 2011 - 26 févr. 2008 à 13:07
Malonesystems Messages postés 25 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 21 avril 2011 - 26 févr. 2008 à 14:01
Bonjour à tous,

J'ai un problème concernant la transparence des icones chargés dynamiquement dans une imagelist, et en provenance de ma bdd

voici les morceaux de code correspondants ...
( pictdial :  OpenPictureDialog )
( IconType : string representant l'extension de l'img ( bmp ou ico ) )
( MS : memorystream )
( bmp : TBitmap)

l'insertion ds la bdd :
... ... ...
SQL.ADD(', TypeImg = ' + quotedstr(IconType) );
SQL.ADD(', MyICON = (:MonIcone)');
ParamByName('MonIcone').loadFromFile(pictdial.FileName,ftBlob);
.... ... ...

la récupération :
... ... ...
Try
 MS: =TMemoryStream.Create;

 While not DM1.SQLQuery1.Eof
 do begin

   MS.Clear;
   MS.Position:=0;
   TBlobField(DM1.SQLQuery1.FieldByName('MyICON')).SaveToStream(MS);
   MS.Position:=0;

     If vartostr(DM1.SQLQuery1.FieldValues['TypeImg']) = 'bmp'
     then begin
     Bmp := TBitmap.Create;
     Bmp.LoadFromStream(MS);
     Bmp.Transparent := True;
     ImgList1.Add(bmp,nil);
     Bmp.free;
     Application.ProcessMessages ;
     end;

DM1.SQLQuery1.Next ;
End;
... ... ...

Cela fonctionne, j'insère bien ds ma bdd, et je récupère bien les icones ds mon imagelist, le souci, c'est que ceux-ci ont perdu leur propriété de transparence au passage et apparaissent désormais avec un fond 'rose' ...
Que manque t'il pour que ceux-ci conservent la transparence ? j'ai cherché et essayé de nombreuses choses mais sans succès, et je n'ai pas non plus trouvé sur le web ...
Avez-vous une idée qui me permettrait d'avancer sur ce sujet ??

Merci d'avance,

Malone

1 réponse

Malonesystems Messages postés 25 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 21 avril 2011 1
26 févr. 2008 à 14:01
Bah j'ai trouvé !!!

il faut utiliser
  ImgList1.AddMasked(bmp,clFuchsia) ;
au lieu de
  ImgList1.Add(bmp,nil);

Merci qd même ...
@++
3
Rejoignez-nous