Duplicar un item en un listview

Iniciado por Snort, 23 Diciembre 2006, 13:46 PM

0 Miembros y 1 Visitante están viendo este tema.

Snort

  Vereis, eske stoi haciendo un juegecillo, y le estoi poniendo una tabla de maximas puntuaciones, la tabla (listview) tiene 43columnas, por orden son  nombre, tiempo1, tiempo 2, y se guia por la 1º, nombre. El codigo es este:
MsgBox "Has conseguido un nuevo récord.", vbInformation, "Enhorabuena!!!"
Dim X As ListItem
Set X = Form2.ListView1.ListItems.Add(, , "Pedro")
' Estas dos lineas solo son para añadir datos a la variable tempo, no tienen nada qe ver
If min >= 1 Then Tempo = min & " min, "
If sec >= 1 Or dec >= 1 Then Tempo = Tempo & sec & "," & dec & " seg."
'
X.SubItems(1) = Tempo
X.SubItems(2) = TimSeg
End If

Bueno, pues cuando consigues una maxima puntuacion te la pone bien, pero a la segunda qe consigues te añade los datos de la columna de tiempo1 y tiempo 2, y el nombre (Pedro) qeda intacto.
Alguien sabe como duplicar el item para qe vaya creando mas items iguales y no sobreescriba los existentes?

Hans el Topo

#1
nose si te entendi,


MsgBox "Has conseguido un nuevo récord.", vbInformation, "Enhorabuena!!!"
Dim X As new form2.Listview1.lisitems

' Estas dos lineas solo son para añadir datos a la variable tempo, no tienen nada que ver
If min >= 1 Then Tempo = min & " min, "
If sec >= 1 Or dec >= 1 Then Tempo = Tempo & sec & "," & dec & " seg."
'
X.SubItems(0) = "Pepe"
X.SubItems(1) = Tempo
X.SubItems(2) = TimSeg

form.listview1.listitems.add X
End If

 

CeLaYa

podrías explicarlo de otra manera no entiendo muy bien, con ese código debería estar agregandote un item cadavez que lo ejecutes, checa si no tienes un ListView.ListItems.Clear o algo así
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

Hans el Topo

aligual lo que hace es machacar todo el rato el mismo objeto y por eso no se lo agrega
 

~~

Pueva a simplemente a agregar un objeto y luego lo ordena por el tiempo (el de menor tiempo arriba) y ya esta  ;) Mira a ver y nos cuentas

1S4ludo

Snort

Cita de: Hans el Topo en 23 Diciembre 2006, 14:24 PM
aligual lo que hace es machacar todo el rato el mismo objeto y por eso no se lo agrega
Efectivamente, eso es lo qe hace, no me he explicao muy bien

Cita de: E0N en 23 Diciembre 2006, 14:26 PM
Pueva a simplemente a agregar un objeto y luego lo ordena por el tiempo (el de menor tiempo arriba) y ya esta  ;) Mira a ver y nos cuentas

1S4ludo
lo tengo en sorted = true y sortkey = 2, es decir, siempre me los ordena por tiempo 2 mayor, pero al machacarlo encima, el nombre se duplica, y el tiempo 1 y tiempo2 se suman a los anteriores (suma de frase, [frase+frase] no suma numerica)

Hans el Topo

ahora no me acuerdo como se hacia para agregar objetos y que no se destruyesen ni osbreescribiesen y mira que lo tuve que hacer con panels xD

lo que se me ocurre ahora es que crees un array de objetos

'esto por el general
dim x(42) as new form2.listview1.lisitems
dim indice as integer


'esto en tu procedimiento
on error goto actimel
MsgBox "Has conseguido un nuevo récord.", vbInformation, "Enhorabuena!!!"

' Estas dos lineas solo son para añadir datos a la variable tempo, no tienen nada que ver
If min >= 1 Then Tempo = min & " min, "
If sec >= 1 Or dec >= 1 Then Tempo = Tempo & sec & "," & dec & " seg."
'
X(indice).SubItems(0) = "Pepe"
X(indice).SubItems(1) = Tempo
X(indice).SubItems(2) = TimSeg

form.listview1.listitems.add X(indice)

indice=indice+1


End If
exit sub
actimel:
   msgbox "Existen 43 objetos puntuaciones en la clasificacion..."
 

CeLaYa

aver vamos a ver si entendí. Lo que quieres hacer es que cuando agregas un Item te muestre:

Nombre   Tiempo1            Tiempo2
Pedro           1                     1

y si vas agregando más items ponga:

Nombre   Tiempo1            Tiempo2
Pedro           1                     1
Pedro           2                     2

bueno si el problema es el objeto "x" pues quitalo, y pones tú código así:


Listview1.ListItems.add ,,"Pedro"
Listview1.ListItems.subitems(1) = tiempo1
Listview1.ListItems.subitems(2) = tiempo2


"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

Snort

   Gracias a todos por las respuestas ya lo he solucionado, habian algunos errores pekeñitos por ahi... xD

Saludos ;)