![]() |
In einem TListColumn (TListView) ein Bildchen darstellen
Hallo erstmal,
ich habe mir jetzt gerade eine TSortListView gebastelt (thx @ alci) in der man die Spalten sortieren kann. Nun stellt sich die Frage, darzustellen, in welchem Zustand die ListView ist. Ich dachte da an diese süßen Pfeile, aber mein Hauptproblem ist jetzt, ein Bild oben in die Spaltenüberschrift zu bekommen. Das ganze soll dann so
Code:
(nach Name aufsteigend sortiert)
/\ Name | Telefonnummer | Punkte
oder so
Code:
(nach Punkten absteigend sortiert)
Name | Telefonnummer | \/ Punkte
aussehen. Ich könnte vielleicht über das Canvas des ListViews etwas machen, aber das scheint mir nicht allzu elegant ... :wink: (Wenn einer genau soetwas schon fertig hat, darf er sich nat. auch melden ... :wink: ) |
Re: In einem TListColumn (TListView) ein Bildchen darstellen
Guck dir mal meine
![]() |
Re: In einem TListColumn (TListView) ein Bildchen darstellen
Gut ... wie/wo muss ich jetzt das Bild angeben, dass er einfügen soll ?
Delphi-Quellcode:
Ich nehme als ersten Parameter das Handle der ListView und als zweiten einfach 1 ...
procedure TSortListView.AddSortPic(const hwndHeader: HWND; iIdx: integer);
var hi : THDItem; buf : array[0..MAX_PATH]of char; begin // aktuelle Headerdaten ermitteln hi.Mask := HDI_FORMAT or HDI_IMAGE or HDI_ORDER or HDI_TEXT or HDI_WIDTH; hi.pszText := buf; hi.cchTextMax := sizeof(buf); Header_GetItem(hwndHeader,iIdx,hi); // Sortbitmap hinzufügen hi.fmt := hi.fmt or HDF_BITMAP_ON_RIGHT; hi.fmt := hi.fmt or HDF_IMAGE; hi.iImage := SortDir; Header_SetItem(hwndHeader,iIdx,hi); end; |
Re: In einem TListColumn (TListView) ein Bildchen darstellen
Hallo. Bitte nicht einfach nur den Quellcode nehmen. Ein Tutorial heißt so, weil sich irgendwer Mühe gegeben hat, um das ganze noch zu erklären. Ich hab´s versucht, soll das heißen. Du kannst mich gern kritisieren, wenn mir meine Erklärung und Beschreibung nicht gut genug gelungen ist. Aber du solltest sie wenigstens vorher lesen, weil ich alles erklärt habe, was mir wichtig erschien. Nämlich, dass es die Bildchen ab einer bestimmten Windows-Version schon gibt, und dass man sie nur bei älteren Versionen als Grafik mitliefern muss, usw.
Außerdem ist das ein nonVCL-Beispiel ist. Ob das mit der VCL-Listview auch so problemlos funktioniert, weiß ich nicht. Aber wie gesagt, bitte auch den Beipackzettel lesen ... :) |
Re: In einem TListColumn (TListView) ein Bildchen darstellen
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:28 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