Nesse post vamos implementar uma forma de mudar a ordem dos itens de um listbox apenas arrastando com o mouse.
Para começar adicione um listbox ao formulário, e altere a propriedade DragMode para dmAutomatic.
Agora vamos a implementação do código:
Crie uma variavel na seção var do formulario
var StartingPoint: TPoint
Agora vamos aos eventos do listbox:
1) Evento onDragDrop
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;
2) Evento onDragOver
Accept := Source = ListBox1;
3) Evento onMouseDown
StartingPoint.X := X; StartingPoint.Y := Y;
Agora faça os testes, e pronto implementamos drag and drop no nosso ListBox.
Willian Rodrigues