Move ListBox Items with the Mouse (Drag and Drop

{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;




你可能感兴趣的:(listbox)