Borrar Items de Treeview

Post Reply
User avatar
cuatecatl82
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Borrar Items de Treeview

Post by cuatecatl82 »

Saludos a Todos:

Estoy armando un Tree en base al ejemplo re.prg, ya armado un arbol de items como puedo borrar items, he buscado y probado por varias formas pero no funciona, hay alguna forma de poderlo realizar..

Image
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cnavarro
Posts: 6558
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: Borrar Items de Treeview

Post by cnavarro »

Victor, seria algo asi, a ver si te sirve

Code: Select all | Expand



Local nSect
Local nPos
Local oIt    := oTree:GetSelected()
if !Empty( oIt )
   nSect := oTree:GetItemPos( oIt:oParent )
   nPos  := oIt:oParent:GetItemPos( oIt )
   oIt:oParent:aItems[ nPos ]:DeleteBranches()
   oIt:oParent:DelItemPos( nPos )
endif

 
Last edited by cnavarro on Sun Dec 13, 2015 7:23 pm, edited 1 time in total.
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cuatecatl82
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: Borrar Items de Treeview

Post by cuatecatl82 »

Cristóbal:

Como siempre muy oportuna tu ayuda... Funcionó de maravilla


Gracias por tu apoyo. Saludos
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
Carles
Posts: 1151
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona
Been thanked: 7 times
Contact:

Re: Borrar Items de Treeview

Post by Carles »

Hi,

Cuidado que en esta clase habia un pequeño bug, no se si esta resuelto ahora. Lo que ocurria creo recordar es que borraba el item pero no la referencia que estaba en su padre. :shock:

Yo tengo el código asi para que funcione correctamente

Code: Select all | Expand


        //  Buscamos el Padre del que cuelga este Item

            oPadre           :=  oBranch:GetParent()       
           
            TVDeleteItem( ::oTree:hWnd, oBranch:hItem )

        //  TVDeleteItem borra la rama pero NO elimina de la clase el Item de la rama

            nPosHijoenPadre  := Ascan( oPadre:aItems, {|o| o:hItem == oBranch:hItem } )

            IF nPosHijoenPadre > 0

               ADel ( oPadre:aItems, nPosHijoenPadre )
               ASize( oPadre:aItems, Len(oPadre:aItems)-1 )

            ENDIF   


Por si alguien lo necesita o quiere revisar...
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Silvio.Falconi
Posts: 7154
Joined: Thu Oct 18, 2012 7:17 pm
Been thanked: 2 times

Re: Borrar Items de Treeview

Post by Silvio.Falconi »

Carles,
here run ok but only for subcategory
when I try to delete a category make error

Code: Select all | Expand


Application
===========
   Path and name: C:\Documents and Settings\Administrator\Desktop\tree\test.Exe (32 bits)
   Size: 2,737,664 bytes
   Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20140725)
   FiveWin  Version: FWHX 15.01
   Windows version: 5.1, Build 2600 Service Pack 3

   Time from start: 0 hours 1 mins 13 secs
   Error occurred at: 12/18/15, 10:06:55
   Error description: Error BASE/1004  Class: 'NIL' has no exported method: AITEMS
   Args:
     [   1] = U  

Stack Calls
===========
   Called from:  => AITEMS( 0 )
   Called from: test.prg => MABORRA( 244 )
   Called from: test.prg => (b)TEST( 67 )
   Called from: .\source\classes\BUTTON.PRG => TBUTTON:CLICK( 175 )
   Called from: .\source\classes\CONTROL.PRG => TBUTTON:HANDLEEVENT( 1687 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3450 )
   Called from:  => SENDMESSAGE( 0 )
   Called from: .\source\classes\DIALOG.PRG => TDIALOG:COMMAND( 403 )
   Called from:  => TWINDOW:HANDLEEVENT( 0 )
   Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT( 906 )
   Called from:  => DIALOGBOXINDIRECT( 0 )
   Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 286 )
   Called from: test.prg => TEST( 104 )
 




Code: Select all | Expand




   local oLink       := oTree:GetSelected()
   local cPrompt     := oLink:cPrompt
   local cCargo      := oLink:Cargo
   local nRecno      := GE->(Recno())
   local lMateria    := ( Len(cCargo) <= 40 )
   local  nNext



SELECT GE
      GE->(DbSkip())
      nNext := GE->(Recno())
      GE->(DbGoto(nRecno))

      GE->(DbDelete())
      GE->(DbPack())
      GE->(DbGoto(nNext))

      IF GE->(EOF()) .or. nNext == nRecno
         GE->(DbGoBottom())
      ENDIF


   // CANCELLO IL TREE
//      oLink:End()   //  <-----------------
       * TvDeleteItem( oTree:hWnd, oLink:hItem )
       * MyDelItem( oTree, oLink )


            //  Buscamos el Padre del que cuelga este Item

                oPadre  :=  oLink:GetParent()
                TVDeleteItem(oTree:hWnd, oLink:hItem )
            //  TVDeleteItem borra la rama pero NO elimina de la clase el Item de la rama
                nPosHijoenPadre  := Ascan( oPadre:aItems, {|o| o:hItem == oLink:hItem } )
                IF nPosHijoenPadre > 0
                   ADel ( oPadre:aItems, nPosHijoenPadre )
                   ASize( oPadre:aItems, Len(oPadre:aItems)-1 )
                ENDIF

             ENDIF

   oTree:refresh()
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
goosfancito
Posts: 1956
Joined: Fri Oct 07, 2005 7:08 pm

Re: Borrar Items de Treeview

Post by goosfancito »

Veo que tienen mas experiencia en tree que yo.

pueden decirme como puedo recorrerme el tree desde una punta a la otra pasando por todos los OITEM que tnega?

gracias
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
Antonio Linares
Site Admin
Posts: 42584
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 38 times
Been thanked: 86 times
Contact:

Re: Borrar Items de Treeview

Post by Antonio Linares »

Gustavo,

oTree:Scan( bAction )

bAction recibe el parámetro oItem y tiene que devolver un valor lógico indicando si se ha encontrado lo que se buscaba ó hay que seguir buscando :-)

{ | oItem | ..., lEncontrado }

lEncontrado es .T. ó .F.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply