Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-11-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola danielmj.

¿ Cuál es el formato con que deseas concatenar los ListView orígen ? ¿ Podes poner un esquema de ejemplo ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #2  
Antiguo 17-11-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 14
danielmj Va por buen camino
Buenos dias, no entiendo muy bien tu pregunta ecfisa cuando te refieres al formato. En todo caso, si te refieres al aspecto de la lista, lo más parecido (para que te hagas una idea) sería la tabla de una base de datos, donde cada columna del listview serían los campos de dicha tabla, por ejemplo:

Código:
{campos del listview1}
- Ref
- Nombre
- Apellidos
- Dirección
- Localidad
- Provincia
- C.P
- Tlf

{campos del listview2}
- Hebilla
- Tipo
- Color
- Aparejo
- Brújula
- Anilla
- Mosquetón
- Precio unidad
- Cantidad
- Precio total

{Finalmente se unirían los dos listview (1 y 2) en un tercero listview3, tal que así...}
- Ref
- Nombre
- Apellidos
- Dirección
- Localidad
- Provincia
- C.P
- Tlf
- Hebilla
- Tipo
- Color
- Aparejo
- Brújula
- Anilla
- Mosquetón
- Precio unidad
- Cantidad
- Precio total
sería este listview3, el que se guardaría (con todos sus datos, items y subitems) en un archivo csv.

Espero haberme explicado mejor. Sino, pues dimelo e intentaré explirme de nuevo (estoy preparando un examen en casa y no puedo detenerme mucho en esto ahora mismo, por eso si no me supe explicar dimelo).
Gracias y saludos.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.

Última edición por danielmj fecha: 17-11-2014 a las 10:22:20.
Responder Con Cita
  #3  
Antiguo 17-11-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola danielmj.

Código Delphi [-]
procedure JoinListViews(LV1, LV2, LV3: TListView);
var
  c,r: Integer;
  li: TListItem;
begin
  for r:= 0 to 1 do
  begin
    LV3.Columns.Add;
    LV3.Column[r].Width:= 60;
  end;
  LV3.Column[0].Caption:= 'CONCEPTO';
  LV3.Column[1].Caption:= 'VALOR';

  for r:= 0 to LV1.Items.Count-1 do
  begin
    for c:= 0 to LV1.Columns.Count-2 do
    begin
      li:= LV3.Items.Add;
      li.Caption:= LV1.Column[c+1].Caption;
      li.SubItems.Add(LV1.Items[r].SubItems[c]);
    end;
  end;

  for r:= 0 to LV2.Items.Count-1 do
  begin
    for c:= 0 to LV2.Columns.Count-2 do
    begin
      li:= LV3.Items.Add;
      li.Caption:= LV2.Column[c+1].Caption;
      li.SubItems.Add(LV2.Items[r].SubItems[c]);
    end;
  end;
end;

Uso:
Código Delphi [-]
procedure TForm1.btnJoinClick(Sender: TObject);
begin
  JoinListViews(ListView1, ListView2, ListView3);
end;
En el ejemplo, los dos ListViews se concatenan uno debajo del otro en un tercero, de acuerdo al formato que mostraste en el mensaje anterior:


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 17-11-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 14
danielmj Va por buen camino
Hola ecfisa, gracias por tu ayuda. Por mi parte llevo ya un buen rato (algunas horas) dandole vueltas a esto y no hay forma, voy a poner el código que tenía yo o mejor dicho, con el que pretendía hacer lo que tu has hecho.

Esta empeñado en hacerlo asi, por que conseguía volcar el contenido de una lista en otra y me decía a mi mismo "¿ostia, por que puedo volcar una lista y la otra no?"

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i,j,k: integer;

begin
  for i:= 0 to lista1.Columns.Count -1 do
    begin
      lista3.Columns.Add;
      lista3.Columns.Add.Caption:= lista1.Columns.Items[i].Caption;
    end;

  for k:= 0 to lista2.Items.Count -1 do
    for j:= i to lista2.Columns.Count -1 do
      begin
        lista3.Columns.Add;
        lista3.Columns.Items[j].Caption:= lista2.Columns.Items[k].Caption;
      end;
end;

Y este su resultado...


Ese código es de un ejemplo nuevo que he iniciado solo para intentar lo de las listas, pero una vez conseguido usarlo con el proyecto de marras. Sé que mi codigo no llega a ningun sitio pero insisto, si podía volcar una lista por que no podía volcar la otra? en fin... Ahora me pongo y miro lo tuyo, luego comento.

Gracias otra vez y saludos.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #5  
Antiguo 17-11-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 14
danielmj Va por buen camino
Hola de nuevo,

he estado mirando tu codigo ecfisa, y siendo honesto, no termino de pillar el hilo, la verdad me cuesta entender como funcionan los listview, tendré que dedicarle mas tiempo. De todos modos, creo que no me explique bien en cuanto al formato con el que quiero que salga, te lo puse en forma de listado cuando en realidad sería algo así:

Código:
[REF|NOMBRE|APELLIDOS|...PRECIO UNIDAD|CANTIDAD|SUBTOTAL|TOTAL
123 |LUIS  |MARTINEZ |...  2,34€  |   1   |  2,35€ | 2,35€
He intentado hacerlo yo, pero como te digo mas arriba me cuesta pillar el funcionamiento de este control listview. Mañana si tengo un hueco miraré algunos libros a ver si me aclaro algo.
Por otra parte, estoy pensando en usar una base de datos, por que todo sería mas sencillo y lo manejo mejor, aunque eso me deja cierto regusto a derrota por no haberlo podido hacer con listview. Así que en este punto no sé muy bien si abandonar la idea de las listas y usar las bases de datos o seguir insistiendo.

En fin, un saludo y gracias.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #6  
Antiguo 18-11-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 14
danielmj Va por buen camino
Vuelta a la carga,

Sigo insistiendo con los listview y siguen sin salirme, he modificado un poco tu codigo para usarlo en un ejemplo nuevo ecfisa, ¿podriais indicarme sobre los comentarios en el código donde cometo el error?

Código Delphi [-]
procedure JoinListViews(LV1, LV2, LV3: TListView);
var
  i,j: Integer;
  li: TListItem;
begin
  for j:= 0 to 6 do
  begin
    LV3.Columns.Add;
    LV3.Column[j].Width:= 60;
  end;
  LV3.Column[1].Caption:= 'REF';
  LV3.Column[2].Caption:= 'NOMBRE';
  LV3.Column[3].Caption:= 'APELLIDOS';
  LV3.Column[4].Caption:= 'LOCALIDAD';
  LV3.Column[5].Caption:= 'PROVINCIA';
  LV3.Column[6].Caption:= 'TLF';



  for j:= 0 to LV1.Items.Count-1 do  //cuenta los elementos de la lista NO las columnas ¿correcto?
  begin
    for i:= 0 to LV1.Columns.Count-2 do  //cuenta las columnas ¿correcto?
    begin
      li:= LV3.Items.Add;
      li.SubItems.Add(LV1.Items.Item[j].Caption);  //ESTA LINEA ES LA REFERENCIA EN LA LISTA1
      li.SubItems.Add(lv1.Items.Item[i].SubItems.Strings[j]); // CON ESTA LINEA INTENTO AGREGAR EL CONTENIDO DE-
      //LA FILA 1, COLUMNA 2 DE LISTVIEW1 en la misma posicion pero del listview3 ¿POR QUE NO ESTÁ BIEN? ¿DONDE COMETO EL ERROR?
    end;
  end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  JoinListViews(ListView1, ListView2, ListView3);
end;

Ya no es tanto por el proyecto en si, sino por comprender como funciona este maldito control.
Un saludo.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #7  
Antiguo 18-11-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
danielmj,

Cita:
Empezado por danielmj
...la verdad me cuesta entender como funcionan los ListView...ya no es tanto por el proyecto en si, sino por comprender como funciona...


Revisa esta información:
Espero sea útil

Nelson.
Responder Con Cita
  #8  
Antiguo 19-11-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Daniel.
Cita:
Empezado por danielmj Ver Mensaje
...
Ya no es tanto por el proyecto en si, sino por comprender como funciona este maldito control.
Un saludo.
Perdón por demorar en responder , pero estos días ando medio complicado...

Código Delphi [-]
 for j:= 0 to LV1.Items.Count-1 do  //cuenta los elementos de la lista NO las columnas ¿correcto?
  begin
    for i:= 0 to LV1.Columns.Count-2 do  //cuenta las columnas ¿correcto?
Es correcto.

Cita:
... Así que en este punto no sé muy bien si abandonar la idea de las listas y usar las bases de datos o seguir insistiendo.
Si preguntas mi opinión, usaría base de datos sin dudarlo.

Cita:
aunque eso me deja cierto regusto a derrota por no haberlo podido hacer con listview.
Intentaremos que eso no suceda

Los problemas que encuentras pueden deberse a si consideras el item como un elemento más o no. Para el ejemplo almaceno los elementos en los subitems descartando los ítems:
Código:
[-]-+ 
    |
    + Valor 1
    |
    + Valor 2
    |
    + ...
    |
    + Valor N
Según entendí, no buscabas encolumnarlos uno debajo del otro sino aparejarlos, entonces podrías hacer:
(Espero que el código comentado te clarifique las acciones)
Código Delphi [-]
procedure JoinListViews(LV1,LV2,LV3: TListView);
var
  c,r: Integer;
  li: TListItem;
begin
  // Crear las columnas necesarias en LV3 para contener LV1 y LV2 
  for r:= 0 to LV1.Columns.Count + LV2.Columns.Count - 2 do
  begin
    LV3.Columns.Add;
    if r = 0 then
      LV3.Column[r].Width:= 0 // No utilizo la columna 0
    else
      LV3.Column[r].Width:= 100;
  end;
  // Copiar los títulos
  for r:= 0 to LV1.Columns.Count-1 do
    LV3.Column[r].Caption:= LV1.Column[r].Caption;
  for r:= 1 to LV2.Columns.Count-1 do
    LV3.Column[-1+LV1.Columns.Count+r].Caption:= LV2.Column[r].Caption;

  // Agregar los items
  for r:= 0 to LV1.Items.Count+LV2.Items.Count-4 do
  begin
    // Crear una fila
    li:= LV3.Items.Add;
    // Copiar los items de LV1 como subitems
    for c:= 0 to LV1.Columns.Count-2 do
      li.SubItems.Add(LV1.Items[r].SubItems[c]);
    // Copiar los items de LV2 como subitems
    for c:= 0 to LV2.Columns.Count-2 do
      li.SubItems.Add(LV2.Items[r].SubItems[c]);
  end;
end;

procedure TForm1.btnJoinClick(Sender: TObject);
begin
  JoinListViews(ListView1, ListView2, ListView3);
end;

Con este resultado, que creo, es el que buscas:



Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Volcar url de Delphi a Excel fjcg02 Servers 2 20-01-2014 10:01:54
Llenar un Combobox con un campo de una tabla MySql. Desde un qry volcar los datos. juanpy PHP 9 12-10-2012 04:46:06
listview chuli17 Lazarus, FreePascal, Kylix, etc. 1 21-02-2011 12:20:37
Listview... con ADO Victor Vega SQL 10 08-09-2007 05:43:35
Volcar un form a fichero epalacios Varios 1 03-06-2004 16:36:21


La franja horaria es GMT +2. Ahora son las 18:25:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi