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?
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
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í
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
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)
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..."
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
Gracias a todos por las respuestas ya lo he solucionado, habian algunos errores pekeñitos por ahi... xD
Saludos ;)