Перемещение строки в ListBox
- Поместим на форму компонент TListBox. Добавим несколько элементов в список. После чего установим свойство DragMode компонента TListBox в dmAutomatic.
- Объявим переменную StartingPoint:
1 2 3 4 |
var // form level StartingPoint : TPoint; implementation ... |
- В обработчике событий OnDragDrop компонента TListBox запишем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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; |
- В обработчике событий OnDragOver:
1 2 3 4 5 |
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := Source = ListBox1; end; |
- В обработчике событий OnMouseDown:
1 2 3 4 5 6 |
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin StartingPoint.X := X; StartingPoint.Y := Y; end; |