Hola Daniel.
Cita:
Empezado por danielmj
...
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 begin
for i:= 0 to LV1.Columns.Count-2 do
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
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 else
LV3.Column[r].Width:= 100;
end;
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;
for r:= 0 to LV1.Items.Count+LV2.Items.Count-4 do
begin
li:= LV3.Items.Add;
for c:= 0 to LV1.Columns.Count-2 do
li.SubItems.Add(LV1.Items[r].SubItems[c]);
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
