FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour TTREEVIEW como cambiar el elemento seleccionado
Posts: 182
Joined: Wed Nov 08, 2006 11:44 PM
TTREEVIEW como cambiar el elemento seleccionado
Posted: Sun Aug 07, 2016 06: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.




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

Code (fw): Select all Collapse
//.......................................
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.
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: TTREEVIEW como cambiar el elemento seleccionado
Posted: Sun Aug 07, 2016 07:30 PM
Bien, más o menos sería asi ( ojo que no lo he probado )
Espero te sirva

Code (fw): Select all Collapse
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
Posts: 182
Joined: Wed Nov 08, 2006 11:44 PM
Re: TTREEVIEW como cambiar el elemento seleccionado
Posted: Sun Aug 07, 2016 08: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.
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: TTREEVIEW como cambiar el elemento seleccionado
Posted: 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
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Re: TTREEVIEW como cambiar el elemento seleccionado
Posted: Tue Aug 16, 2016 06:32 PM

rterraz,

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

:D

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: TTREEVIEW como cambiar el elemento seleccionado
Posted: Tue Aug 16, 2016 06: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
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Re: TTREEVIEW como cambiar el elemento seleccionado
Posted: Tue Aug 16, 2016 07:25 PM

Cristobal Navarro,

Thanks!!! :D

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin

Continue the discussion