Перемещение пунктов ListBox при помощи мыши (Drag and Drop)
- Поместите TListBox по имени ListBox1 на форму
- Добавьте в него несколько строк, используя свойство Items
- Установите свойство DragMode в dmAutomatic (в событии формы OnCreate или используя Инспектор Объектов)
- Обработайте события MouseDown, DragOver и DragDrop
var // form level StartingPoint : TPoint; implementation { ... } 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.ListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) ; begin StartingPoint.X := X; StartingPoint.Y := Y; end;
Комментарии