Ir al contenido


Foto

[RESUELTO] Pasar datos de un ListView a otro ListView


  • Por favor identifícate para responder
10 respuestas en este tema

#1 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 08 diciembre 2009 - 11:13

Hola

Estoy intentando pasar un registro de un ListView a otro ListView, he podido pasar los datos parcialmente a través de lo siguiente.



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.   ListView2.Items.AddItem(listView1.Items[ListView1.ItemIndex],-1);
  4. end;



El problema es que no pasa el primer dato, ¿ Alguien sabe porqué no pasa este dato?

Salud OS
  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 08 diciembre 2009 - 11:32

Hola
Interesante pero me queda la duda??.
Eso es un ListView???.
Me gustaría saber como le haces la apariencia de un DBGRid.??
Saludos
PD: Por otro lado si no funciona es por que seguro hay algo mal. :D :p
  • 0

#3 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 08 diciembre 2009 - 11:39

Hola
Me respondo:
ViewStyle= vsReport.
Saludos
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 08 diciembre 2009 - 11:41

Hola
Interesante pero me queda la duda??.
Eso es un ListView???.
Me gustaría saber como le haces la apariencia de un DBGRid.??
Saludos
PD: Por otro lado si no funciona es por que seguro hay algo mal. :D :p


Hola amigo

Pues eso es fácil, asignas la priopiedad ViewStyle del ListView como vsReport, y después lo que hice fué asignar los nombres de las columnas en la propiedad Columns del ListView.

Salud OS

PD, por cierto, seguro algo estoy haciendo mal, por eso es que no me pasa el primer campo :p
  • 0

#5 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 08 diciembre 2009 - 12:01

debes trabajar con la propiedad Subitems[x] ;) ;)
  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 08 diciembre 2009 - 12:20

debes trabajar con la propiedad Subitems[x] ;) ;)


Pero, los subitems son los que se pasaron correctamente, el ID es el nodo principal ahi esta el asunto. :(

Salud OS
  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 08 diciembre 2009 - 12:57

Si amigo, te reitero que uses la propiedad Subitems[x]:



delphi
  1. //Cargamos datos en el primer ListView
  2. procedure TForm1.FormCreate(Sender: TObject);
  3. begin
  4. With listview1.Items.Add do begin
  5.   Subitems.Add('Una cosa');
  6.   Subitems.Add('otra cosa');
  7. end;
  8. end;
  9.  
  10. //Pasamos los datos del primer LV al Segundo LV
  11. procedure TForm1.Button1Click(Sender: TObject);
  12. begin
  13. with ListView2.Items.Add do begin
  14.   SubItems.Add(ListView1.Items[ListView1.ItemIndex].SubItems[0]);
  15.   SubItems.Add(ListView1.Items[ListView1.ItemIndex].SubItems[1]);
  16. end;
  17. end;


  • 0

#8 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 08 diciembre 2009 - 03:03

Realmente el dato primero, el de la primera columna es el caption del Item:



delphi
  1. ListView1.Items[1].Caption:= 'Caption';



Prueba de esta manera  ;):


delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3. Temporal: TListItem;
  4. begin
  5.     Temporal:= ListView2.Items.Add;
  6.     Temporal.Assign(ListView1.Items[ListView1.ItemIndex]]);
  7. end;



Saludos.
  • 0

#9 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 08 diciembre 2009 - 04:47

Ah joder, amigo escafandra me funcionó de maravilla, ahora solo debo de validar que no haya repetidos.

Muchas gracias. (y)

Salud OS

PD, aún no comprendo bien lo del uso de ese temporal, pero lo analizaré :$
  • 0

#10 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 08 diciembre 2009 - 05:03

Bueno, pues no, no hay necesidad de validar los repetidos porque estoy pasando de un listview a otro y lo que hice fué borrar del ListView fuente el que se pasó al ListView destino.

Esto quedo de la siguiente forma



delphi
  1. {ListView1 a ListView2}
  2. procedure TForm1.Button1Click(Sender: TObject);
  3. var
  4.   Temporal: TListItem;
  5. begin
  6.   Temporal:= ListView2.Items.Add;
  7.   Temporal.Assign(ListView1.Items[ListView1.ItemIndex]);
  8.   ListView1.Items[ListView1.ItemIndex].Delete;
  9. end;
  10.  
  11. {ListView2 a ListView1}
  12. procedure TForm1.Button2Click(Sender: TObject);
  13. var
  14.   Temporal: TListItem;
  15. begin
  16.   Temporal:= ListView1.Items.Add;
  17.   Temporal.Assign(ListView2.Items[ListView2.ItemIndex]);
  18.   ListView2.Items[ListView2.ItemIndex].Delete;
  19. end;



Muchas gracias a todos :)

Salud OS
  • 0

#11 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 08 diciembre 2009 - 05:18

...Prueba de esta manera  ;):


delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3. Temporal: TListItem;
  4. begin
  5.     Temporal:= ListView2.Items.Add;
  6.     Temporal.Assign(ListView1.Items[ListView1.ItemIndex]]);
  7. end;


...aún no comprendo bien lo del uso de ese temporal, pero lo analizaré...


Bueno, era una forma de hacer mas comprensible el código para no hacer una línea demasiado larga. :p. Puede ponerse así, si lo prefieres:



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.     ListView2.Items.Add.Assign(ListView1.Items[ListView1.ItemIndex]);
  4. end;



De todas formas ese Temporal puede servir para manejar el item recien añadido por si precisas alguna cosa mas...


Saludos.
  • 0




IP.Board spam blocked by CleanTalk.