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.