Delphi-PRAXiS
Seite 2 von 3     12 3      

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 12. Mär 2005 07:40

Re: Icons in TListView haben schwarzen Rand!
 
Zitat:

Zitat von Matze
@Mirage: Wusstest du schon, dass die DP eine Code-Library hat? ;)

schwarzer randschwarzer rand hätte auch geholfen. ;)

Und jetzt schau Dir mal ganz genau das Datum meines Posting und den des Eintrages in der Code-Library an :mrgreen:

mfG
mirage228

Die Muhkuh 12. Mär 2005 07:43

Re: Icons in TListView haben schwarzen Rand!
 
Zitat:

Zitat von mirage228
Zitat:

Zitat von Matze
@Mirage: Wusstest du schon, dass die DP eine Code-Library hat? ;)

schwarzer randschwarzer rand hätte auch geholfen. ;)

Und jetzt schau Dir mal ganz genau das Datum meines Posting und den des Eintrages in der Code-Library an :mrgreen:

mfG
mirage228

:lol:

TimonWorld 12. Mär 2005 11:06

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

TimonWorld 23. Apr 2005 15:13

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:
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;
Gruß,
Timon.

NicoDE 23. Apr 2005 15:32

Re: Icons in TListView haben schwarzen Rand!
 
Hier im Forum suchenILC_COLOR32

TimonWorld 24. Apr 2005 10:46

Re: Icons in TListView haben schwarzen Rand!
 
Zitat:

Zitat von NicoDE

Danke, aber den Befehl "ImageList_Create()" und die "Convert ImageList (XP Fix)" kann ich bei Delphi 3 leider nicht verwenden.

Gibt es denn irgendwo eine neuere ShellAPI.dcu bei Borland für Delphi 3 zu downloaden???

Gruß,
Timon.

mirage228 24. Apr 2005 10:48

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

TimonWorld 24. Apr 2005 11:32

Re: Icons in TListView haben schwarzen Rand!
 
Zitat:

Zitat von mirage228
Hi,

der ImageList_Create() Befehl ist nicht in der Unit ShellAPI, sondern in der CommCtrl Unit deklariert.

mfG
mirage228

Hallo!

Stimmt... Ich hatte bei mir den Befehl nur an falscher Stelle platziert.

Aber funktionieren tut es so
Code:
Handle := ImageList_Create(16,16,ILC_COLOR32,255,0);
trotzdem nicht.

Aber ich habe mir jetzt dieses Convert ImageList (XP Fix) angeschaut und eingebunden:

Code:
//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;
Gruß,
Timon.

mirage228 24. Apr 2005 11:36

Re: Icons in TListView haben schwarzen Rand!
 
Hi,

in Deinem Aufruf:
Delphi-Quellcode:
ImageList_Create(16,16,ILC_COLOR32,255,0);
sind die letzten beiden Parameter anders, als in der Prozedur darunter. Eventuell liegt es daran.

Ich konnte die Prozedur übrigens ohne Fehlermeldungen unter Delphi 3 compilieren.
Daher wäre es gut zu wissen, was genau nicht klappt.

mfG
mirage228

TimonWorld 24. Apr 2005 12:14

Re: Icons in TListView haben schwarzen Rand!
 
Zitat:

Zitat von mirage228
Ich konnte die Prozedur übrigens ohne Fehlermeldungen unter Delphi 3 compilieren.
Daher wäre es gut zu wissen, was genau nicht klappt.

Ich konnte auch beide verschiedene Möglichkeiten ohne Fehler compilieren, aber wenn ich dann mit der ImageList arbeite ist der Hintergrund weiß, wenn es Bilder mit Alpha-Channel sind.

Gruß,
Timon.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:16 Uhr.
Seite 2 von 3     12 3      

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