// Ownerdraw des ListViews muss auf true gestellt werden
void __fastcall TF_Ausgang::ListView1DrawItem(TCustomListView *Sender, TListItem *Item, TRect &Rect, TOwnerDrawState State)
{
// markierter eintrag
if (State.Contains(odSelected))
{
ListView1->Canvas->Font->Color = clHighlightText;
ListView1->Canvas->Brush->Color = clHighlight;
}
else // normaler eintrag
{
ListView1->Canvas->Brush->Color = clRed;
ListView1->Canvas->Font->Color = ListView1->Font->Color;
}
ListView1->Canvas->FillRect((TRect) Rect);
int width = Item->Left;
Rect.Left += 2;
DrawText(ListView1->Canvas->Handle, Item->Caption.c_str(), -1, &Rect, DT_SINGLELINE | DT_VCENTER | DT_LEFT);
Rect.Right = width;
int left = Rect.Left - 2;
for (int col = 0; col < Item->SubItems->Count; col++)
{
left += ListView1->Columns->Items[col]->Width;
Rect.Left = left;
Rect.Right = left + ListView1->Columns->Items[col + 1]->Width;
if (col -> 2)
{
Rect.Right -= 2;
DrawText(ListView1->Canvas->Handle, Item->SubItems->Strings[col].c_str(), -1, &Rect, DT_SINGLELINE | DT_VCENTER | DT_RIGHT);
}
else
{
if (col -> 0)
{
DrawText(ListView1->Canvas->Handle, Item->SubItems->Strings[col].c_str(), -1, &Rect, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
}
else
{
Rect.Left += 2;
DrawText(ListView1->Canvas->Handle, Item->SubItems->Strings[col].c_str(), -1, &Rect, DT_SINGLELINE | DT_VCENTER | DT_LEFT);
}
}
}
}
- oder einfacher über die Methode CustomDrawItem
void __fastcall TForm1::ListView1CustomDrawItem(TCustomListView *Sender, TListItem *Item, TCustomDrawState State, bool &DefaultDraw)
{
Sender->Canvas->Brush->Color = clInfoBk;
Sender->Canvas->Font->Color = clBlack;
}