Listview перерисовка

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем cmd, 7 июл 2005.

Статус темы:
Закрыта.
  1. cmd

    cmd Гость

    Доброе время суток!

    Есть необходимость самому рисовать элементы ListView
    Всё вроде выводится, но при растягивании колонок не происходит перерисовка?
    Не могу найти трабл...
    Как заставить ListView перерисовываться при изменении ширины колонок?

    Код (Text):
    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;
    }
    Заранее благодарен за помощь
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей