Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-04-2011
annieruci annieruci is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 32
Poder: 0
annieruci Va por buen camino
Borrar varios elementos de un TreeView

Hola a todos tengo el siguiente problema:
Tengo dos treeview y 2 botones, lo que me hace falta hacer es seleccionar un hijo del treview1 y que cuando doy al boton se pasen para el treview2, para 1 solo elementos todo muy feliz, pero si me seleccionan mas de uno por ejemplo 2 elementos me da que se va de rango.
Código Delphi [-]
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  cant: Integer;
  i: Integer;
begin
Seleccionados := TStringList.Create;
cant := TreeView1.SelectionCount;
for i := 0 to TreeView1.Items.Count-1 do
   begin
    if TreeView1.Items[i].Selected then
     begin
      TreeView2.Items.AddChild( nil, TreeView1.Items[i].Text);
      TreeView1.Items[i].Destroy;
      Dec(cant);
     end;
     if cant = 0 then
       Break;
    end;
end;
Aqui esta todo el codigo el error ocurre a partir de que borro los elementos del treeview1, si no lo borro me los copia bien y todo pero si no me da error de rango o me borra el que no es.

Saludos

Última edición por ecfisa fecha: 25-04-2011 a las 18:27:17. Razón: Etiquetas [DELPHI] y [/DELPHI]
Responder Con Cita
  #2  
Antiguo 25-04-2011
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 annieruci, prueba de esta forma:

Código Delphi [-]
    for i:= TreeView1.SelectionCount-1 downto 0 do
     begin
      TreeView2.Items.AddChild( nil, TreeView1.Items[i].Text);
      TreeView1.Selections[i].Delete;
     end;

No necesitas recorrer todo el treview para encontrar los seleccionados.

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 25-04-2011
annieruci annieruci is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 32
Poder: 0
annieruci Va por buen camino
nada

ya habia probado esa solucion pero no me resulta, hay algun problema en el oreden en que selecciono los elementos, si los selecciono de arriba hacia abajo y el for esta invertido me da error, si selecciono dos consecutivos me da error, hay pasa algo extraño que me gustaria saber que es.
Responder Con Cita
  #4  
Antiguo 25-04-2011
annieruci annieruci is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 32
Poder: 0
annieruci Va por buen camino
una posible solucion seria cambiarle el padre al treenode seleccionado
alguien sabe como hacerlo???
Responder Con Cita
  #5  
Antiguo 25-04-2011
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 de nuevo, ¿que error te da? debes comenzar a eliminar desde el ultimo que has seleccionado, para que no te de error de indices que no existen porque ya se ha eliminado.

El problema que veo en el codigo que he puesto, es esta linea:

Código Delphi [-]
TreeView2.Items.AddChild( nil, TreeView1.Items[i].Text);

se debe cambiar por esta:

Código Delphi [-]
TreeView2.Items.AddChild( nil, TreeView1.Selections[i].Text);

ademas de controlar cuando se quiere borrar un item que tiene subitems.

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
  #6  
Antiguo 25-04-2011
annieruci annieruci is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 32
Poder: 0
annieruci Va por buen camino
Gracias por dedicarme un tiempo pero si cambio esa linea me da este error
y no hace nada no mueve ni uno aunque sea:
List index out of bounds(1).
Responder Con Cita
  #7  
Antiguo 25-04-2011
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
Cita:
Empezado por annieruci Ver Mensaje
.............si cambio esa linea me da este error
y no hace nada no mueve ni uno aunque sea:
List index out of bounds(1).
Que raro , acabo de probarlo y si funciona y no da error, puedes poner el codigo con el que estas probando ahora o subir el proyecto solo con esta parte para poder revisarlo mejor.

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
  #8  
Antiguo 25-04-2011
annieruci annieruci is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 32
Poder: 0
annieruci Va por buen camino
actualmente lo he probado todo, ya no se que mas me probar,

Código Delphi [-]
for i:= TreeView1.SelectionCount-1 downto 0 do
     begin
      TreeView2.Items.AddChild( nil, TreeView1.Items[i].Text);
      TreeView1.Selections[i].Delete;
     end;
me mueve el primer elemento siempre, solo el primero aunque marque el 4 me mueve el 1.

Código Delphi [-]
for i := 0 to TreeView1.Items.Count-1 do
   begin
    if TreeView1.Items[i].Selected then
     begin
      TreeView2.Items.AddChild( nil, TreeView1.Items[i].Text);
      TreeView1.Items[i].Delete;
      Dec(cant);
     end;

este es el codigo que estoy probando pero repito que cuando marco dos consecutivos me da el error parece que al borrar una posicion se marea, estoy usando delphi 6 y conexion a Oracle, son dos treeview y un boton que mueve los datos de un lado a otro solo eso,

Saludos

Última edición por Caro fecha: 25-04-2011 a las 20:38:56.
Responder Con Cita
  #9  
Antiguo 25-04-2011
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
En el primer codigo, no has cambiado la linea que te dije, por eso siempre se copia el primero. Te adjunto un ejemplo.

Si tienes dudas pregunta.

Saluditos
Archivos Adjuntos
Tipo de Archivo: zip BorrarItems.zip (3,4 KB, 6 visitas)
__________________
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
  #10  
Antiguo 25-04-2011
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
No te olvides utilizar etiquetas [ delphi] tu codigo [ /delphi] (sin el espacio), para que se vea mejor tu codigo o también lo puedes hacer desde el mismo editor.

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
  #11  
Antiguo 25-04-2011
annieruci annieruci is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 32
Poder: 0
annieruci Va por buen camino
Gracias por la ayuda, ya con ese ejemplo que has mandado lo entendi todo, y lo mejor de todo es que no me da ningun error, gracias por la yuda y disculpa las molestias.

Saludos y Gracias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Borrar varios registros en un Dbrepeater David82 PHP 0 09-09-2008 14:40:37
Habilitar elementos de un menu mediante treeview Durbed OOP 2 03-10-2007 14:20:36
Borrar varios registro de una tabla molina669 Conexión con bases de datos 2 10-11-2005 20:58:00
Borrar varios archivos mrmanuel Varios 5 27-05-2004 03:03:54
Borrar items de un TreeView ibarrols OOP 12 06-06-2003 20:50:30


La franja horaria es GMT +2. Ahora son las 17:37:41.


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