读书人

listview能否实现拖动换行?解决办法

发布时间: 2012-02-08 19:52:21 作者: rapoo

listview能否实现拖动换行?
就是拖动一条数据上下移动

[解决办法]
可以,利用DragDrop事件来实现,以下是示例代码:
unit UExploreInitTable;

interface

uses

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.

读书人网 >.NET

热点推荐