Page 1 of 1

Asociar BtnBmp a una tecla de funcion

Posted: 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

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

Code: Select all

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

Posted: Sun May 04, 2014 12:27 am
by FranciscoA
Exactamente como dice albeiroval: (Probado)

Code: Select all

oDlg:bKeyDown := {|nKey| if(nKey == VK_F3, Eval(oBtn:bAction),) }
 

Re: Asociar BtnBmp a una tecla de funcion

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

Muy buena la solucion, gracias.

Atentamente,

Rolando.