quinta-feira, 24 de maio de 2012

Drag and Drop com ListView


Primeiro inclua em seu formulário dois TListView e preencha a propriedades DragMode com o valor dmAutomatic nos dois. Para facilitar nossas vidas, vamos criar um método genérico para realizar o drag and drop, com o seguinte código
procedure realizarDragAndDrop(Sender: TObject; Source: TObject);
var
itemAdicionado : TListItem;
Item : string;
itAdd : TListItem;
begin
if Source <> Sender then
begin
with (Source as TListview) do
begin
Item := Items[ItemIndex].Caption;
Items.Delete(ItemIndex);
itAdd := items[ItemIndex];
end;
itemAdicionado := (Sender as TListView).Items.AddItem(itAdd, 1);
itemAdicionado.Caption := item;
end;
end;

Agora, vamos partir do ponto que nossos listView só aceitam drag and drop de componentes listView, para isso, no evento onDragOver de cada listView vamos colocar o seguinte código

Accept := (Source is TListView);

Para finalizar, vamos fazer a chamada do método que realiza o drag and drop efetivamente. No evento onDragDrop de cada listView, basta fazer a chamada do nosso método realizarDragAndDrop da seguinte maneira

realizarDragAndDrop(Sender, Source);

Vale ressaltar que os parâmetros Sender e Source são parâmetros de entrada do evento onDragDrop de um listView que definem a origem e o destino do item que está sendo manipulado com o drag and drop.

Nenhum comentário:

Postar um comentário