Page 1 of 1

No se ejecuta bGotFocus a la primera

Posted: Tue Aug 13, 2019 8:39 pm
by jvtecheto
Hola amigos :

Este codigo de abajo, cuando llega normalmente a su get no se ejecuta el bGotfocus , solo se ejecuta si posteriormente pulso Enter y me situo en el Get

Code: Select all

REDEFINE GET oNormal VAR nNormal ID 104 OF oDlg PICTURE "99,999.99" UPDATE
oNormal:bGotFocus := {|| IF(lAppend,(nPre_normal:=AputTrab->hora,nPre_extra:=AputTrab->extra,oDlg:UPDATE()), )}
 
Que hago mal ?.

Que necesito para que se ejecute a la primera

Gracias por vuestra ayuda.

Saludos

Jose.

Re: No se ejecuta bGotFocus a la primera

Posted: Wed Aug 14, 2019 12:01 am
by Armando
jvetecheto:

Cambia a SET en lugar de GOT, si entiendo bien el bGotFocus es para saber si el get tiene el foco.

oNormal:bSetFocus

Saludos

Re: No se ejecuta bGotFocus a la primera

Posted: Wed Aug 14, 2019 8:45 am
by jvtecheto
Hola Armando.

Me da error clase TGet el mensaje no existe bSetFocus

??

Saludos.

Re: No se ejecuta bGotFocus a la primera

Posted: Wed Aug 14, 2019 10:24 am
by cnavarro
Jose, tu código es correcto, otro tema es por qué no se ejecuta correctamente el bGotFocus
Puedes poner tu rc ?

Re: No se ejecuta bGotFocus a la primera

Posted: Wed Aug 14, 2019 1:14 pm
by armando.lagunas

Code: Select all

oNormal:bGotFocus := {|| IF(lAppend,(nPre_normal:=AputTrab->hora,nPre_extra:=AputTrab->extra,oDlg:UPDATE()), )}

lo único que veo acá es que la variable lAppend debe venir con un valor .f. al principio o en el transcurso y por eso no se ejecuta la condición del :bGotFocus
revisa el estado de la variable hasta llegar al Get correspondiente.

Saludos

Re: No se ejecuta bGotFocus a la primera

Posted: Wed Aug 14, 2019 2:51 pm
by MGA
on init(eval(oNormal:bGotFocus))

Re: No se ejecuta bGotFocus a la primera

Posted: Wed Aug 14, 2019 3:24 pm
by karinha

Re: No se ejecuta bGotFocus a la primera

Posted: Fri Aug 16, 2019 7:36 am
by jvtecheto
cnavarro wrote:Jose, tu código es correcto, otro tema es por qué no se ejecuta correctamente el bGotFocus
Puedes poner tu rc ?
Hola Cristobal:

rc del dialogo en cuestion.

Code: Select all


LANGUAGE 10, 3
APUTRAB DIALOG 26, 46, 261, 242
STYLE DS_3DLOOK | DS_MODALFRAME | DS_SETFONT | WS_CAPTION | WS_POPUP | WS_SYSMENU
CAPTION "APUNTES DE OBRA"
FONT 10, "Arial"
{
    EDITTEXT        101, 80, 16, 45, 12, 0, WS_EX_LEFT
    EDITTEXT        102, 80, 36, 25, 12, 0, WS_EX_LEFT
    EDITTEXT        103, 91, 71, 25, 12, 0, WS_EX_LEFT
    EDITTEXT        104, 19, 113, 35, 12, 0, WS_EX_LEFT
    EDITTEXT        106, 70, 113, 34, 12, 0, WS_EX_LEFT
    EDITTEXT        105, 19, 145, 35, 12, 0, WS_EX_LEFT
    EDITTEXT        107, 70, 145, 34, 12, 0, WS_EX_LEFT
    EDITTEXT        110, 182, 165, 41, 12, 0, WS_EX_LEFT
    LTEXT           "", 10, 120, 40, 124, 8, SS_LEFT, WS_EX_LEFT
    LTEXT           "", 20, 117, 75, 118, 8, SS_LEFT, WS_EX_LEFT
    LTEXT           "FECHA", 65535, 19, 18, 25, 10, SS_LEFT, WS_EX_LEFT
    LTEXT           "OBRA", 65535, 19, 40, 32, 8, SS_LEFT, WS_EX_LEFT
    LTEXT           "TRABAJADOR", 65535, 19, 75, 49, 8, SS_LEFT, WS_EX_LEFT
    LTEXT           "H.NORMAL", 65535, 19, 101, 37, 8, SS_LEFT, WS_EX_LEFT
    LTEXT           "H.EXTRA", 65535, 19, 132, 36, 8, SS_LEFT, WS_EX_LEFT
    LTEXT           "PRECIO", 65535, 70, 101, 31, 8, SS_LEFT, WS_EX_LEFT
    LTEXT           "PRECIO", 65535, 70, 132, 31, 8, SS_LEFT, WS_EX_LEFT
    LTEXT           "I.HORAS NORMAL", 65535, 118, 101, 63, 8, SS_LEFT, WS_EX_LEFT
    LTEXT           "I.HORAS EXTRAS", 65535, 118, 132, 63, 8, SS_LEFT, WS_EX_LEFT
    LTEXT           "PRIMAS", 65535, 118, 169, 33, 8, SS_LEFT, WS_EX_LEFT
    LTEXT           "TOTAL", 65535, 118, 187, 28, 8, SS_LEFT, WS_EX_LEFT
    LTEXT           "", 50, 178, 187, 45, 8, SS_LEFT, WS_EX_LEFT
    LTEXT           "", 30, 181, 117, 42, 8, SS_LEFT, WS_EX_LEFT
    LTEXT           "", 40, 179, 149, 44, 8, SS_LEFT, WS_EX_LEFT
    GROUPBOX        "", 4001, 12, 4, 232, 57, 0, WS_EX_LEFT
    GROUPBOX        "", 4002, 12, 64, 233, 25, 0, WS_EX_LEFT
    GROUPBOX        "", 4003, 12, 92, 232, 113, 0, WS_EX_LEFT
    PUSHBUTTON      "", 750, 108, 212, 55, 17, BS_BITMAP, WS_EX_LEFT
    PUSHBUTTON      "", 751, 188, 212, 55, 17, BS_BITMAP, WS_EX_LEFT
    PUSHBUTTON      "", 140, 56, 16, 12, 12, BS_BITMAP, WS_EX_LEFT
    PUSHBUTTON      "", 150, 56, 36, 12, 12, BS_BITMAP, WS_EX_LEFT
    PUSHBUTTON      "", 160, 72, 72, 12, 12, BS_BITMAP, WS_EX_LEFT
}


Saludos 

Jose.
 

Re: No se ejecuta bGotFocus a la primera

Posted: Fri Aug 16, 2019 7:40 am
by jvtecheto
armando.lagunas wrote:

Code: Select all

oNormal:bGotFocus := {|| IF(lAppend,(nPre_normal:=AputTrab->hora,nPre_extra:=AputTrab->extra,oDlg:UPDATE()), )}

lo único que veo acá es que la variable lAppend debe venir con un valor .f. al principio o en el transcurso y por eso no se ejecuta la condición del :bGotFocus
revisa el estado de la variable hasta llegar al Get correspondiente.

Saludos
Humm. creo que no es porque si le quito la condicion tiene el mismo comportamiento, de todas formas investigo el asunto.

Saludos.

Jose.

Re: No se ejecuta bGotFocus a la primera

Posted: Sat Aug 17, 2019 5:03 pm
by jvtecheto
Hola:

Creo que he detectado cuando falla el bGotFocus, si lo pruebo en otro Get funciona perfectamente creo que el problema es la validacion del Get anterior
Mirad el codigo.

Code: Select all


   REDEFINE GET oTrab VAR cTrab ID 103 OF oDlg PICTURE "9999" ;
   VALID  IF( AputTrab->( dbSeek( cTrab ) ), ( oDlg:UPDATE(),.T. ), ;
         ( cTrab := Busqueda( "Trab" ), AputTrab->( dbSeek( cTrab ) ), oDlg:UPDATE(), .T. ) )  UPDATE
   REDEFINE GET oNormal VAR nNormal ID 104 OF oDlg PICTURE "99,999.99" UPDATE
   oNormal:bGotFocus := {|| IF(lAppend,(nPre_normal:=AputTrab->hora,nPre_extra:=AputTrab->extra,oDlg:UPDATE()), )} // No funciona.
   REDEFINE GET oPre_normal VAR nPre_normal ID 106 OF oDlg PICTURE "@E 99,999.99" ;
    VALID(oDlg:Update(),.T.) UPDATE
    REDEFINE GET oExtra VAR nExtra ID 105 OF oDlg PICTURE "99,999.99" UPDATE
    oExtra:bGotFocus := {|| IF(lAppend,(nPre_extra:=AputTrab->extra,oDlg:UPDATE()), )} // Si funciona
    REDEFINE GET oPre_extra VAR nPre_extra ID 107 OF oDlg PICTURE "@E 99,999.99" ;
    VALID(oDlg:Update(),.T.) UPDATE
    REDEFINE GET oPrimas VAR nPrimas ID 110 OF oDlg PICTURE "@E 99,999.99" ;
    VALID(oDlg:Update(),.T.) UPDATE

 
Este codigo comprueba si existe el registro y de no existir llama a la funcion busqueda que presenta un cuadro de dialogo para
elegir el que queremos.

El problema esta en este codigo, el cual me funciona bien.

Code: Select all

REDEFINE GET oTrab VAR cTrab ID 103 OF oDlg PICTURE "9999" ;
   VALID  IF( AputTrab->( dbSeek( cTrab ) ), ( oDlg:UPDATE(),.T. ), ;
         ( cTrab := Busqueda( "Trab" ), AputTrab->( dbSeek( cTrab ) ), oDlg:UPDATE(), .T. ) )  UPDATE
 
Que tengo que cambiar en este codigo para que me funcione el siguiente bGotFocus() ?

Saludos.

Jose.