Delphi-PRAXiS
Seite 1 von 3  1 23      

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 Icons in TListView haben schwarzen Rand! (https://www.delphipraxis.net/9406-icons-tlistview-haben-schwarzen-rand.html)

mirage228 25. Sep 2003 19:41


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:
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;
Im Anhang ein Screenshot, wo die schwarzen Ränder zu sehen zu sehen sind

DSeven 25. Sep 2003 19:45

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.

Dagon 25. Sep 2003 20:23

Re: Icons in TListView haben schwarzen Rand!
 
welche Auflösung haben die Icons?

DSeven 25. Sep 2003 20:24

Re: Icons in TListView haben schwarzen Rand!
 
Zitat:

Zitat von the_master
welche Auflösung haben die Icons?

Hallo

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.

Dagon 25. Sep 2003 20:27

Re: Icons in TListView haben schwarzen Rand!
 
Ach so! Dann kann muss man es eben so lassen.

Chewie 25. Sep 2003 21:21

Re: Icons in TListView haben schwarzen Rand!
 
Versuch mal, das Icon transparent zu machen.

FriFra 25. Sep 2003 22:44

Re: Icons in TListView haben schwarzen Rand!
 
Zitat:

Zitat von the_master
Ach so! Dann kann muss man es eben so lassen.

musst Du nicht ;) Das ist wohl ein Bug in der Implementierung der ImageList-Komponente...

Bau einfach folgenden Code in dein FormCreate ein:
Delphi-Quellcode:
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;
...
Danach kannst Du Programmicons mit Alphablending (schwarze Ränder) in deine ImageList einfügen und sie werden korrekt angezeigt.

TimonWorld 11. Mär 2005 22:53

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

Sprint 11. Mär 2005 22:56

Re: Icons in TListView haben schwarzen Rand!
 
Zitat:

Zitat von TimonWorld
Ab welcher Delphi Version geht es denn? Bei D3 Pro kennt er TSHFileInfo nicht!

Du musst die Unit ShellAPI mit einbinden.

Matze 11. Mär 2005 23:04

Re: Icons in TListView haben schwarzen Rand!
 
@Mirage: Wusstest du schon, dass die DP eine Code-Library hat? ;)

schwarzer randschwarzer rand hätte auch geholfen. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:09 Uhr.
Seite 1 von 3  1 23      

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