The tlistbox Delphi Component displays a collection of items in a scrollable list. Delphi makes it easy to program dragging and dropping into your applications.
Here's how to allow a user to rearrange (change item's position) The items of a ListBox using drag and drop:
- Drop a tlistbox (namedListbox1) On a form
- Add several strings using the items Property
- Set listbox1's dragmode to dmautomatic (in Form's oncreate or using object inspector at design-time ).
- Handle lisbox-es mousedown, dragover and dragdrop events
VaR // Form level
Startingpoint: tpoint;
Implementation
...
ProcedureTform1.formcreate (Sender: tobject );
Begin
Listbox1.dragmode: = dmautomatic;
End;
ProcedureTform1.listbox1dragdrop (sender, source: tobject; X, Y: integer );
VaR
Dropposition, startposition: integer;
Droppoint: tpoint;
Begin
Droppoint. X: = X;
Droppoint. Y: = y;
WithSourceAsTlistboxDo
Begin
Startposition: = itematpos (startingpoint, true );
Dropposition: = itematpos (droppoint, true );
Items. Move (startposition, dropposition );
End;
End;
ProcedureTform1.listbox1dragover (sender, source: tobject; X, Y: integer; State: tdragstate;VaRAccept: Boolean );
Begin
Accept: = source = listbox1;
End;
ProcedureTform1.listbox1mousedown (Sender: tobject; button: tmousebutton; shift: tshiftstate; X, Y: integer );
Begin
Startingpoint. X: = X;
Startingpoint. Y: = y;
End;
How to move ListBox items with the mouse