Page 1 of 1

Asociar BtnBmp a una tecla de funcion

PostPosted: Sat May 03, 2014 12:47 am
by RSalazarU
Hola amigos del foro:

Se puede asociar un BtnBmp a una tecla de funcion, sin usar la funcion SetKey().

Dicho de otro modo, que al presiona la tecla F3 se ejecute el bAction de un BtnBmp.

El problema del SetKey() es que si abro un dialogo encima del que tiene el BtnBmp y los setkey() asignados, los setkey() tb son validos para el nuevo dialogo.

De antemano, gracias por la ayuda.

Atentamente,

Rolando
Cochabamba, Bolivia

Re: Asociar BtnBmp a una tecla de funcion

PostPosted: Sat May 03, 2014 4:34 pm
by albeiroval
Rolando Prueba asi :

Code: Select all  Expand view

aKeys    := { VK_F2, VK_F3 }

REDEFINE BTNBMP oBtn[1] ID 4002 OF oDlg 2007;
    CENTER;
    PROMPT aOptions[1];
    FONT oFont1;
    ACTION ( lExit:= .T., lValYes:= .T., oDlg:End() );
    GRADIENT {|lInvert| if( lInvert, aClrGradInvert(), aClrGradGreen() ) }

REDEFINE BTNBMP oBtn[2] ID 4003 OF oDlg 2007;
    CENTER;
    PROMPT aOptions[2];
    FONT oFont1;
    ACTION ( lExit:= .T., lValYes:= .F., oDlg:End() );
    GRADIENT {|lInvert| if( lInvert, aClrGradInvert(), aClrGradRed() ) }

  oDlg:bKeyDown = {|nKey| KeyDown( nKey, aKeys, oBtn ) }

 ACTIVATE DIALOG oDlg;
    CENTERED;
    VALID lExit

......

static Function KeyDown( nKey, aKeys, oBtn )
  do case
    case nKey == aKeys[1]; Eval( oBtn[1]:bAction )
    case nKey == aKeys[2]; Eval( oBtn[2]:bAction )
  endcase
Return nil

 

Re: Asociar BtnBmp a una tecla de funcion

PostPosted: Sun May 04, 2014 12:27 am
by FranciscoA
Exactamente como dice albeiroval: (Probado)
Code: Select all  Expand view
oDlg:bKeyDown := {|nKey| if(nKey == VK_F3, Eval(oBtn:bAction),) }
 

Re: Asociar BtnBmp a una tecla de funcion

PostPosted: Sun May 04, 2014 12:42 pm
by RSalazarU
Albeiroval, Francisco:

Muy buena la solucion, gracias.

Atentamente,

Rolando.