Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Borrar item de una lista (https://www.clubdelphi.com/foros/showthread.php?t=52194)

aenima 13-01-2008 11:09:30

Borrar item de una lista
 
Hola.

Estoy haciendo un programa que tiene tres listas, una de archivos, otra de directorios y la última una lista tipo TListBox y a los lados tres botones: uno que agrega archivos, otro directorios y otro que elimina los archivos y directorios que he añadido con esos botones. Los he añadido asi: Lista.Items.Add(ListaArchivos.FileName);

Bien, los controles de los botones de agregar los ten bien porque me agrega los ficheros y directorios perfectamente a la lista pero el problema viene cuando quiero eliminar un item de la lista TListBox. Debería de seleccionar un item y cuando haga click a eliminar que se elimine de la lista.
He probado a hacerlo de múltiples formas pero no me hace nada, no me lo elimina.
Ahora mismo lo tengo así pero tampoco me funciona:

n:integer;
begin
for n:=0 to Lista.Items.Count-1 do begin
ListaElegidos.Items.Delete(ListaElegidos.ItemIndex);

Alguna sugerencia? Muchas gracias :)

PD: Ya lo resolví utilizando Selected y un bucle WHILE en vez de FOR porque en el último elemento daba error :)

xEsk 13-01-2008 14:27:54

Hola, está bien que lo hayas solucionado, pero el código que pusiste no tiene mucho sentido:

Código Delphi [-]
n:integer;
begin
  for n:=0 to Lista.Items.Count-1 do begin
    ListaElegidos.Items.Delete(ListaElegidos.ItemIndex);

Aquí lo que estas haciendo es recorrer todos los ítems para nada, porqué después a la hora de borrar el ítem, utilizas el valor ItemIndex, que contiene el índice del ítem seleccionado.

Saludos.

Lepe 13-01-2008 15:54:10

Completando un poco más:

Si no tienes multiselect a true, bastaría con:
Código Delphi [-]
if listbox1.itemindex <> -1 then
  listbox1.Delete(listbox1.itemindex);

Si multiselect es true, siempre recorre los índices en orden descendente:
Código Delphi [-]
with Listbox1, Listbox1.Items do
for i:= Count -1 downto 0 do
  if Selected[i] then Delete(i);

De memoria es así puede que tenga algún error.

Saludos

aenima 14-01-2008 13:41:59

Efectivamente, el primer código que puse no tenía mucho sentido, pero es la primera vez que hago este tipo de cosas y estoy un poco perdida :o

Como lo tengo con Multiselect utilice un código parecido al último puesto, pero completándolo con más código para no añadir un item que ya esté en la lista.

Muchas gracias por las respuestas :)


La franja horaria es GMT +2. Ahora son las 07:30:18.

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