const
  nTitleNum = 3;
  STitles: array [0..nTitleNum] of string = ('Caption', 'SubItem1', 'SubItem2', 'SubItem3');{Delete Selected Item}
procedure TForm1.Button2Click(Sender: TObject);
var
  I: Integer;
begin
  I := ListView1.Items.IndexOf(ListView1.Selected);
  if I <> -1 then ListView1.Items.Delete(I);
end;
{Add Item}
procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  with ListView1.Items.Add do
  begin
    Caption := 'Caption';
    for I := 1 to nTitleNum do
      SubItems.Add(STitles[I]);
  end;
end;{Add Columns}
procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  ListView1.ViewStyle := vsReport;
  ListView1.RowSelect := True;
  ListView1.Columns.Clear;
  for I := 0 to nTitleNum do
    with ListView1.Columns.Add do
    begin
      Alignment := taCenter;
      Caption := STitles[I];
      AutoSize := True;
    end;
end;

解决方案 »

  1.   

    哦!我是指将按纽加入各个Item中!
      

  2.   

    动态的建立一个按钮,设为非可见,在需要的时候显示出来。利用其top和left属性,参考由listview中的hittest获得的位置信息可在适当的位置加以显示
      

  3.   

    procedure Button1OnClick(Sender: TOBject);
    var
      Button: TButton;
      Item: TListItem;
    begin
      Button := TButton.Create(Self);
      with Button do
      begin
        //button all property (Rect, parent); 
      end;
      Item := listview1.Items.Add;
      Item.Caption := Button.Caption;
      Item.SubItem.Add('Other Info....');
      Item.Data := Pointer(Button);  //增加的Item.Data指向当前的生成Button
    end;
    //使用时用 TButton(ListView1.Selected.Data)即可。
    //删除简单了。 先将TButton(ListView1.Selected.Data).Free;然后删除这个Item即可。
      

  4.   

    谢谢copy_paste(木石三),可以完成!分数奉上!