click sobre tree con checkbox

click sobre tree con checkbox

Postby Miguel Salas » Fri Jun 08, 2012 6:40 pm

Hola a Todos:
Tengo un Treeview , quiero que haga algo al marcar el check y que se grabe o sea al almar de nuevo el tree debe estar marcado o marcados los que ya clickiee. Tengo el evento al darle click sobre la rama mas no sobre el checkbox. ¿Alguien ya ha resuelto esto?

desde ya muchas gracias.

atte Miguel Salas
México
Miguel Salas
 
Posts: 132
Joined: Sun Oct 23, 2005 4:09 pm
Location: Pánuco,Ver. México

Re: click sobre tree con checkbox

Postby Raymundo Islas M. » Fri Jun 08, 2012 8:55 pm

Miguel,

Con ayuda del buen amigo William Morales, hace tiempo hice lo que necesitas, armar un tree y al seleccionar algunas opciones, estas se graben y despues cuando lo vuelvas a mostrar, salgan ya activas.

Sin embargo, quiero comentarte algo : Cuando son muchas las opciones del tree y mandas un Expand, tarda unos 5-7 segundos para que salgan los datos. Hace poco actualize el xHarbour y me empezo a encimar los nombres de las opciones quedando totalmente ilegible, Por lo que opte por implementar el tree en un xBrowse y los resultados fueron muy satisfactorios : mucho mas rapido y sin problemas de pintado.

Deja busco un respaldo del codigo por si te interesa.

Saludos
FWH 10.6 + xHarbour + Borland 582
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Re: click sobre tree con checkbox

Postby Miguel Salas » Sun Jun 10, 2012 4:16 am

te agradezco la respuesta y en espera de tu valiosa ayuda
saludos
Miguel Salas
 
Posts: 132
Joined: Sun Oct 23, 2005 4:09 pm
Location: Pánuco,Ver. México

Re: click sobre tree con checkbox

Postby Raymundo Islas M. » Sun Jun 10, 2012 3:34 pm

Miguel,

En alguna tabla o dbf debes tener uno o varios campos para guardar las claves de los items seleccionados, yo los separo usando ':'

Code: Select all  Expand view
oTree := TTreeView():ReDefine( 101, oCatUsrFldr:aDialogs[2], CLR_BLACK, CLR_WHITE, .f. ,"RSTree" )
oTree:oFont := aSysFnts[9]


// Elementos del tree
Code: Select all  Expand view

{'1101021' ,' Notas De Mostrador'                                            ,'K003'}, ;
{'1101022' ,' Facturas'                                                      ,'K004'}, ;
{'1101023' ,' Cotizaciones'                                                  ,'K005'}, ;
{'1101024' ,' Ventas Express'                                                ,'K006'}, ;
{'1101025' ,' Preventas/Pedidos'                                             ,'K007'}, ;


// Obtener items seleccionados
Code: Select all  Expand view

static function GetUOptsSld( oTree, aItems )
local n, nCargo

for n = 1 to len( aItems )
  if oTree:GetCheck( aItems[n] )
     nCargo := aItems[ n ]:cargo
     if ascan( aUsrOptsSld, {|n| n == nCargo} ) == 0
        aadd( aUsrOptsSld, aItems[n]:cargo )              // Aqui guardo la clave de los items seleccionados : K003, K004, etc
     endif
  endif
  GetUOptsSld( oTree, aItems[n]:aItems )
next
   
return nil
*-----*


// Actualizar items seleccionados
Code: Select all  Expand view

aOpts2Apl := HB_ATokens( aDmXDts[1,1], ":", .f., .f. )

SrcOptsValues( oTree, aItems, aOpts2Apl )
oTree:Refresh()

static function SrcOptsValues( oTree, aItems, aOptsGrntd )
local nQ

for nQ := 1 to len( aItems )
    oTree:SetCheck( aItems[nQ], .f. )
    if ascan( aOptsGrntd, aItems[nQ]:cargo ) > 0
        oTree:SetCheck( aItems[nQ], .t. )
    endif
    SrcOptsValues( oTree, aItems[nQ]:aItems, aOptsGrntd )
next

return nil
*-----*


Cualquier dudad estamos a la orden.

Saludos
FWH 10.6 + xHarbour + Borland 582
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Re: click sobre tree con checkbox

Postby Miguel Salas » Mon Jun 11, 2012 9:41 pm

Te agradezco infinitamente Raymundo... dejame probarlo y te comento
Miguel Salas
 
Posts: 132
Joined: Sun Oct 23, 2005 4:09 pm
Location: Pánuco,Ver. México

Re: click sobre tree con checkbox

Postby Miguel Salas » Mon Jun 11, 2012 10:13 pm

unas dudas,:
1- No veo en el codigo que uses la funcion "GetUOptsSld" (solo dentro de si misma ¿?)
2- El array aDmXDts ¿con que lo llenas?
3.- SrcOptsValues() la llamas al llenar el Tree?


como ves ando perdido en esto

saludos
Miguel Salas
 
Posts: 132
Joined: Sun Oct 23, 2005 4:09 pm
Location: Pánuco,Ver. México

Re: click sobre tree con checkbox

Postby Raymundo Islas M. » Tue Jun 12, 2012 1:51 pm

Miguel,

1- No veo en el codigo que uses la funcion "GetUOptsSld" (solo dentro de si misma ¿?)
Code: Select all  Expand view
Cuando termino de seleccionar las opciones deseadas, mando llamar esta funcion para que recorra el tree y mando a un a un arreglo el cargo del elemento, que en este caso es la clave de la opcion. Y son las que se van a grabar en un campo.

2- El array aDmXDts ¿con que lo llenas?
Code: Select all  Expand view
En mi caso, lo lleno desde un query del campo donde grabe las opciones previamente seleccionadas y grabadas, asi que, primero armas tu tree con tus opciones y enseguida le indicas cuales fueron seleccionadas previamente para que se muestren con tal atributo.

3.- SrcOptsValues() la llamas al llenar el Tree?
Code: Select all  Expand view
Igual al punto anterior, se arma el tree, y despues le aplicas las opciones seleccionadas previamente.


Y sip, en efecto, las funciones SrcOptsValues() y GetUOptsSld() se llaman recursivamente para recorrer todos los branches del tree.

ya tienes la rutina para armar tu tree ? ya que ahi es donde esta el asunto para armar los "niveles" de tu tree.

Saludos
FWH 10.6 + xHarbour + Borland 582
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Re: click sobre tree con checkbox

Postby jbrita » Mon Feb 18, 2019 2:34 pm

Amigo Raymundo, tiene un ejemplo mas didactico con array

Saludos
jbrita
 
Posts: 486
Joined: Mon Jan 16, 2006 3:42 pm


Return to FiveWin para Harbour/xHarbour

Who is online

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