![]() |
Icons in TListView haben schwarzen Rand!
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe mit dem Code für das Herausfinden von Icons von Dateitypen Icons bzw. Items in meine Listview gespeichert. Die Icons dieser Items haben nun das gewünschte Icon, nur mit einer sehr unschönen schwarzen Umrandung. Der Code für die Listenerstellung:
Delphi-Quellcode:
Im Anhang ein Screenshot, wo die schwarzen Ränder zu sehen zu sehen sind
procedure TMainForm.MailForm_AttachFile(const FileName: String);
var Item: TListItem; Icon : TIcon; begin Item := TListItem.Create(lwMail_AttachmentList.Items); lwMail_AttachmentList.LargeImages := GlobalImageList; Icon := TIcon.Create; Icon.Handle := Properties.GetAssociatedIcon(ExtractFileExt(FileName), false); icon.Transparent := true; lwMail_AttachmentList.Items.BeginUpdate; Item := lwMail_AttachmentList.Items.Add; Item.ImageIndex := GlobalImageList.AddIcon(Icon); Item.Caption := ExtractFileName(FileName); lwMail_AttachmentList.Items.EndUpdate; Icon.Free; // Attachment liste hinzufügen Mail.Attachment.Add(Mail.CheckAttachment(FileName)); end; |
Re: Icons in TListView haben schwarzen Rand!
Hallo
Ich habe da keine lösung für aber das liegt dadran das das XP Icons sind und da TListView diesen XP Icon Typ nicht unterstüzt geht es auch nicht. Glaube auch nicht das es dafür eine lösung gibt. |
Re: Icons in TListView haben schwarzen Rand!
welche Auflösung haben die Icons?
|
Re: Icons in TListView haben schwarzen Rand!
Zitat:
Ich habe die Funktion mal ausprobiert und egal welche auflösung die Icons haben ob 16X16 oder 32x32. Der Rand ist immer da da das eigentlich eine art Schatten von XP sein sollte der nicht unterstützt wird. |
Re: Icons in TListView haben schwarzen Rand!
Ach so! Dann kann muss man es eben so lassen.
|
Re: Icons in TListView haben schwarzen Rand!
Versuch mal, das Icon transparent zu machen.
|
Re: Icons in TListView haben schwarzen Rand!
Zitat:
Bau einfach folgenden Code in dein FormCreate ein:
Delphi-Quellcode:
Danach kannst Du Programmicons mit Alphablending (schwarze Ränder) in deine ImageList einfügen und sie werden korrekt angezeigt.
var
SHFileInfo: TSHFileInfo; SysIcons: THandle; begin 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.Clear; ... |
Re: Icons in TListView haben schwarzen Rand!
Ab welcher Delphi Version geht es denn? Bei D3 Pro kennt er TSHFileInfo nicht!
Was nun? Gruß, Timon |
Re: Icons in TListView haben schwarzen Rand!
Zitat:
|
Re: Icons in TListView haben schwarzen Rand!
@Mirage: Wusstest du schon, dass die DP eine Code-Library hat? ;)
![]() |
Re: Icons in TListView haben schwarzen Rand!
Zitat:
mfG mirage228 |
Re: Icons in TListView haben schwarzen Rand!
Zitat:
|
Re: Icons in TListView haben schwarzen Rand!
Bei mir geht es trotzdem nicht... erst werden bei den ersten 5 einige systemicons angezeigt (verknüpfung und so...) und wenn ich erst zur laufzeit ein 32bit-Bitmap hinzufüge (wenn ich bei Maske nil angebe) bleibt der Hintegrund schwarz. Ich weiß nicht, wie ich das mit der Maske etc. machen soll... kann nicht mal jemand einen beispielprogramm (wenigstens OnCreate und wie man dann Bitmaps oder Icons hinzufügt)?
:thumb: Aber ich find's schon klasse, das wenigsten die 5 system icons mit schatten gezeigt werden!!! :-D gruß, timon |
Re: Icons in TListView haben schwarzen Rand!
Sorry...
Hab's schon selber entdeckt wie man Icons anfügt! Habe aber was anderes zu fragen: Ich habe versucht eine dafür passende T(New)ImageList erstellt, aber die Icons die ich hinzufüge sind immer nur 5 mal 5 Pixel groß:
Delphi-Quellcode:
Gruß,
constructor TNewImageList.Create(AOwner: TComponent);
var SHFileInfo: TSHFileInfo; SysIcons: THandle; begin inherited Create(AOwner); 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; Self.Handle := SysIcons; end; Timon. |
Re: Icons in TListView haben schwarzen Rand!
|
Re: Icons in TListView haben schwarzen Rand!
Zitat:
Gibt es denn irgendwo eine neuere ShellAPI.dcu bei Borland für Delphi 3 zu downloaden??? Gruß, Timon. |
Re: Icons in TListView haben schwarzen Rand!
Hi,
der ImageList_Create() Befehl ist nicht in der Unit ShellAPI, sondern in der CommCtrl Unit deklariert. mfG mirage228 |
Re: Icons in TListView haben schwarzen Rand!
Zitat:
Stimmt... Ich hatte bei mir den Befehl nur an falscher Stelle platziert. Aber funktionieren tut es so
Code:
trotzdem nicht.
Handle := ImageList_Create(16,16,ILC_COLOR32,255,0);
Aber ich habe mir jetzt dieses Convert ImageList (XP Fix) angeschaut und eingebunden:
Code:
Gruß,
//Diese Procedure habe ich hinzugefügt...
procedure ConvertTo32BitImageList(const ImageList: TImageList); const Mask: array[Boolean] of Longint = (0, ILC_MASK); var TemporyImageList: TImageList; begin if Assigned(ImageList) then begin TemporyImageList := TImageList.Create(nil); try TemporyImageList.Assign(ImageList); with ImageList do begin ImageList.Handle := ImageList_Create(Width, Height, ILC_COLOR32 or Mask[Masked], 0, AllocBy); if not ImageList.HandleAllocated then begin raise EInvalidOperation.Create(SInvalidImageList); end; end; ImageList.AddImages(TemporyImageList); finally TemporyImageList.Free; end; end; end; //...und hier eingebunden. constructor TNewImageList.Create(AOwner: TComponent); begin inherited Create(AOwner); ConvertTo32BitImageList(Self); end; Timon. |
Re: Icons in TListView haben schwarzen Rand!
Hi,
in Deinem Aufruf:
Delphi-Quellcode:
sind die letzten beiden Parameter anders, als in der Prozedur darunter. Eventuell liegt es daran.
ImageList_Create(16,16,ILC_COLOR32,255,0);
Ich konnte die Prozedur übrigens ohne Fehlermeldungen unter Delphi 3 compilieren. Daher wäre es gut zu wissen, was genau nicht klappt. mfG mirage228 |
Re: Icons in TListView haben schwarzen Rand!
Zitat:
Gruß, Timon. |
Re: Icons in TListView haben schwarzen Rand!
Zitat:
mfG mirage228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 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-2025 by Thomas Breitkreuz