quarta-feira, 7 de outubro de 2009

Um método bem simples de implementar uma ordenação de um listbox através

{Um método bem simples de implementar uma ordenação de um ListBox através de Drag-Drop, utilizando apenas os eventos oferecidos pelo próprio componente TListBox


Primeiro, certifique-se que a propriedade DragMode seja dmAutomatic.

No evento OnDragOver só devemos aceitar um item arrastado do próprio ListBox, ou seja, se o parâmetro Sender for igual ao Source. }

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := (Sender = Source);
end;

{Já no evento OnDragDrop, utilizamos o método ItemAtPos para descobrir qual item está sob o cursor do mouse, e alteramos a ordem com o método Move. }

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
i: Integer;
begin
with TListBox(Sender) do
begin
if ItemIndex > -1 then
begin
i := ItemAtPos(Point(x,y),True);
Items.Move(ItemIndex, i);
ItemIndex := i;
end;
end;
end;

{By
Nativo_Gyn
ufgnet@pop.com.br}

Nenhum comentário:

Postar um comentário