TTREEVIEW como cambiar el elemento seleccionado

TTREEVIEW como cambiar el elemento seleccionado

Postby rterraz » Sun Aug 07, 2016 6:34 pm

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.
 
User avatar
rterraz
 
Posts: 182
Joined: Wed Nov 08, 2006 11:44 pm
Location: Argentina

Re: TTREEVIEW como cambiar el elemento seleccionado

Postby cnavarro » Sun Aug 07, 2016 7:30 pm

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() )

 
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
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: TTREEVIEW como cambiar el elemento seleccionado

Postby rterraz » Sun Aug 07, 2016 8:53 pm

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.
User avatar
rterraz
 
Posts: 182
Joined: Wed Nov 08, 2006 11:44 pm
Location: Argentina

Re: TTREEVIEW como cambiar el elemento seleccionado

Postby cnavarro » Sun Aug 07, 2016 10:09 pm

Si, lo conocía, pero pensaba que querías limitar el movimiento a la "rama" en la que te encuentras
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
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: TTREEVIEW como cambiar el elemento seleccionado

Postby MGA » Tue Aug 16, 2016 6:32 pm

rterraz,

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

:D
ubiratanmga@gmail.com

FWH18.02
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
MGA
 
Posts: 1234
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá

Re: TTREEVIEW como cambiar el elemento seleccionado

Postby cnavarro » Tue Aug 16, 2016 6:56 pm

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
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: TTREEVIEW como cambiar el elemento seleccionado

Postby MGA » Tue Aug 16, 2016 7:25 pm

Cristobal Navarro,

Thanks!!! :D
ubiratanmga@gmail.com

FWH18.02
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
MGA
 
Posts: 1234
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá


Return to FiveWin para Harbour/xHarbour

Who is online

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