перерисовка LIstView
Всё вроде выводится, но при растягивании колонок не происходит перерисовка элементов предыдущей колонки!
Не могу найти трабл...
Как заставить ListView перерисовываться при изменении ширины колонок?
Цитата:
void __fastcall TfrmMain::ListView1DrawItem(TCustomListView *Sender,
TListItem *Item, TRect &Rect, TOwnerDrawState State)
{
if(State.Contains(gdSelected))
ListView1->Canvas->Brush->Color = RGB(255,190,190);
else
ListView1->Canvas->Brush->Color = RGB(255,235,235);
ListView1->Canvas->FillRect(Rect);
ListView1->Canvas->Pen->Style = psClear;
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
pBitmap->Transparent = true;
pBitmap->TransparentColor = clWhite;
ImageList1->GetBitmap(Item->ImageIndex ,pBitmap);
ListView1->Canvas->Draw(3, Rect.top, pBitmap);
TRect rect = Rect;
rect.left = Rect.left + pBitmap->Width + 4;
rect.right = ListView1->Columns->Items[0]->Width - Rect.left;
ListView1->Canvas->TextRect(rect, pBitmap->Width + 4, Rect.top, Item->Caption);
if(Item->SubItems->Count == 0) return;
if(Item->SubItems->Strings[0] != "")
{
rect.left = ListView1->Columns->Items[0]->Width;
rect.right = ListView1->Columns->Items[0]->Width + ListView1->Columns->Items[1]->Width;
ListView1->Canvas->TextRect(rect, ListView1->Columns->Items[0]->Width + 4, Rect.top, Item->SubItems->Strings[0]);
}
if(Item->SubItems->Strings[1] != "")
{
pBitmap->LoadFromResourceName((int) HInstance, "BITMAP_0");
left = ListView1->Columns->Items[0]->Width + ListView1->Columns->Items[1]->Width + 3;
for(int i = 0; i < atoi(Item->SubItems->Strings[1].c_str()); i++)
ListView1->Canvas->Draw(left + (pBitmap->Width * i), Rect.top, pBitmap);
}
if(Item->SubItems->Strings[2] != "")
{
rect.left = ListView1->Columns->Items[0]->Width + ListView1->Columns->Items[1]->Width + ListView1->Columns->Items[2]-
>Width;
rect.right = ListView1->Columns->Items[0]->Width + ListView1->Columns->Items[1]->Width + ListView1->Columns->Items[2]-
>Width + ListView1->Columns->Items[3]->Width;
ListView1->Canvas->TextRect(rect, ListView1->Columns->Items[0]->Width + ListView1->Columns->Items[1]->Width + ListView1-
>Columns->Items[2]->Width + 4, Rect.top, Item->SubItems->Strings[2]);
}
delete pBitmap;
}
Заранее благодарен за помощь