Inicie repositorio prueba e Tree (LO LOGRE)

Inicie repositorio prueba e Tree (LO LOGRE)

Postby goosfancito » Mon Aug 21, 2023 6:02 am

Hola.
Inicie un repositorio en git para ir poniendo el avance que tengo en el tree. El proyecto lo arme con el entorno del xMate (en el raíz existe un archivo con el nombre harbour32.env) los que quieran colaborar bienvenido sean.

La idea del Tree:
1) poder insertar ramas con los datos: Fecha, Nombre y Apellido
2) poder modificar los datos que se ingresaron
2) poder eliminar una rama
3) mantener ordenado el arbol.
4) poder guardar en un .txt el arbol
5) poder "rearmarlo" leyendo ese .txt el arbol.


Si tienen alguna idea y si Antonio lo permite me gustaría que en este hilo lo pongan y vamos discutiendo. Este repositorio es público y no lo voy a eliminar. No quiero usar xBrowse ni nada por el estilo, solo un Tree.

https://github.com/gusmavf/prueba_tree_2024
Last edited by goosfancito on Wed Aug 30, 2023 10:11 am, edited 1 time in total.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Inicie repositorio prueba e Tree

Postby goosfancito » Mon Aug 21, 2023 7:59 pm

Antonio

Ahi subí al repositorio lo que estoy haciendo y me esta pasando lo siguiente:
en el archivo arbol_2024.prg en la linea 125 intento guardar en una variable que la declaro a nivel del metodo llamada "oRama" el ítem que se selecciona, el item es seleccionado pero no lo deja pintado, ahora si yo no hago esa asignación, o sea lo dejo simplemente asi:
Code: Select all  Expand view
  oTree:blclicked := { | nRow, nCol, nKeyFlags | ::seleccionarRama( oTree, nRow, nCol, nKeyFlags ) }

el item seleccionado queda pintado, porque puede estar pasando eso?
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Inicie repositorio prueba e Tree

Postby Antonio Linares » Tue Aug 22, 2023 5:27 am

Estimado Gustavo,

No se a que te refieres exactamente

Puedes hacer un video para que se entienda lo que estas haciendo y lo que sucede ? gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Inicie repositorio prueba e Tree

Postby goosfancito » Tue Aug 22, 2023 5:46 am

ejecuta el programa y luego selecciona alguna de las ramas y vas a ver que no queda "pintado" en azul. PERO internamente si se ha seleccionado.

despues de eso:

si cambias la linea como lo digo en el post vas a ver que al seleccionar algun item si queda "pintado"

https://drive.google.com/file/d/1Xlj2VAufPUCxxEylyqvcgyzuseaSK_CD/view?usp=drive_link
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Inicie repositorio prueba e Tree

Postby Antonio Linares » Tue Aug 22, 2023 11:18 am

Comenta esta línea:

// oTree:blclicked := { | nRow, nCol, nKeyFlags | oRama:= ::seleccionarRama( oTree, nRow, nCol, nKeyFlags ) }

No puedes interferir el funcionamiento por defecto del botón izquierdo en el árbol
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Inicie repositorio prueba e Tree

Postby Antonio Linares » Tue Aug 22, 2023 11:21 am

He usado estos fichero go.bat y tree.hbp para construir con hbmk2:

go.bat
Code: Select all  Expand view
set path=c:\bcc7\bin
c:\harbour\bin\win\bcc\hbmk2 tree.hbp -comp=bcc

tree.hbp
Code: Select all  Expand view
-I.\Include
-Ic:\fwh\include
source\arbol_2024.prg
source\TAbm.prg
source\extra\debug.prg

-Lc:\fwh\lib
-lfiveh
-lfivehc

Resource\recursos.res

hbwin.hbc
hbmzip.hbc
hbziparc.hbc
hbfoxpro.hbc
hbct.hbc
xhb.hbc
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Inicie repositorio prueba e Tree

Postby Antonio Linares » Tue Aug 22, 2023 11:23 am

Deberias usar el código de FWH\samples\pim.prg y no reinventar la rueda :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Inicie repositorio prueba e Tree

Postby goosfancito » Tue Aug 22, 2023 1:00 pm

Antonio Linares wrote:Comenta esta línea:

// oTree:blclicked := { | nRow, nCol, nKeyFlags | oRama:= ::seleccionarRama( oTree, nRow, nCol, nKeyFlags ) }

No puedes interferir el funcionamiento por defecto del botón izquierdo en el árbol


y en este caso que necesito que al hacer un click me seleccione una rama como lo hago?
el pim.prg (hablo por mi) se me es muy dificil seguirlo con lo que tengo que hacer.

Ahora estoy avanzando y el modo que encontre mas facil para mi es ir ubicando las ramas en la posicion que necesito (fecha menor arriba de las siguientes) y no ordenar al arbol una vez que inserto la rama, ya despues subo lo que estoy logrando justamente para que el que quiera colaborar con las ideas las haga.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Inicie repositorio prueba e Tree

Postby Antonio Linares » Tue Aug 22, 2023 6:37 pm

Usa oTree:bChanged
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Inicie repositorio prueba e Tree

Postby goosfancito » Thu Aug 24, 2023 5:30 pm

Estoy intentando hacer con el scan del tree y ascan para recorrerlo pero no me da.
tengo un tree con ramas, necesito saber el hitem de cada rama para compararlo con otro hitem

el primer paso que hice fue

Code: Select all  Expand view
oTree:scan({ |o| ... })


diganme si me equivoco porque es todo nuevo esto para mi.
en esa linea lo que hago es tomar "Cada rama" ?

Code: Select all  Expand view
oTree:scan( { |o| ascan(o:aItems, ...) })
 

y en esa linea lo que hago es recorrerme los "aItems" de cada rama?

Code: Select all  Expand view
oTree:scan( { |o| aScan(o:aItems, { | a | a:hitem == nOtroHitem }) })
 

y yo pienso que con esa ultima linea haria lo que necesito pero no, no funciona.

Error description: Error BASE/1066 Argument error: conditional
Args:
[ 1] = N 0
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Inicie repositorio prueba e Tree

Postby Antonio Linares » Thu Aug 24, 2023 8:28 pm

Prueba esto:

oTree:Scan( { | o | MsgInfo( o:cPrompt ), .F. } )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Inicie repositorio prueba e Tree

Postby goosfancito » Mon Aug 28, 2023 6:50 am

Antonio,
Necesito una vez que creo una rama moverla una rama mas arriba (solo una posicion) he intentado hacer esto pero no me sale, como se hace?
Code: Select all  Expand view
           oItem := oTree:scan( { | o | o:hitem == oRama:aItems[ 1 ]:hitem } )
            oItem := oTree:insertAfter( oItem, cPrompt )
            oItem:cargo := { ;
                             "fecha" => vGets[ 1 ], ;
                             "hitem_parent" => IIf( oItem:oParent != NIL, oItem:oParent:hitem, 0 ) ;
                     }

            oTree:SwapUp()
 


Solo me estaría faltando eso para poder terminar con esto.
La técnica que usé fue cada vez que se inserta una rama comprobar cual es la inmediata superior (con respecto a la fecha) y crearla arriba de esa rama. el problema que tenía es que si estoy en la posicion 1 de aItems no puedo generar una rama sobre ella, entonces la quiero generar abajo y moverla una posición hacia arriba.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Inicie repositorio prueba e Tree

Postby Antonio Linares » Mon Aug 28, 2023 8:42 am

Estimado Gustavo,

Prueba así:
Code: Select all  Expand view
          oItem := oTree:scan( { | o | o:hitem == oRama:aItems[ 1 ]:hitem } )
            oItem := oTree:insertAfter( oItem, cPrompt )
            oItem:cargo := { ;
                             "fecha" => vGets[ 1 ], ;
                             "hitem_parent" => IIf( oItem:oParent != NIL, oItem:oParent:hitem, 0 ) ;
                     }

            oTree:Select( oItem )
            oTree:SwapUp()
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Inicie repositorio prueba e Tree

Postby goosfancito » Mon Aug 28, 2023 8:52 am

Code: Select all  Expand view
  Error occurred at: 28/08/2023, 10:52:13
   Error description: Error BASE/1004  No exported method: HITEM
   Args:
     [   1] = U  

Stack Calls
===========
   Called from:  => HITEM( 0 )
   Called from: Source\tree_fw\ttreevie.prg => TTREEVIEW:INSERTAFTER( 323 )
   Called from: Source\tree_fw\ttreevie.prg => TTREEVIEW:SWAPUP( 563 )
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Inicie repositorio prueba e Tree

Postby Antonio Linares » Mon Aug 28, 2023 9:00 am

Mira el código de los métodos:
Code: Select all  Expand view
METHOD SwapDown() CLASS TTreeView

   local oSelItem := ::GetSelected(), cPrompt := oSelItem:cPrompt

   ::GoNext()
   oSelItem:End()
   ::Select( ::InsertAfter( ::GetSelected(), cPrompt ) )
   
return nil

//----------------------------------------------------------------------------//

METHOD SwapUp() CLASS TTreeView

   local oSelItem := ::GetSelected(), cPrompt := oSelItem:cPrompt

   ::GoPrev()
   ::GoPrev()
   oSelItem:End()
   ::Select( ::InsertAfter( ::GetSelected(), cPrompt ) )
   
return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 45 guests