Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ImageList transparent machen (https://www.delphipraxis.net/105081-imagelist-transparent-machen.html)

Diamondback2007 15. Dez 2007 12:31


ImageList transparent machen
 
Liste der Anhänge anzeigen (Anzahl: 1)
hallo,

ich habe eine problem mit icons die ich auslese und
in einer imagelist speichere.
die icons scheinen nicht transparent zu sein,
dass heißt der hintergrund ist schwarz...
wie kann ich das umgehen oder verhindern?

gruß

patti 15. Dez 2007 12:52

Re: ImageList transparent machen
 
Kuck mal hier

Ist aus der Code Library der DP!

P@Tti

Diamondback2007 15. Dez 2007 13:42

Re: ImageList transparent machen
 
Vielen dank !:) das klappt :)

gruß

Tiramisu 22. Okt 2008 13:01

Re: ImageList transparent machen
 
so ich muss leider das Thema wieder aufrollen.

Diese Lösung wie oben funktioniert, allerdings wenn in der OnCreate Routine der Handle vom ImageList mit dem ERSTEN Icon beschrieben wurde.
ist dieses ICON wenn ich es zur laufzeit neu lade, gleiche Routine, nicht mehr vorhanden.

Delphi-Quellcode:
mainForm.OnCreate()

  // PChar(copy(ParamStr(0),1,3) = C:\

  try
    SysIcons := SHGetFileInfo(PChar(copy(ParamStr(0),1,3)), 0, SHFileInfo,
      SizeOf(SHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON or
      SHGFI_ICON);
  finally
    DestroyIcon(SHFileInfo.hIcon);
  end;
  ImageList1.Handle    := SysIcons;
  ImageList1.Masked    := False;
  ImageList1.BkColor   := clNone;
  ImageList1.BlendColor := clNone;
  ImageList1.Clear;

...

TreeView.Parse()

  Icon := TIcon.Create;

  try
    //Get The Icon That Represents The File ----------------------
    SysIcons := SHGetFileInfo(PChar('C:\'), 0, SHFileInfo,
      SizeOf(SHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON or SHGFI_ICON);

    Icon.Handle := SHFileInfo.hIcon;
    // Icon wird dem Item des TreeView zugeordnet
    tn.ImageIndex := ImageList1.AddIcon(Icon);
    tn.SelectedIndex := tn.ImageIndex;
  finally
    DestroyIcon(SHFileInfo.hIcon)
  end;
Das Laufwerksicon ( C:\ ), das beim Windows Explorer erscheint, ist beim Ausführen der Parse Routine im Programm selbst nicht mehr vorhanden.
Wo geht es verloren und warum werden die Informationen nicht neu geholt wenn ich die 'SHGetFileInfo' Methode neu aufrufe.

Vielleicht weiß jemand von euch warum das so ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz