怎样在ListView中嵌入进度条
class TForm1 : public TForm{
TProgressBar *ProgressBar1;
TListView *lv;
void __fastcall Button1Click(TObject *Sender);
void __fastcall MyProgressClick(TObject *Sender);
void __fastcall lvCustomDrawSubItem(TCustomListView *Sender,
TListItem *Item, int SubItem, TCustomDrawState State,
bool &DefaultDraw);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
pitem=lv->Items->Add();
pitem->Caption="TestAddItem";
pbar=new TsuiProgressBar(lv);
pbar->Parent=lv;
pitem->Data=pbar;
pbar->Top=pitem->Top+1;
pbar->Left=pitem->Left+lv->Column[0]->Width-2;
pbar->Width=lv->Column[1]->Width;
pbar->OnClick=MyProgressClick;
}
void __fastcall TForm1::MyProgressClick(TObject *Sender)
{
TProgressBar * pbar=NULL;
TListItem *pitem;
pbar=(TsuiProgressBar *)Sender;
pitem=lv->GetItemAt(pbar->Left,pbar->Top);
lv->Selected=pitem;
lv->SetFocus();
}
void __fastcall TForm1::lvCustomDrawSubItem(TCustomListView *Sender,
TListItem *Item, int SubItem, TCustomDrawState State,
bool &DefaultDraw)
{
if(SubItem==1){
pbar=(TProgressBar * )Item->Data;
pbar->Top=Item->Top+1;
pbar->Left=Item->Left+lv->Column[0]->Width-2;
pbar->Width=lv->Column[1]->Width;
this->Caption="Column1:width->"+IntToStr(lv->Column[1]->Width);
DefaultDraw=false;
}
}
我的这个方法可以嵌入进度条,但是当你拖动列头的边界来改变列的宽度时,进度条的宽度不能随着列宽同步变化,总会慢点