Página 1 de 1

Ayuda con @...PUSHBUTTON

Enviado: 02 Fev 2020 19:58
por Ruben Dario
Saludos al Forum
Tengo este codigo como hago para que me tome los valores de STATE diferentes deacuerdo a la opcion

Caso 1
No lo toma el valor toma el ultimo nCont

Código: Selecionar todos

  nBtn := 0
    FOR nCont = 1 TO Len( ::acButtons )   
           @ pos, iif( nCont == 1, cpos+2, Col()+ 6 ) GET lPrimero PUSHBUTTON;
           CAPTION ::acButtons[ nCont,5 ] STATE  { || nBtn := IsPressed1(nCont)  } ;  
           MESSAGE ::acButtons[ nCont,3 ] COLOR if(::jlopm1,::cBtnClr,::cBtnCl1)
        endif
   NEXT  

      FUNCTION IsPressed1( nButton )
      IF GetActive():control:buffer
         ReadKill( .T. )
      ELSE
         nButton := 0
      ENDIF
   RETURN nButton

Caso 2, tampoco lo ejecuta, el valor del cComExec puede tomar diferentes valores

Código: Selecionar todos

    cComExec := { || ::reg_nav0001("X0") } 
    FOR nCont = 1 TO Len( ::acButtons )   
           @ pos, iif( nCont == 1, cpos+2, Col()+ 6 ) GET lPrimero PUSHBUTTON;
           CAPTION ::acButtons[ nCont,5 ] STATE  { ||cComExec  } ;  
           MESSAGE ::acButtons[ nCont,3 ] COLOR if(::jlopm1,::cBtnClr,::cBtnCl1)
        endif
   NEXT  


Ayuda con @...PUSHBUTTON

Enviado: 03 Fev 2020 11:02
por JoséQuintas
O problema está no codeblock.
Se o codeblock usa o conteúdo da variável nCont, vai ser usada essa variável quando clicar, e o conteúdo vai ser outro.
Talvez usar uma função de construção do codeblock, pra manter o valor fixo.

Código: Selecionar todos

FOR nCont = 1 TO 5
   BlockButton( nCont )
NEXT

FUNCTION BlockButton( n )
   RETURN { || bBtn := IsPressed1( n ) }

Ayuda con @...PUSHBUTTON

Enviado: 03 Fev 2020 12:51
por Ruben Dario
Gracias por tu informacion, si esto fue lo que hice pero no funciona.