Page 1 of 1

Saltar VALIDs en Dialogo

Posted: Fri May 24, 2019 6:58 pm
by jvtecheto
Hola amigos:

Cuando editamos datos en un dialogo, tenemos valids en varios GETs, es habitual entonces cuando entras en uno de ellos
no funciona la salida del dialogo, el boton de cancelar.

¿Como se pueden saltar los VALIDs de los GETs y conseguir salir al pulsar el boton de cancelar.?

Gracias por vuestra inestimable ayuda.

Saludos

Jose

Re: Saltar VALIDs en Dialogo

Posted: Fri May 24, 2019 7:16 pm
by karinha

Code: Select all

FUNCTION PRODUTOS()

   REDEFINE GET aGet[4] VAR nProduto PICTURE "@K" ID 23 OF oDlg              ;
      UPDATE COLORS CLR_BLACK, CLR_WHITE FONT oFont BITMAP "BUSCAR"          ;
      VALID(  PEGA_PRODUTOS_NFE(  oLbx, aGet, nProduto, DeOndePartiu := "BUSCAPORCODIGO" ) )
      ACTION...

   aGet[4]:cToolTip := OemToAnsi( "<F7> - Mostra os Produtos(Estoque) Cadastrados" )
   aGet[4]:lBtnTransparent := .T.       // transparent button
   aGet[4]:bKeyDown := { |nKey| IF( nKey == VK_F7, Eval( aGet[4]:bAction ), Nil ) }

...// AQUI:

   REDEFINE BUTTON oSaida ID 303  OF oDlg                                    ;
            ACTION ( oDlg:End() ) CANCEL

...

RETURN NIL

FUNCTION PEGA_PRODUTOS_NFE( oLbx, aGet, CodProduto, DeOndePartiu )

   LOCAL nNProduto, cCNomeProd, nVrProduto

   IF GETASYNCKEY( VK_UP )
      RETURN( .T. )
   ENDIF

   IF GETASYNCKEY( VK_DOWN )
      RETURN( .T. )
   ENDIF

   IF EMPTY( CodProduto )
      RETURN( .T. )
   ENDIF

...

RETURN NIL
 
Saludos.

Re: Saltar VALIDs en Dialogo

Posted: Fri May 24, 2019 7:27 pm
by jvtecheto
Gracias Joao.

El caso es que la aplicacion que estoy migrando desde la version 2.1 a 19.03 tenia esa clausula y creia que era redundante, no me
acordaba que era para eso y lo habia borrado.

Por cierto voy creo por un 80% completado, practicamente esta operativa para mi, no para un usuario que no conozca la aplicacion.

El caso es que se salta los VALIDs uno a uno , si tienes varios,

¿No habra alguna manera de saltarlos todos y salir sin mas?

Saludos.

Jose.

Re: Saltar VALIDs en Dialogo

Posted: Fri May 24, 2019 7:32 pm
by karinha
Disculpa, no comprendo. Puede muestra el código fuente?

Gracias.

Saludos.

Re: Saltar VALIDs en Dialogo

Posted: Fri May 24, 2019 7:36 pm
by jvtecheto
[quote="karinha"]Disculpa, no comprendo. Puede muestra el código fuente?

Si, claro.
Tengo varios VALIDs en el dialogo.
por ejemplo:

Code: Select all


  REDEFINE GET oObra VAR cObra ID 102 OF oDlg ;
    PICTURE "9999";
    VALID ( (Rellena(oObra)) .AND.;
    (IF( ApuaObr->(DbSeek(cObra)),.T.,(cObra:=Busqueda("Obr"),ApuaObr->(DbSeek(cObra)),.T.) ) ) .AND.;
    (IF(!ApuaObr->Cerrada,(oDlg:UPDATE(),oArt:SetFocus(),.T.),(Stop("¡Obra Cerrada!"),oObra:bGotFocus:={ || cObra:="",oObra:SelectAll(),oDlg:Refresh()},.F.))) ) UPDATE

  oObra:bKeyDown:={|nKey| IIF(nKey=VK_ADD,(cObra:=Busqueda("Obr"),oArt:SetFocus(),oDlg:Update()), ) }

  REDEFINE GET oArt VAR cArt ID 103 OF oDlg ;
    PICTURE "9999";
    VALID (Rellena(oArt)) .AND.;
    ( IF( ApuaArt->(DbSeek(cArt)),(oDlg:UPDATE(),oCantidad:SetFocus(),.T.),;
    (cArt:=Busqueda("Art"),ApuaArt->(DbSeek(cArt)),oDlg:Update(),oCantidad:SetFocus(),.T.) ) ) UPDATE

   // Luego al final tengo los 2 botones.
   REDEFINE BTNBMP ID 750 RESOURCE "ACCEPT" OF oDlg ACTION IF(lSalida,(lSave:= .T. , oDlg:End()),STOP("Introduzca todos _"))
   REDEFINE BTNBMP ID 751 RESOURCE "CANCEL" OF oDlg ACTION oDlg:End() CANCEL
 
Entonces para salir del dialogo si estoy en el primer GET oObra, al pulsar el boton de CANCEL me lleva al segundo
VALID oArt. No sale directamente.

Saludos.

Jose.

Re: Saltar VALIDs en Dialogo

Posted: Fri May 24, 2019 7:41 pm
by karinha
con BTNBMP ,

Code: Select all

   REDEFINE BTNBMP oBtn1 ID 750 RESOURCE "ACCEPT" OF oDlg ACTION IF(lSalida,(lSave:= .T. , oDlg:End()),STOP("Introduzca todos _"))


   oBtn1:lCancel := .T.

   REDEFINE BTNBMP oBtn2 ID 751 RESOURCE "CANCEL" OF oDlg ACTION oDlg:End()

   oBtn2:lCancel := .T.
 
Saludos.

Re: Saltar VALIDs en Dialogo

Posted: Fri May 24, 2019 7:49 pm
by jvtecheto
Eso Joao.

Muchas gracias por ayudar siempre, en serio es un placer contar con usuarios como tu.

Yo he vuelto a Fivewin por los usuarios del foro y Antonio.

:P

Saludos.

Jose.