procedure TForm1.FormShow(Sender: TObject);
var
  m: Integer;
begin
  SetLength(bButton,ListView1.Items.Count);
  for m := 0 to ListView1.Items.Count-1 do
  begin
    bButton[m] := TButton.Create(Self);
    bButton[m].ParentWindow := ListView1.Items[m].Handle;
    bButton[m].Top := ListView1.Items[m].Top + 20;
    bButton[m].Caption := IntToStr(m);
    bButton[m].Left := 202;
    bButton[m].Width := 50;
    bButton[m].Height := 10;
  end;
end;

解决方案 »

  1.   

    在TTListView.OnAdvancedCustomDraw中加入下面的代码
    procedure TForm1.ListView1AdvancedCustomDraw(Sender: TCustomListView;
      const ARect: TRect; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
    var
      m: Integer;
    begin
      for m := 0 to ListView1.Items.Count-1 do
        bButton[m].Top := ListView1.Items[m].Top;
      DefaultDraw :=True;
    end;
      

  2.   

    在TListView.OnAdvancedCustomDraw中加入下面的代码(上面写错了)
    var
      m: Integer;
    begin
      for m := 0 to ListView1.Items.Count-1 do
        bButton[m].Top := ListView1.Items[m].Top;
      DefaultDraw :=True;
    end;
      

  3.   

    我试过了,如果items很多的话,如1000个,则速度很慢,尤其是滚动时,看来此法欠妥,请问还有没有更好的方法,在线等待