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 23-06-2008
Avatar de Black_Ocean
Black_Ocean Black_Ocean is offline
Miembro
 
Registrado: nov 2006
Posts: 128
Poder: 18
Black_Ocean Va por buen camino
Exclamation Duda sobre algunos asuntos en ListView

Hola amigos de ClubDelphi,

Tengo un dilema referente a algunas acciones que quiero realizar en la ListView:

Lo que pasa es que necesito borrar todos los items de la ListView que tengan como texto "Listo", exceptuando el item que está mostrando información activa.

Como el procedimiento utiliza un for para esto, al borrar todos los items de la lista, excepto el item que aún no ha terminado de mostrar info activa, se borran todos, en eso estamos claros, pero el contador del for como no lo puedo actualizar porque aún está mostrando información genera un error de Index of bonus list.

Por ejemplo, los items estarían algo así y tendrían estos textos:

Listo
Listo
Procesando 1%
Listo
Listo

El item que aún dice "Procesando 1%" no será borrado hasta que termine ese proceso (es obvio no), pero el usuario necesita limpiar la lista de los items que dicen "Listo". Al borrar los últimos 2 items de la lista se hace correctamente, pero al borrar los primeros 2 items de la lista, el item que dice "Procesando 1%" perderá su index actual (ya que quedará en la posición 0 de la lista) entonces me arrojará un error porque el contador del for tendrá como valor 2. El problema es que no se como actualizar el contador del for en esta ocasión que está recorriendo la lista al borrar otros items que estan precediendo al item activo.

Espero que se entienda lo que plantee y cualquier ayuda es valorada.

Saludos y de antemano, gracias

Última edición por Black_Ocean fecha: 23-06-2008 a las 03:54:32.
Responder Con Cita
  #2  
Antiguo 23-06-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Black_Ocean, no borres de principio a fin, sino empieza desde el final hasta el principio para que no te de el error.

Tu for quedaría asi:

Código Delphi [-]
  for i:=ListView1.Items.Count-1 downto 0 do
   begin
     .......
     .......
   end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 23-06-2008
Avatar de Black_Ocean
Black_Ocean Black_Ocean is offline
Miembro
 
Registrado: nov 2006
Posts: 128
Poder: 18
Black_Ocean Va por buen camino
Hola [caro],

Gracias por contestarme.

Eso lo tengo en conocimiento, tal vez yo no me expresé bien.

Lo que necesito es que cuando los items con texto "Listo" se borren, como el item "Procesando %d" quedará en la posición 0, el otro contador del for que estoy utilizando para recorrer la lista que espera a que un proceso termine para avanzar al siguiente item, se actualice la palabra "Procesando %d" ahora en el item que quedó, o sino, intentará mostrar el texto en un item que no corresponde al actual o a uno inexistente, ya que como en el ejemplo anterior, de la posición 2 que estaba cambia a la posición 0.

EL item que dice "Procesando %d" estará calculando el porcentaje de conversión de un archivo, pero mientras dure este proceso, el usuario podrá limpiar la lista de los que hayan finalizado. Entonces como el item ya no estará en la posición de denante, el contador del for me dará un error porque estará con valor 2

Ejemplo:

Antes del borrado:
for i := 0 to ListView.items.count -1 do
ListView1.Items[i].caption := 'Procesando 1%':

Al Borrar necesito cambiar el indice de ese for a la posición donde quedó después del borrado para que me siga mostrando el porcentaje activo en el item que corresponde.



Ojalá ahora se entienda un poco mejor.

Gracias por tu ayuda colega.

Última edición por Black_Ocean fecha: 23-06-2008 a las 07:10:30.
Responder Con Cita
  #4  
Antiguo 23-06-2008
Northern Northern is offline
Miembro
 
Registrado: ene 2006
Posts: 211
Poder: 19
Northern Va por buen camino
No uses un for, usa un while o un repeat


Saludos
Responder Con Cita
  #5  
Antiguo 24-06-2008
Avatar de Black_Ocean
Black_Ocean Black_Ocean is offline
Miembro
 
Registrado: nov 2006
Posts: 128
Poder: 18
Black_Ocean Va por buen camino
Hola Northern,

Gracias por responderme.

Tienes razón, la única forma de actualizar el contador es usando una sentencia con While, ya que el For es progresivo e inmodificable cuando empieza el cliclo.

Trataré de resolver el dilema con While.

Muchas gracias =)
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
Duda con algunos componentes bosterito Varios 3 01-04-2007 01:23:11
Herencia visual con TFrames y otros asuntos walrus OOP 6 19-09-2004 02:38:12
Sobre ListView altp Varios 4 20-07-2004 12:20:30
Color sobre ColumnHeader en ListView DJ VMan Varios 2 18-11-2003 00:50:24
Una sobre ListView Novás Varios 1 17-10-2003 13:08:09


La franja horaria es GMT +2. Ahora son las 20:10:08.


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