为什么我不能把选择行的caption部分上移,只能上移到subitem里的内容。代码如下:
  i:=listviewtemplet.Selected.Index;
  if i>0 then
  begin
  s1:=listviewtemplet.Items.Item[i].Caption;
  s2:=listviewtemplet.Items.Item[i].SubItems[0];
  s3:=listviewtemplet.Items.Item[i].SubItems[1];  listviewtemplet.Items.Item[i].Caption:=listviewtemplet.Items.Item[i-1].Caption;
  listviewtemplet.Items.Item[i].SubItems[0]:=listviewtemplet.Items.Item[i-1].SubItems[0];
  listviewtemplet.Items.Item[i].SubItems[1]:=listviewtemplet.Items.Item[i-1].SubItems[1];  listviewtemplet.Items.Item[i-1].Caption:=s1;
  listviewtemplet.Items.Item[i-1].SubItems[0]:=s2;
  listviewtemplet.Items.Item[i-1].SubItems[1]:=s3;
  end;  请各位高手指点,谢谢!

解决方案 »

  1.   

    var DestItem,SelItem:TListItem;
    begin
      SelItem:=ListView1.Selected;
      if SelItem.Index>0 then
         begin
          DestItem:=ListView1.Items.Insert(SelItem.Index-1);
          DestItem.Assign(SelItem);
          ListView1.Selected:=DestItem;
          SelItem.Free;
         end;
    end;
      

  2.   

    不行的,各行的顺序不变。
        奇怪。  
        DestItem:=ListView1.Items.Insert(SelItem.Index-1); 
        把这句改成   
        DestItem:=ListView1.Items.Insert(0); 
        效果同上一样。
      

  3.   

    我试过可以啊~
    试一下加两句
      if SelItem.Index>0 then
          begin
            ListView1.Items.BeginUpdate;
            ....
            ListView1.Items.EndUpdate;
          end;
      

  4.   

    嗯,要加
    ListView1.Items.BeginUpdate;
    ....
    ListView1.Items.EndUpdate;
        这两句才行。谢谢!