Arrastar Dados para ListBox ou ListView
Você já precisou arrastar elementos de um controle usando o mouse e movê-los para outro controle ? O exemplo clássico é mover elementos de um controle Listbox - Listbox1-para outro - Listbox2 - usando os eventos OLEDragDrop e OLeStartDrop
O evento OLEDragDrop ocorre quando um arrastamos um componente entre dois controles somente quando a propriedade OLEDropMode.
Bom vamos começar, precisaremos de:
3 - TListView
>> Vamos colocar os três TListView lado a lado;
>> Marque as propriedades;
DragMade = dmAutomatic
No evento ListView1DragDrop
procedure TFMultiSelect.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if Source is TListView then
TListView(Sender).EndDrag(True);
end;
ListView1DragOver
procedure TFMultiSelect.ListView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := Source is TListView;
end;
ListView1EndDrag
procedure TFMultiSelect.ListView1EndDrag(Sender, Target: TObject; X, Y: Integer);
var
Item: TListItem;
i: Integer;
begin
if (Sender is TListView) and (Target is TListView) then begin
Item := TListView(Target).GetItemAt(X, Y);
for i := 0 to TListView(Sender).Items.Count - 1 do begin
if TListView(Sender).Items[i].Selected then
TListView(Target).AddItem(TListView(Sender).Items[i].Caption, TListView(Sender).Selected);
end;
for i := TListView(Sender).Items.Count - 1 downto 0 do
if TListView(Sender).Items[i].Selected then begin
TListView(Sender).Selected.Delete;
TListView(Target).Update;
TListView(Sender).Update;
end;
end;
end;
0 comentários:
Postar um comentário