如何在listview中加入progressbar?并且限制在具体的某一行和某一列中,无论托动水平或者垂直滚动条位置都会改变?(ps:不是计算位置然后画一个滚动条)

解决方案 »

  1.   

    感谢回复,如果给每个条目画一个progressbar,在托动listview的时候怎样从新重画每个progressbar的位置?我现在能够截获到移动滚动条的消息,但是如何计算progressbar的位置?谢谢!
      

  2.   

    这些信息应该在ListView的OnDrawItem事件中都有。你自己根本不用处理Scroll的信息只要专心画图就行了。
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);varr: TRect;pb: TProgressBar;beginListview1.Columns.Add.Width := 100;Listview1.Columns.Add.Width := 200;Listview1.ViewStyle := vsReport;Listview1.Items.Add.Caption := 'Text';r := Listview1.Items[0].DisplayRect(drBounds);r.Left := r.Left + Listview1.columns[0].Width;r.Right := r.Left + Listview1.columns[1].Width;pb := TProgressBar.Create(Self);pb.Parent := Listview1;pb.BoundsRect := r;pb.Position := 30;Listview1.Items[0].Data := pb;end; // Change the ProgressBar Position// ProgressBar Position ?ndernprocedure TForm1.Button2Click(Sender: TObject);varpb: TProgressBar;beginpb := TProgressBar(Listview1.Items[0].Data);pb.StepIt;end;
     
      

  4.   

    不需要专门响应,当这些事件发生的时候,OnDrawItem事件都会被调用。所需要的尺寸会在事件的参数中提供的。
      

  5.   

    利用其data属性指向其中的控件,然后计算出坐标,定义progressbar的的坐标和parent属性,很多控件都可以这样做