AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ImageList transparent machen

Ein Thema von Diamondback2007 · begonnen am 15. Dez 2007 · letzter Beitrag vom 22. Okt 2008
Antwort Antwort
Benutzerbild von Diamondback2007
Diamondback2007

Registriert seit: 2. Feb 2007
260 Beiträge
 
Delphi 2007 Professional
 
#1

ImageList transparent machen

  Alt 15. Dez 2007, 12:31
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ß
Miniaturansicht angehängter Grafiken
screen1_984.png  
Fabian E.
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: ImageList transparent machen

  Alt 15. Dez 2007, 12:52
Kuck mal hier

Ist aus der Code Library der DP!

P@Tti
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

Registriert seit: 2. Feb 2007
260 Beiträge
 
Delphi 2007 Professional
 
#3

Re: ImageList transparent machen

  Alt 15. Dez 2007, 13:42
Vielen dank ! das klappt

gruß
Fabian E.
  Mit Zitat antworten Zitat
Tiramisu

Registriert seit: 29. Mai 2003
5 Beiträge
 
#4

Re: ImageList transparent machen

  Alt 22. Okt 2008, 13:01
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 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