Items of ListBox with drag and drop

Use Move method of the ListBox1.Items for the changing position of the item in a list. var Form1: TForm1; NumX, NumY: Integer; implementation

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  Num1, Num2: Integer;
  Point1, Point2: TPoint;
begin
  Point1.X:=NumX;
  Point1.Y:=NumY;
  Point2.X:=X;
  Point2.Y:=Y;
  with Source as TListBox do
  begin
    Num2:=ListBox1.ItemAtPos(Point1,True);
    Num1:=ListBox1.ItemAtPos(Point2,True);
    ListBox1.Items.Move(Num2, Num1);
  end;
end;

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if Source=ListBox1 then Accept:=True;
end;

procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  NumY:=Y;
  NumX:=X;
end;