就是拖动一条数据上下移动

解决方案 »

  1.   

    可以,利用DragDrop事件来实现,以下是示例代码:
    unit UExploreInitTable;interfaceuses  SysUtils, Messages, Classes, Graphics, Controls,  Forms, Dialogs, ComCtrls;type  TForm1 = class(TForm)
        ListView1: TListView;    procedure ListView1StartDrag(Sender: TObject;
          var DragObject: TDragObject);
        procedure ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
          State: TDragState; var Accept: Boolean);
        procedure ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);  private  end;var  Form1: TForm1;implementation{$R *.DFM}var
      lstItem:TListItem;procedure TForm1.ListView1StartDrag(Sender: TObject;
      var DragObject: TDragObject);
    begin
      lstItem:=ListView1.Items[ListView1.ItemIndex]; //取得所拖动的ListItem
    end;procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
      Accept:=ListView1.GetItemAt(X,Y)<>nil; //经过位置位于某ListItem范围内时方可接受拖放
    end;procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
    var
      lstItem2:TListItem;
    begin
      lstItem2:=ListView1.GetItemAt(X,Y);  //取得放下位置的ListItem2
      {生下来就是交换lstItem和lstItem2的数据了,不用我教了吧?}
    end;end.