GARANTIR DESCONTO

Fórum Arrastar de um listView para outro #213235

11/02/2004

0

Pessoal,

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

Mrsilva.rodrigo

Responder

Posts

11/02/2004

Maxwell_monteiro

Como vc fez para arrastar o items do list view já que os mesmo nao possuem o envento onEndDrag?


Responder

Gostei + 0

11/02/2004

Mrsilva.rodrigo

eu arrasto levando o listview1.select.caption, para o listview2, até aí tudo certo, só que qdo levo para cima de um ícone do listview2, ele fica com o ícone selecionado mas não o considera como selecionado.


Responder

Gostei + 0

11/02/2004

Maxwell_monteiro

Não! eu estou perguntando como vc fez para arrastar os icones? pois eu olhei aqui e o ListItem nao tem eventos onEndDrag e o list view nao reponde ao evento ondragover quando teto arrastar o icone!


Responder

Gostei + 0

11/02/2004

Mrsilva.rodrigo

segue um exemplo.

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;


Responder

Gostei + 0

13/02/2004

Maxwell_monteiro

Ai esta sua resposta!
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;


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar