TTREEVIEW como cambiar el elemento seleccionado

Post Reply
User avatar
rterraz
Posts: 182
Joined: Wed Nov 08, 2006 11:44 pm
Location: Argentina

TTREEVIEW como cambiar el elemento seleccionado

Post 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

//.......................................
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
cnavarro
Posts: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: TTREEVIEW como cambiar el elemento seleccionado

Post by cnavarro »

Bien, más o menos sería asi ( ojo que no lo he probado )
Espero te sirva

Code: Select all | Expand


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

Re: TTREEVIEW como cambiar el elemento seleccionado

Post 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.
User avatar
cnavarro
Posts: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: TTREEVIEW como cambiar el elemento seleccionado

Post by cnavarro »

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
MGA
Posts: 1258
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá
Contact:

Re: TTREEVIEW como cambiar el elemento seleccionado

Post by MGA »

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
User avatar
cnavarro
Posts: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: TTREEVIEW como cambiar el elemento seleccionado

Post by cnavarro »

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
MGA
Posts: 1258
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá
Contact:

Re: TTREEVIEW como cambiar el elemento seleccionado

Post by MGA »

Cristobal Navarro,

Thanks!!! :D
ubiratanmga@gmail.com

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