Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

12K
07 июля 2005 года
cmd
1 / / 07.07.2005
Есть необходимость самому рисовать элементы 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;
}




Заранее благодарен за помощь

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог