-
Hallöle...
Irgendwie stehe ich mit dem ListView von Borland auf Kriegsfuß
Ich will eigendlich nur ganz gemütlich die Hintergrundfarbe der Items ändern, je nch dem welche Spalte gerade angeklickt wurde.
Nun ist aber das Problem, das z.B. die Item->Caption-Spalte an 2.Stelle steht.
Wenn nun der SubItem gezeichnet wird, der sich an erster Position befindet, mal der mir über die Captionspalte, so das bei beiden der gleiche Hintergrund ist... Das ist blöd....
Wie könnte ich das in den Griff bekommen? (OnAdvancedCustomDrawSubItem hilft nix)
Ich hatte jetzt auch schon versucht, einfach mittels OnCustomDraw die Spalte zu färben und den Item transparent zu machen. Will aber auch nicht
Befehl aus der WinAPI dafür:
ListView_SetTextBkColor(ListView1->Handle, CLR_NONE);
Hat aber irgendwie nur den Effekt, das der Text(nur der Text, nicht die gesammte Spaltenbreite, die ist Transparent) in der Farbe gemalt wird, in der ich auf den Hintergrund gemalt hab. Fällt natürlich bei einem an der Stelle weißen Hintergrund und roter Markierung auf...
Bsp:
Spalte1 | Spalte2 | Spalte3 |
##T1### | T4 | T7 |
##T2### | T5 | T8 |
##T3### | T6 | T9 |
Spalte1 ist rot hinterlegt (OnCustomDraw). T1-T3 sind dargestellt so, wie sie sollen (schwarzer Text, roter Hintergrund).
T4-T9 sind aber rot Hinterlegt (nur der Text, nicht die gesammte Breite) und das soll nicht
Hier OnCustomDraw:
TRect ColBounds = TRect(ColLeft,ARect.Top,ColLeft+
ListView1->Columns->Items[theColPos]->Width,ARect.Bottom);
// Shade the column
// other event handlers overwrite this where there are list
// items but this code ensures shading extends to bottom of
// list view client rectangle
ListView1->Canvas->FillRect(ARect);
ListView1->Canvas->Brush->Color = SortColumnColor;
ListView1->Canvas->FillRect(ColBounds);
ListView1->Canvas->Brush->Color=ListView1->Color;
ListView_SetTextBkColor(ListView1->Handle, CLR_NONE);
DefaultDraw=true;