Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: In einem TListColumn (TListView) ein Bildchen darstellen

  Alt 29. Apr 2005, 17:15
Ok, werde ich in Zukunft machen.

Ich habe jetzt in der JVCL ein TJvListView entdeckt, das (glaube ich) alles kann, was ich brauche.

Für die Interessierten, hier mein Code:
(Ja, es klappt, nur noch nicht mit der Transparenz)

Wenn ihr das nicht in eine Kompo packen wollt, müsst ihr überall Self ersetzen, ist aber sauberer, in einer eigenen Klasse ...

Delphi-Quellcode:
procedure TSortListView.SetGlyph(Index: Integer; Glyph: TBitmap);
var
  hHeader: HWND;
  HDItem: THDItem;
  Buf: array[0..MAX_PATH]of char;
begin
  hHeader := Listview_GetHeader(Self.Handle);

  HDItem.Mask := HDI_FORMAT or HDI_IMAGE or HDI_ORDER or HDI_TEXT or HDI_WIDTH;
  HDItem.pszText := Buf;
  HDItem.cchTextMax := SizeOf (Buf);

  Header_GetItem(hHeader, Index, HDItem);

  HDItem.Mask := HDItem.Mask or HDI_BITMAP;
  HDItem.fmt := HDItem.fmt or HDF_BITMAP or HDF_BITMAP_ON_RIGHT;

  HDItem.hbm := Glyph.Handle;

  Header_SetItem(hHeader, Index, HDItem);
end;

procedure TSortListView.DelGlyph(Index: Integer);
var
  hHeader: HWND;
  HDItem: THDItem;
  Buf: array[0..MAX_PATH]of char;
begin
  hHeader := Listview_GetHeader(Self.Handle);

  HDItem.Mask := HDI_BITMAP or HDI_FORMAT or HDI_IMAGE or HDI_ORDER or HDI_TEXT or HDI_WIDTH;
  HDItem.pszText := Buf;
  HDItem.cchTextMax := SizeOf (Buf);

  Header_GetItem(hHeader, Index, HDItem);

  HDItem.fmt := HDItem.fmt and not HDF_BITMAP and not HDF_BITMAP_ON_RIGHT;

  Header_SetItem(hHeader, Index, HDItem);
end;
  Mit Zitat antworten Zitat