procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
Idx: Integer;
Pos: TPoint;
begin
Accept := False;
if Sender is TListBox then
with Sender as TListBox do
begin
Pos.X := X;
Pos.y := Y;
Idx := ItemAtPos(Pos, True);
if (Idx > -1) and (idx <> ItemIndex) then
Accept := True;
end;
end;
procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
Idx: Integer;
Pos: TPoint;
begin
if Sender is TListBox then
begin
with Sender as TListBox do
begin
Pos.X := X;
Pos.y := Y;
Idx := ItemAtPos(Pos, True);
Items.Move(ItemIndex, Idx);
ItemIndex := Idx;
end;
end;
end;