{Move ListBox Items with the Mouse (Drag and Drop).
1,Drop a TListBox (named ListBox1) on a form
2,Add several strings using the Items property
3,Set ListBox1's DragMode to dmAutomatic (in Form's OnCreate or using Object Inspector at design-time).
4,Handle LisBox-es MouseDown, DragOver and DragDrop events
在同一个listbox中实现
}
var
Form1: TForm1;
StartingPoint : TPoint;//
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.DragMode := dmAutomatic;
end;
procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
DropPosition, StartPosition: Integer;
DropPoint: TPoint;
begin
DropPoint.X := X;
DropPoint.Y := Y;
with Source as TListBox do
begin
StartPosition := ItemAtPos(StartingPoint,True) ;
DropPosition := ItemAtPos(DropPoint,True) ;
Items.Move(StartPosition, DropPosition) ;
end;
end;
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := Source = ListBox1;
end;
procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
StartingPoint.X := X;
StartingPoint.Y := Y;
end;