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;