![]() |
ListView Icon Transparenz Problem
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, ich werde irgendwie alleine nicht fündig,
ich habe eine Listview und hole/fülle mir so die Icons:
Delphi-Quellcode:
das funktioniert prinzipiell schon mal so wie gedacht.
var
FileInfo: SHFILEINFOW; Icon: TIcon; Files: TStringList; ... with Processes.Items.Add() do begin SHGetFileInfoW(PWideChar(Files[i]), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON); Icon.Handle := FileInfo.hIcon; ImageIndex := FileIcons.AddIcon(Icon); DestroyIcon(FileInfo.hIcon); end; Aber viele Icons zeigen Schwarz an obwohl dort eigentlich transparenz herrschen sollte. Kann man das irgendwie beheben? Anhang 50120 Hier die DFM Daten:
Code:
/edit
object Processes: TListView
AlignWithMargins = True Left = 3 Top = 3 Width = 466 Height = 195 Align = alClient Columns = < item AutoSize = True Caption = 'Filename' end item Caption = 'PID' MaxWidth = 70 MinWidth = 50 end item Caption = 'Started' MaxWidth = 130 MinWidth = 130 Width = 130 end> ReadOnly = True RowSelect = True SmallImages = FileIcons TabOrder = 0 ViewStyle = vsReport end end object FileIcons: TImageList DrawingStyle = dsTransparent ImageType = itMask Left = 24 Top = 48 end Post überarbeitet und auf eine Frage beschränkt. Hier noch mal die Frage: Wie kann ich Icons in ListView darstellen so das die schwarze Farbe Transparent ist? |
AW: ListView mit Icons die Transparent sind darstellen und Scrollbalken entfernen
Bitte erstell für jedes Problem einen separaten Thread.
|
AW: ListView mit Icons die Transparent sind darstellen und Scrollbalken entfernen
|
AW: ListView mit Icons die Transparent sind darstellen und Scrollbalken entfernen
Zitat:
|
AW: ListView Icon Transparenz Problem
Wenn gestattet dann ein eventueller Verbesserungsvorschlag?
Neue Spalten: Process name, PID, Path, Started Dein Tool ist ein Tool zum Auflisten von Prozessen und die Hauptinformation die ein Nutzer sucht ist der Prozessname. Der Pfad ist nur weitere Information. |
AW: ListView Icon Transparenz Problem
Okay, ich scheine eine passende Stellschraube gefunden zu haben aber kann mir nicht vorstellen dass das korrekt ist.
Delphi-Quellcode:
.
ImageList.BkColor := clWhite
@DieDolly, danke, das passt schon, für mich steht der Zeitpunkt der Erstellung und PID im Fokus, Rest ist nur damit man was sieht :-) |
AW: ListView Icon Transparenz Problem
@dolly, habe es nun so gemacht wie du vorgeschlagen hast (nur weil ich da noch ne sortier funktion eingebaut habe ^^)
wer mag kann das tool sich ![]() (es ist noch beta, da muss noch ne konfiguration usw rein, speichert keine spaltenmaße usw... bei interesse werkel ich da noch ein wenig rum und stelle es in userprojects vor) |
AW: ListView Icon Transparenz Problem
Ein FileListView geht so: (Abriss)
Code:
var ImageList: TImageList;
... var sfi: TShFileInfo; ImageList:=TImageList.Create(nil); ImageList.Handle:=SHGetFileInfo(PChar(GetWinDir), 0, sfi, sizeof(TShFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON); ImageList.ShareImages:=True; ImageList.BkColor:=clNone; ImageList.BlendColor:=clNone; ... ListView1.SmallImages:=ImageList; ... var sfi: TShFileInfo; SHGetFileInfo(PChar(FileName), 0, sfi, sizeof(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON); with ListView1.Items.Add do begin Caption:=ExtractFileName(FileName); ... ImageIndex:=sfi.iIcon; end; ... ImageList.Free; |
AW: ListView Icon Transparenz Problem
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Ich habe auch mit Icon.Transparent etc herumprobiert, ich bekomme es, ohne meinen Umweg den ich oben beschrieb, nicht zum laufen So schaut der aktuelle Build aus. Anhang 50121 |
AW: ListView Icon Transparenz Problem
Auch wenn du es genauso machst wie gezeigt? Der Code ist seit Jahren über mehrere Compiler im Einsatz. Immer "Transparente" Icons.
|
AW: ListView Icon Transparenz Problem
Zitat:
Ich frage mich auch wozu Du eine ImageList erstellst wenn sie im Code keine Verwendung hat. Zitat:
|
AW: ListView Icon Transparenz Problem
Code:
var ImageList: TImageList; //Variable
... var sfi: TShFileInfo; ImageList:=TImageList.Create(nil); //erstellen,... ImageList.Handle:=SHGetFileInfo(PChar(GetWinDir), 0, sfi, sizeof(TShFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON); //Handle zuweisen,... ImageList.ShareImages:=True; //System-Icons nur nutzen, am Ende aber nicht freigeben,... ImageList.BkColor:=clNone; ImageList.BlendColor:=clNone; ... ListView1.SmallImages:=ImageList; //ListView sagen diese ImageList zu benutzen ... var sfi: TShFileInfo; SHGetFileInfo(PChar(FileName), 0, sfi, sizeof(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON); //IconIndex holen with ListView1.Items.Add do begin Caption:=ExtractFileName(FileName); ... ImageIndex:=sfi.iIcon; //IconIndex zuweisen (sfi.iIcon ist Index kein Handle), du sagst ihm, das er Icon Nummer x aus seinen SmallImages also der SystemImageList (ImageList) dem Item zuweisen soll end; ... ImageList.Free; //freigeben (aber nur Objektinstanz, Icons nicht) |
AW: ListView Icon Transparenz Problem
Und Beispiel...
![]() |
AW: ListView Icon Transparenz Problem
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, der Fehler lag da in meinem Code irgendwo verborgen.
Also Danke nochmal für Deine mühe, nun klappt es wie es soll!!! Anhang 50123 Das ärgert mich das ich es mit Deiner Vorlage nicht hinbekommen hatte, aber nun wird alles gut, Dank Dir!:thumb: /edit habe den fehler gefunden
Delphi-Quellcode:
Vermutlich macht mein GetWinDir etwas anderes als Deins. Gebe ich da den Pfad direkt ein = alles funktioniert, mit meinem GetWinDir() habe ich gar keine Icons.
ImageList.Handle:=SHGetFileInfo(PChar(GetWinDir), 0, sfi, sizeof(TShFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON); //Handle zuweisen,...
|
AW: ListView Icon Transparenz Problem
Code:
function GetWinDir: string;
var len: DWord; begin len:=MAX_PATH+1; SetLength(result, len); len:=GetWindowsDirectory(PChar(result), len); if len>0 then SetLength(result, len) else RaiseLastOSError; end; |
AW: ListView Icon Transparenz Problem
Delphi-Quellcode:
Das war meine... strange das ganze aber nun fruchtet es, ganz herzlichen Dank nochmal für Deine tatkräftige Unterstützung!
function GetWinDir: string;
var dir: array [0..MAX_PATH] of WideChar; begin GetWindowsDirectoryW(dir, MAX_PATH); Result := StrPas(dir); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz