c++ builder listview 重绘

来源:互联网 发布:网络分娩直报平台 编辑:程序博客网 时间:2024/06/13 22:24

1 在构造函数中

ListView1->OwnerDraw = true;ListView1->StateImages= ImageList1;ListView1->OnDrawItem =(TLVDrawItemEvent)&CrnDrawListViewItem;

2 响应函数

void __fastcall TfmMipian:: CrnDrawListViewItem(TCustomListView *Sender,TListItem *Item, TRect &Rect, TOwnerDrawState State){TListView *lv = (TListView *)Sender;// RectTRect rct(Rect.Left + 1, Rect.Top, Rect.Width() - 1, Rect.Bottom);// Fill backgroundif(State.Contains(odFocused) || State.Contains(odSelected)){// With focuslv->Canvas->Brush->Color = MYCOLOR_BACK;lv->Canvas->FillRect(rct);lv->Canvas->Pen->Color = MYCOLOR_BORDER;lv->Canvas->Rectangle(rct);}else{lv->Canvas->Brush->Color = lv->Color;lv->Canvas->FillRect(Rect);}int nLeftOffset(0);   if(lv->Checkboxes){lv->Canvas->Pen->Color = clBlack;lv->Canvas->Pen->Width = 1;        // Draw CheckBox Rectlv->Canvas->Rectangle(Rect.Left + 1, Rect.Top + 10, Rect.Left + 15, Rect.Top + 24);nLeftOffset = 16;if(Item->Checked)        {// 画CheckBox的勾lv->Canvas->MoveTo(Rect.Left + 6, Rect.Top + 15);lv->Canvas->LineTo(Rect.Left + 8, Rect.Top + 18);lv->Canvas->LineTo(Rect.Left + 13, Rect.Top + 10);        }lv->Canvas->Pen->Width = 1;}// Draw small Iconif(lv->SmallImages && Item->ImageIndex != -1)    {        lv->SmallImages->Draw(lv->Canvas, nLeftOffset + Rect.Left + 2,Rect.Top + (Rect.Height() - lv->SmallImages->Height) / 2 + 1,            Item->ImageIndex, true);        nLeftOffset += lv->SmallImages->Width;/**/    }// Draw TextTBrowcards_oParam *param; //丛结构体中获取数据param = (TBrowcards_oParam*)Item->Data;lv->Canvas->Font->Color =MYCOLOR_NAME;lv->Canvas->TextOutA(Rect.Left + 4 + nLeftOffset,Rect.Top+10,param->m101);lv->Canvas->Font->Color = MYCOLOR_UNIT; lv->Canvas->TextOutA(Rect.Left + 4 + nLeftOffset,Rect.Top +  lv->Canvas->TextHeight("A")+10,param->m102);// Draw SubItem Textint nColOffset(0);for(int i=0; i<Item->SubItems->Count; i++){nColOffset += lv->Column[i]->Width;        lv->Canvas->TextOutA(nColOffset + Rect.Left + 4,Rect.Top + (Rect.Height() - lv->Canvas->TextHeight("A")) / 2,Item->SubItems->Strings[i]);}}


0 0
原创粉丝点击