Movendo itens de um ListView para uma lixeira
Adicione no formulário um ListView (Win32) e dois Images (Additonal). Adicione alguns itens no ListView e altere a propriedade DragMode para dmAutomatic. Para cada Image adicione uma figura, sendo uma para “lixeira vazia” e outra para “lixeira cheia”.
No Image com a lixeira cheia, altere a propriedade Visible para False. Precisamos codificar dois eventos do componente que irá “receber o arraste do mouse”, nesse caso o Image com a lixeira vazia. No evento OnDragOver do Image digite o seguinte código:
Accept := Source is TListView;
if Accept then
begin
Image1.Visible := False;
Image2.Visible := True;
end;
Estamos alterando o parâmetro Accept (do tipo Boolean), apenas se o componente (Source) que esta sendo arrastado, seja do tipo TListView. Se alterássemos para True o parâmetro, sem verificar o Source, qualquer componente poderia ser arrastado para o Image.
Caso o parâmetro seja verdadeiro, mostramos a lixeira cheia e escondemos a imagem da lixeira vazia. No evento OnDragDrop podemos perguntar se o usuário deseja excluir o item e então excluí-lo, através do seguinte código:
if MessageDlg('Tem certeza que deseja excluir?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
ListView1.DeleteSelected;
Rode a aplicação e arraste os itens para a lixeira.