Page 1 of 1

TTREEVIEW como cambiar el elemento seleccionado

PostPosted: Sun Aug 07, 2016 6:34 pm
by rterraz
Hola amigos
El problema que se me presenta es el siguiente: tengo un dialogo donde hay un Ttreeview que tiene un primer nivel VENTAS debajo del cual hay otro 2016 y debajo de el uno por cada mes del año en curso. En el segundo cuadro de dialogo hay un txbrowse con las facturas correspondientes al mes seleccionado en el TREE del primer dialogo.
Deba jo del browse hay dos botones que permites seleccionar MES ANTERIOR o MES SIGUIENTE y mostrar las facturas correspondientes.
Lo que necesito es que al mover los meses en el browse se actualice el mes correspondiente en el TREE.
O sea ir subiendo o Bajando en los meses del tree a medida que subo o bajo en los meses del browse.
Les adjunto una imagen para que vean mejor como esta hecho.
He visto por ahi que en alguna version del TTreeview habia un metodo GONEXT() y otro GOPREV() que hacia esto pero la clase actual no los tiene.
He querido hacerlo usando el metodo SELECT(oItem) pero no he podido entender como obtener el Objeto necesario para pasar al metodo.
Se que los objetos se guardan en el array aItems del TREE pero cono estos se anidan no he podido entender como llegar a los que me interesan.
Agradeceria cualquier ayuda que pueda 'iluminarme', muchas gracias a todos.

Image


por su a alguien le interesa del dejo el codigo fuente de como hice el TREE

Code: Select all  Expand view
//.......................................
FUNCTION AddItems( oTree )
   
    local oImageList,oItem,aItems:={},cMes,n,cText
    local cAnio := cValTochar( year(date()))
    local aMeses:={'Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto',;
                   'Setiembre','Octubre','Noviembre','Diciembre' }
    local aObjetos:={}             
                   
    // imagenes para el tree
    oImageList := TImageList():New()
    oImageList:Add( TBitmap():Define( "b_xtransfer",, oWnd ))
    oImageList:Add( TBitmap():Define( "b_xopened",, oWnd ))
    oImageList:Add( TBitmap():Define( "b_xuser",, oWnd ))
    oImageList:Add( TBitmap():Define( "b_xcamion",, oWnd ))
    oImageList:Add( TBitmap():Define( "b_xstock",, oWnd ))
    oImageList:Add( TBitmap():Define( "b_xmoney",, oWnd ))
    oImageList:Add( TBitmap():Define( "b_xbrowse",, oWnd ))
    oImageList:Add( TBitmap():Define( "b_xstockadd",, oWnd ))
    oImageList:Add( TBitmap():Define( "b_xdebcred",, oWnd ))
    oImageList:Add( TBitmap():Define( "b_xctrl",, oWnd ))
   
    oTree:SetImageList( oImageList )
    oTree:blDBLClick:= {|| cText:= oTree:GetSelText(),;
                              SelectActionTree( cText )  }

    AADD(aItems,{ 'Ventas', oTree:add( 'Ventas',0) })  
    AADD(aItems,{ 'Stock de Productos', oTree:add( 'Stock de Productos',4) })
    AADD(aItems,{ 'Clientes', oTree:add( 'Clientes',2) })
    AADD(aItems,{ 'Proveedores', oTree:add( 'Proveedores',3) })            
    AADD(aItems,{ 'Compras', oTree:add( 'Compras',7) })  
    AADD(aItems,{ 'Movimientos de Caja', oTree:add( 'Movimientos de Caja',8) })  
   
    // agrega a ventas
    AADD(aItems,{ cAnio,aItems[1,2]:Add(cAnio,1)})
    AADD(aItems,{ 'Todas',aItems[7,2]:Add( 'Todas',1)}) 
    // agrega meses a año
    For n:= 1 TO month(Date())
      cMes:=aMeses[n]
      AADD(aItems,{ cMes,aItems[7,2]:Add( cMes,1, n )})  // 2
    next
   
    // agrega a Clientes
    AADD(aItems,{ 'Cuentas Corrientes',aItems[3,2]:Add('Cuentas Corrientes',6)})
    AADD(aItems,{ 'Saldos de Cuentas' ,aItems[3,2]:Add('Saldos de Cuentas',5)})
   
    // agrega a Stock
    AADD(aItems,{ 'Total de Productos'  ,aItems[2,2]:Add('Total de Productos',6)})
    AADD(aItems,{ 'Lista de Precios'    ,aItems[2,2]:Add('Lista de Precios',5)})
    AADD(aItems,{ 'Codificación de Productos' ,aItems[2,2]:Add('Codificacion de Productos',9)})
   
    // agrega a Compras
    AADD(aItems,{ 'Compras del Mes',aItems[5,2]:Add('Compras del Mes',6)})
    AADD(aItems,{ 'Todas las Compras' ,aItems[5,2]:Add('Todas las Compras',6)})
   
    // agrega a movimientos de caja
    AADD(aItems,{ 'Movimientos Mensuales',aItems[6,2]:Add('Movimientos Mensuales',6)})
    AADD(aItems,{ 'Movimientos del Día' ,aItems[6,2]:Add('Movimientos del Día',6)})
   
    *xbrowse( oTree:aItems)
    oTree:ExpandBranch( aItems[1,2])
    oTree:ExpandBranch( aItems[2,2])
    *oTree:ExpandAll()
    oTree:GoTop()

   
RETU .T.
 

Re: TTREEVIEW como cambiar el elemento seleccionado

PostPosted: Sun Aug 07, 2016 7:30 pm
by cnavarro
Bien, más o menos sería asi ( ojo que no lo he probado )
Espero te sirva

Code: Select all  Expand view

Function MoveItem( nDir, oTree )
   local oItem
   local nPos
   DEFAULT nDir  := 1     // -1 -> Arriba ( Up ) -  +1 -> Abajo ( Down )

   oItem := oTree:GetSelected()
   nPos   := oTree:GetItemPos( oItem )
   nPos   := nPos + nDir
   if nPos > Len( oTree:aItems )
      nPos := 1
   else
      if nPos < 1
         nPos  := Len( oTree:aItems )
      endif
   endif

   oTree:Select( oTree:aItems[ nPos ] )
/*
  Eval( oTree:blDBLClick )
*/


Return ( oTree:GetSelected() )

 

Re: TTREEVIEW como cambiar el elemento seleccionado

PostPosted: Sun Aug 07, 2016 8:53 pm
by rterraz
Hola Gracias por tu respuesta, anda bien
pero segui mirando en el foro y encontre algo que publico Antonio para el browse y anda de maravillas es asi:

nOp++ (si sube) nOp-- (si baja)
cMes := aMeses[nOp]
oSay:SetText('MES: '+ cMes )
oSel := oTree:Scan( { | o | cMes $ o:cPrompt } )
oTree:Select( oSel )


el metodo Scan(bAction) del oTree te devuelve el objeto del branch correspondiente
y al metodo SELECT(obj) le pasas dicho objeto y listo.

Re: TTREEVIEW como cambiar el elemento seleccionado

PostPosted: Sun Aug 07, 2016 10:09 pm
by cnavarro
Si, lo conocía, pero pensaba que querías limitar el movimiento a la "rama" en la que te encuentras

Re: TTREEVIEW como cambiar el elemento seleccionado

PostPosted: Tue Aug 16, 2016 6:32 pm
by MGA
rterraz,

You can show an example of using PRG TREE + XBROWSE?

:D

Re: TTREEVIEW como cambiar el elemento seleccionado

PostPosted: Tue Aug 16, 2016 6:56 pm
by cnavarro

Re: TTREEVIEW como cambiar el elemento seleccionado

PostPosted: Tue Aug 16, 2016 7:25 pm
by MGA
Cristobal Navarro,

Thanks!!! :D