Fórum Arrastar de um listView para outro #213235
11/02/2004
0
estou usando dois listView com vários ícones neles, a ídeia é arrastar um ícone do listview1 para cima de outro ícone do listview2, e com isso eu pegaria o caption primeiro ícone e o caption do segundo e montaria um insert, só que não consigo pela o caption do segundo ícone pois qdo arrasto para cima ele não é considerado com selecionado.
alguém saberia como posso fazer...
obrigado
Mrsilva.rodrigo
Curtir tópico
+ 0Posts
11/02/2004
Maxwell_monteiro
Gostei + 0
11/02/2004
Mrsilva.rodrigo
Gostei + 0
11/02/2004
Maxwell_monteiro
Gostei + 0
11/02/2004
Mrsilva.rodrigo
No Button1 e Button2 carrego os ícones usando duas tables;
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Table1.Active:= True;
form1.Table1.First;
while not table1.Eof do
begin
form1.ListView1.Items.Add.Caption:= IntToStr(form1.Table1[´cd_sw´])+´-´+form1.Table1[´ds_sw´];
form1.Table1.Next;
end;
form1.Table1.Active:= False;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Table2.Active:= True;
form1.Table2.First;
while not table2.Eof do
begin
form1.ListView2.Items.Add.Caption:= form1.Table2[´No_Maq´];
form1.Table2.Next;
end;
form1.Table2.Active:= False;
end;
procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Sender = listView1) and (Button = mbLeft) then
listview1.BeginDrag(False);
end;
procedure TForm1.ListView2DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if Source = listView1 then
ListView1.EndDrag(True);
end;
procedure TForm1.ListView2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if Source = listview1 then
Accept := True;
end;
procedure TForm1.ListView1EndDrag(Sender, Target: TObject; X, Y: Integer);
var
idx1, idx2: integer;
begin
if Target <> nil then
begin
idx1:= listview1.Selected.Index;
idx2:= listview2.Selected.Index;
showmessage(listview1.Selected.Caption);
showmessage(listview2.Selected.Caption);
// FrmDragDrop.Listbox1.Items.Add(LstAvi.Items.Strings[idx]);
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
table1.Active:= False;
Action:= caFree;
end;
Gostei + 0
13/02/2004
Maxwell_monteiro
Atribua esses procedimentos aos respectivos evendos dos dois list view!
procedure TForm1.ListViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
if Source is TListView then
Accept := True;
end;
procedure TForm1.ListViewEndDrag(Sender, Target: TObject; X, Y: Integer);
var Item: TListItem;
begin
if (Sender is TListView) and (Target is TListView) then
begin
Item := TListView(Target).GetItemAt(X, Y);
if Item <> nil then
Item.Caption := Item.Caption + ´ & ´ + TListView(Sender).Selected.Caption
else
begin
TListView(Target).AddItem(TListView(Sender).Selected.Caption, TListView(Sender).Selected);
TListView(Target).Items[TListView(Target).Items.Count - 1].ImageIndex := TListView(Sender).Selected.ImageIndex;
end;
TListView(Sender).Selected.Delete;
TListView(Target).Update;
TListView(Sender).Update;
end;
end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)