Einzelnen Beitrag anzeigen

Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#8

AW: Transparente Bitmap im Listvie-Header?

  Alt 20. Feb 2015, 16:05
Hi,

so wird's geladen:
Delphi-Quellcode:
var
  hdr: HWND;
  hdritem: THDItem;
begin
  hdr := Listview_GetHeader(handle);
  FillChar(hdritem, sizeof(hdritem), 0);
  hdritem.Mask := HDI_FORMAT;
  Header_GetItem(hdr, column.index, hdritem);
  hdritem.Mask := HDI_FORMAT or HDI_BITMAP;
  if FSortDirection=sdAscending then
    hdritem.hbm := FDownArrow.Handle
  else
    hdritem.hbm := FUpArrow.Handle;
  if fsortarrowwhere=saLeft then
    hdritem.fmt := hdritem.fmt or HDF_BITMAP //$400 or $200
  else
    hdritem.fmt := hdritem.fmt or HDF_BITMAP_ON_RIGHT or HDF_BITMAP;
  Header_SetItem(hdr, column.index, hdritem);
  end;
end;
Und das funktioniert auch gut.

Inzwischen bin ich einen Schritt weiter und weiß nicht weiter...
Bei der Benutzung einer Listview.smallimagelist
ist mir folgendes aufgefallen:
1. Lade ich mein Bild mit dem Editor der Imagelist, wird es danach transparent im Header dargestellt.
2. Lade ich es mit Imagelist.addbitmap(Bild,nil);, weil ich ja keine Maske habe, wird es danach im Header nicht mehr transparent dargestellt.

Es scheint also an der "automatisch generierten" Maske zu liegen, wenn man das Bild per Editor lädt.
Und nun weiß ich nicht, wie ich die kriege (Imagelist.getMaskbitmap kriege ich nicht hin) und wie ich das direkt maskiert in den Header machen kann.

Wisst Ihr weiter?

Gruß
Mattze
  Mit Zitat antworten Zitat