sumando valores de un listview
Hola, buenos dias a todos
Estoy intentando sumar el contenido de una columna dada de un listview, pero me tira el siguiente error: Cita:
Luego de probar varias cosas, aquí en el foro encontre este hilo supongo que no es algo muy complicado, pero no sé por qué a mi me da error. ¿alguna sugerencia? Por cierto, la variable total está definida como "extended" Gracias y saludos. |
Hola danielmj.
Cita:
Saludos :) |
Hola ecfisa, es cierto, después de enviar el post me di cuenta y lo cambié pero ahora después de cambiarlo me encuentro con esto:
El código lo cambié a esto (y la variable total la cambie de extended a real):
Y si en cambio la variable la sigo definiendo como "extended", me tira este otro error: Si en ese dialogo pulso sobre "break" me marca la siguiente linea: Así que he pasado de un error por descuido a otro sobre el que no tengo ni idea ni control (siendo honesto) y obviamente no sé muy bien como solucionarlo. Un saludo y gracias por tu tiempo. |
Hola danielmj.
Revisa que exista el índice 9 (lista.Items[9].Caption). Saludos :) |
Hola de nuevo ecfisa,
Mira la captura del listview con su distribución de columnas sería esta: El codigo es este:
Me estaba liando con el indice, no contaba con la columna 0 que no se ve por eso de tener el width a 0. En lugar de poner 10, usaba el indice 9. A parte de eso, lo unico que he cambiado es que esta parte del codigo ahora se inicia en el oncreate del formulario. He hecho estos cambios y ya no tira ningun error, eso si, sigue sin sumarme nada. Ahora me pondre con eso para que sume todas las cantidades. Gracias y un saludo. |
|
Hola casimiro, gracias pero me temo que no funciona. Practicamente he copiado y pegado tu código y no suma nada, lo unico que hace es meter en "label35.caption" el precio del ultimo articulo introducido, pero no suma este con los anteriores.
La columna de al lado de "precio" está vacia por que aún ando liado con ella para agregar elementos desde otro formulario. Como puedes ver en la captura, hace eso, mostrar el ultimo precio introducido pero no los suma. Saludos |
No entiendo el contexto, ¿puedes explicarlo y también poner el código que usas, y qué valores tiene esa lista y cómo y dónde lo asignas?
|
Hola,
mira el siguiente es el codigo del evento oncreate:
**Lo que está como comentario, son pruebas que he ido haciendo sin mayor importancia ** Por otra parte, el código que le manda el valor precio a la lista (TlistView) es este:
A su vez, Label17 parte del formulario 1 y almacena la suma de los precios segun los articulos seleccionados por el cliente. Al hacer clic sobre el boton2 se envia el valor de label17 del formulario 1 directamente a la columna de precios de la lista. Así cada vez que se agregan nuevos articulos, al final, en el oncreate del rForm (ver más arriba), debería sumar esa columna de precios, pero como has visto solo muestra el valor del ultimo elemento introducido en la lista. Espero haberme explicado mejor ahora. Otra cosa, lo del label17 del formulario 1 que va directamente a la lista del formulario rForm... etc sé que no es lo mas elegante ni lo mas eficiente, pero no conozco otra forma de hacerlo, quiero decir, sin saltar de un form a otro. Un saludo. |
Sigo sin poder sumar nada, y probando cosas, he situado un boton en el formulario y en su evento clic, el siguiente codigo:
Mi pregunta es ¿tal como está esa linea debería mostrar en el label36, el valor 5 de la columna 3 del listview? por que no entiendo muy bien, y esa linea da error cuando pulso el boton. La idea es saber si almacena o no valores en la etiqueta y de este modo ver si se suman valores de la lista o no. Gracias y un saludo. |
Hola de nuevo,
he cambiado el codigo a esto:
He intentado basarme en este código:
Que peternece a este post http://www.clubdelphi.com/foros/showthread.php?t=82673, ahí se usa un messagebox para mostrar el valor y yo uso una etiqueta, creo que es la unica diferencia, aun asi, no me funciona. Ni puedosumar los valores de una columna ni me muestra en el label el contenido de una celda de la lista. Ya estoy desesperao, incluso he cerrado delphi varias veces cabreao y al rato vuelvo a insistir en vano. En fin, saludos. |
1 Archivos Adjunto(s)
Hola Daniel.
Cita:
Revisa el demo que te adjunto a ver si es lo que estás buscando. Saludos :) |
Pero, te estás liando tú solo. Divide y vencerás.
Antes pregunté y no has contestado: ¿dónde está el código que da los valores a la lista?, ¿qué valore son? |
Hola, Casimiro y ecfisa,
Al primero (casimiro), el código que envia los datos a la lista es este: Form1. button2.click.... //envia datos al tercer formulario (rForm), que contiene la lista.
Segundo formulario (pDatos)
Por ultimo el rForm que contiene la lista:
De este último trozo, label35 no muestra la suma de nada, tan solo el precio del ultimo articulo introducido en la lista. Y la linea que hace mencion a "total2",da error de "access violation" Ya he probado con todos los indices por si meto alguno que no exista, pero no hay forma. Espero no haberme liado explicando todo. Hola ecfisa, ahora me pongo con tu demo, a ver si consigo algo, estuve escribiendo este post antes de mirarlo, en cuanto sepa algo te digo. Gracias a los dos, con lo que vaya surgiendo os comento, y si empiezo a rallar la pesadez decirmelo eh. Un saludo. |
Hola ecfisa,
He mirado tu demo, la he puesto a andar y tira bien, va sin problemas. Ahora copio y pego tu codigo (el del boton) + la constante maxitem de la seccion implementation, lo acomodo a mi programa, le cambio los nombres de los controles para que no de error y esas cosas y lo que pasa es esto https://www.youtube.com/watch?v=IFnz...ature=youtu.be Si, he llegado a un punto, que ya no sé que hacer para que funcione el asunto, y he optado por hacer una captura de video y que veais los pasos que sigo hasta que salta la liebre (el error). Saludos y gracias. Tu código modificado: ... implementation
|
Hola Daniel.
Es que el índice debería ser O dicho de otro modo: Count - 1 - columna 0 (que no usas) , es decir que no sería 9 sino 8. Saludos :) |
Hola ecfisa, he probado a poner ".columns.count -2" pero entonces pasa esto:
Asi que, sigo igual, sin poder sumar nada. Un saludo y gracias por tu tiempo. |
Hola Daniel.
Acabo de mirar el video, fijate que la constante MAXITEM es un valor arbitrario que usé solo para el ejemplo. En el video que mostras intenta recorrer diez items cuando sólo hay dos ingresados, deberías usar:
Saludos :) |
No veo dónde está la complicación..., si en lugar de sumar EL CONTENIDO del TListView en ése momento, sumaras LOS DATOS QUE COMPONEN el TListView mientras lo llenas antes de mostrarlo...
Cuestión de pensar lateralmente para resolver un problema... |
Hola ecfisa
muchas gracias!!!! por que no está aquí el icono ese de la cabeza dandose golpes con el pc, sino lo pondría. Por fin ha funcionado, solo he tenido que poner "-3" en el .columns.count para hacer referencia a la columna que guarda las cantidades. Debo reconocer, que estaba enfrascado en el "lista.items.count" y no le hacia caso al "columns.count" ese tambien ha sido un error por mi parte. Ahora tengo una pelea nueva con el boton "volver atras" que cuando me lleva de regreso al formulario anterior, limpia la lista y cuando regreso, solo tengo el ultimo elemento añadido, pero bueno eso no me preocupa, en comparacion es un mal menor, que espero resolver pronto. Muchas gracias otra vez, tanto a ti como a casimiro y a todos los que han prestado su ayuda. Un saludo. |
La franja horaria es GMT +2. Ahora son las 20:02:38. |
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