Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Listview, DrawText und ColumnID
renegi - Mi 26.04.06 11:34
Titel: Listview, DrawText und ColumnID
Hallo,
ich hänge seit einiger Zeit an diesem Problem fest.
Also, ich habe eine mehrspaltige Listview, die komplett überzeichnet wird (SelectedColor, ...). Der Text wird über DrawText(listview.canvas.handle, ...) ausgegeben.
Die Header sind alle links ausgerichtet und die Daten links oder rechts. Wenn der Benutzer die Spaltenreihenfolge geändert hat, soll es beim nächstem Start auch entsprechend geladen werden. Deshalb nutze ich die ColumnID.
Soweit klappt ja auch alles.
Aber wenn ich eine Spalte verschiebe, werden die Daten in der nächsten Spalte immer rechtsbündig ausgegeben, obwohl meine Funktion GetDirectionbyID den richtigen Wert liefert.
for i := 1 to lvTitle.Columns.Count - 2 do begin
ListView_GetSubItemRect(lvTitle.Handle, Item.Index, i, LVIR_BOUNDS, @R);
s := Item.SubItems[i - 1];
c := DT_VCENTER + DT_END_ELLIPSIS + DT_NOPREFIX;
case GetDirectionbyID(lvTitle.Columns[i].ID) of
0 : c := c + DT_LEFT;
1 : if lvTitle.Canvas.TextWidth(s) > (R.Right - R.Left) then
c := c + DT_LEFT
else
c := c + DT_RIGHT;
end;
DrawText(lvTitle.Canvas.Handle, PChar(s), Length(s), R, c);
end;
Ich habe absolut keine Idee, woran das liegen könnte. Schonmal Danke im Voraus.
mfg renegi
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!