Page 1 of 1

actualizar clausula when en botones

Posted: Sat Oct 07, 2006 4:43 pm
by Francisco Horta
Hola, quiero actualizar los "when" de unos botones toolbar conforme a unos datos ya probe con oBar:ForWhen() y no me hace nada, probe con oBar:aButtons[x]:Forwhen() y me da error, alguna pista...
por lo pronto lo estoy haciendo de uno por uno asi:
oBar:EnableButton( x, .T. ), pero no quiero habilitarlos directo esto conforme a la clausuala when que tiene cada boton
oBar:
salu2
paco

Posted: Sat Oct 07, 2006 6:10 pm
by R.F.
Veamos, oBar:ForWhen() no funciona porque el objeto bar es contenedor, no es el objeto perse.

oBar:aButtons[x]:Forwhen() tampoco va a funcionar porque la barra contenedora no tiene ninguna data llamada aButtons, por lo taunto cuasra error.

Haz probado con oBar:aControls[x]:ForWhen() ?????

Posted: Sat Oct 07, 2006 6:44 pm
by Francisco Horta
fijate que lo probe como me sugieres y me manda un error de arreglo.
Basicamente lo que hago es en un browse en una ventana y los botones, pero si el browse esta sin registros ciertos botones se deshabilitan y si tiene registros se habilitan, estaba viendo la clase toolbar y nomas veo que se evalua el bwhen al crear el objeto boton, dejo mi codigo

IF lNew .AND. (oDCaj)->(OrdKeyCount())==0
FOR x := 1 TO LEN(oBar:aButtons)
oBar:aControls[x]:ForWhen()
NEXT
ENDIF

con oBar:aButtons[x]:ForWhen() como comentas el error es no export method, algo mas?
gracias
paco

Posted: Sat Oct 07, 2006 9:03 pm
by Armando
Paco:

pruebas con

oDlg:AEvalWhen()

Arriba el "Atletico san pancho" :)

Armando

Posted: Sat Oct 07, 2006 9:12 pm
by Francisco Horta
nop tampoco armando, solo se ejecuta para los controles de la ventana no para la barra de botones
salu2
paco

Posted: Sun Oct 08, 2006 8:04 am
by Antonio Linares
Francisco,

En la clase TToolBar modifica esta línea:

Code: Select all

METHOD AddButton( bAction, cToolTip, cText, bWhen, cMsg ) CLASS TToolBar

   AAdd( ::aButtons, { bAction, cToolTip, cMsg,, bWhen } )  // esta
   ...
Y añade este método:

Code: Select all

METHOD AEvalWhen() CLASS TToolBar

   local n

   for n = 1 to Len( ::aButtons )
      If ::aButtons[ n ][ 5 ] != nil
         ::EnableButton( n, Eval( ::aButtons[ n ][ 5 ] ) )
      endif
   next

return nil

Posted: Sun Oct 08, 2006 7:25 pm
by Francisco Horta
Perfecto, gracias antonio
salu2
Paco