Controlar Gets y validaciones...

Controlar Gets y validaciones...

Postby ACC69 » Mon Jul 22, 2013 10:14 pm

Hola buenas tardes, esperando que se encuentren bien, les envio cordial saludos.

Por este medio les pido su amable ayuda de como controlar el get y en cada campo tengo validados ciertas condiciones, pero como controlar que del segundo campo me regrese al primer campo principal,espero haberme explicado y expongo el ejemplo :

Code: Select all  Expand view
DEFINE DIALOG oDlg RESOURCE "ENTSAL" TITLE "Entrada y salida personal" COLOR CLR_BLUE
  REDEFINE GET oGet[01] VAR cNomUsua  ID 101 OF oDlg PICT "@"  VALID V_NOMUSUA()
  REDEFINE GET oGet[02] VAR cCveUsua  ID 102 OF oDlg PICT "@!" VALID V_CVEUSUA()        // Aqui en caso que me valide y teclee por error nombre de usuario, que me permita regresar al primer campo cNomUsua
  REDEFINE GET oGet[03] VAR nCveMotiv ID 103 OF oDlg PICT "9"  VALID V_CVEMOTIV() ACTION SelTipMot()

  oGet[03]:bKeyDown := { |nKey| IIF( nKey == VK_F2,(oGet[03]:Assign(),Eval( oGet[03]:bAction )),"" ) }
  oGet[03]:cToolTip := "Presiona F2"

  REDEFINE SAY oSay[01] PROMPT cDescMot ID 151 OF oDlg FONT oFnt1 COLOR CLR_BLUE

  REDEFINE GET oGet[04] VAR cObservac ID 104 OF oDlg PICT "@S30" VALID V_OBSERVAC()

  REDEFINE BUTTON oBtn[01] ID 201 OF oDlg ACTION Reg_EntSal(oDlg, oLbx)


//------------------------------------------------------------------------------
STATIC FUNCTION V_NOMUSUA()
IF EMPTY(cNomUsua)
MsgAlert("Error: Teclear nombre usuario!")

oGet[01]:SetFocus()

RETURN .F.
ENDIF
RETURN (.T.)

//------------------------------------------------------------------------------
STATIC FUNCTION V_CVEUSUA()
(S01)->( DbSeek(cNomUsua+cCveUsua) )

IF (S01)->( !FOUND() )
MsgAlert("Error: Nombre de usuario ó clave no válido")

oGet[02]:SetFocus()

RETURN .F.
ENDIF
RETURN(.T.)

//------------------------------------------------------------------------------
STATIC FUNCTION V_CVEMOTIV()
(S02)->( DbSeek(STR(nCveMotiv,1)) )

IF (S02)->( FOUND() )
cDescMot := (S02)->DESCMOTI
ELSE
MsgAlert("Error: Código no encontrado")

RETURN .F.
ENDIF

oSay[01]:Refresh()
RETURN(.T.)

//------------------------------------------------------------------------------
STATIC FUNCTION V_OBSERVAC()
IF !GetKeyState( VK_RETURN ) .and. !GetKeyState( VK_DOWN ) .and. !GetKeyState( VK_TAB )
RETURN( .T. )
ENDIF

IF EMPTY(cObservac)
MsgAlert("Error: Favor teclear observación o entrada normal")

RETURN .F.
ENDIF
RETURN(.T.)

//------------------------------------------------------------------------------
FUNCTION SelTipMot()
LOCAL oDlg, oLbx

DbSelectArea(S02)

(S02)->( SetSeek(STR(nCveMotiv,1)) )

DEFINE DIALOG oDlg RESOURCE "SELCAT" TITLE "Catálogo tipos de motivos"
REDEFINE LISTBOX oLbx FIELDS STR((S02)->CVEMOTIV,1), SUBS((S02)->DESCMOTI,1,16);
HEADER "Código", "Descripción Motivo";
SIZES 30,50;
ALIAS (S02)->(ALIAS()) ID 101 OF oDlg

oLbx:aJustify := {0,0}
oLbx:lCellStyle := .T.
oLbx:nClrForeHead:= CLR_BLUE
oLbx:bLDblClick := {|| oDlg:END()}
oLbx:bKeyDown := {| nKey| IF(nKey = 13, oDlg:END(), .T.)}
ACTIVATE DIALOG oDlg

nCveMotiv := (S02)->CVEMOTIV

oGet[03]:Refresh()

Release oDlg, oLbx
RETURN NIL

Espero haberme explicado, que no recuerdo como adjuntar la imagen..

Saludos cordiales.

Atte: Adrian C. C.
acc69@hotmail.com
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Controlar Gets y validaciones...

Postby joseluisysturiz » Tue Jul 23, 2013 1:16 am

Para saltar al objeto que quieras, en tu caso un oGet, esta bien como usas el oGet:SetFocus(), agregale oGet:Refresh(), pero debes pasar el oGet como parametro en tu funcion, a menos que tu oGet sea Public, espero haber entendido lo que quieres hacer, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Controlar Gets y validaciones...

Postby ACC69 » Tue Jul 23, 2013 1:25 am

joseluisysturiz wrote:Para saltar al objeto que quieras, en tu caso un oGet, esta bien como usas el oGet:SetFocus(), agregale oGet:Refresh(), pero debes pasar el oGet como parametro en tu funcion, a menos que tu oGet sea Public, espero haber entendido lo que quieres hacer, saludos... :shock:


Hola Jose Luis gracias por responder, lo que quiero hacer, como el primer campo no puedo darle ENTER por estar vacio, logico que me valida que tengo que teclear al segundo campo igual me valida, pero que pasa si tecleo bien la clave, y nombre de usuario esta mal, y quiero retornar al primer campo pero no me deja, porque me valida que debo teclear la clave, a pesar este o no vacio la clave, no me deja retornar al primero y corregir al primer campo de usuario, y siempre tendria que salirme con escape, y quiero evitar salirme con escape,habra algun otro metodo ?

Ah como comentario el oGet es Static , no publica..durante el proceso ...del modulo
Saludos amigo.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Controlar Gets y validaciones...

Postby joseluisysturiz » Tue Jul 23, 2013 1:38 am

Ok, creo entendi mejor, yo te recomendaria que no uses valid en ninguno de los GET, sino que en un boton ACEPTAR, llames na funcion que entonces valide si el usuario y la clave son correctas, si alguno de los datos son incorrectos, entonces lo informas y le das el focus al GET del campo errado, asi hago cuando hay pocos GET para no validar uno por uno, al estilo WEB, y en mi sistema de USUARIO y CLAVE hago como te indico, asi nunca te obliga a entrar dato correcto en ningun GET al momento, sino despues en el boton ACEPTAR o OK, como lo quieras llamar, espero haberte dado una buena idea o solucion, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Controlar Gets y validaciones...

Postby ACC69 » Tue Jul 23, 2013 2:04 am

joseluisysturiz wrote:Ok, creo entendi mejor, yo te recomendaria que no uses valid en ninguno de los GET, sino que en un boton ACEPTAR, llames na funcion que entonces valide si el usuario y la clave son correctas, si alguno de los datos son incorrectos, entonces lo informas y le das el focus al GET del campo errado, asi hago cuando hay pocos GET para no validar uno por uno, al estilo WEB, y en mi sistema de USUARIO y CLAVE hago como te indico, asi nunca te obliga a entrar dato correcto en ningun GET al momento, sino despues en el boton ACEPTAR o OK, como lo quieras llamar, espero haberte dado una buena idea o solucion, saludos... :shock:


Mas o menos me das la idea, pero ...tengo 4 y me falta agregar un campo mas que serian 5 campos, que cada campo los valido sin dejar el campo vacio, tanto como ENTER como pasar con el mouse ,tengo en cada valid en cada funcion esta instruccion:

IF !GetKeyState( VK_RETURN ) .and. !GetKeyState( VK_DOWN ) .and. !GetKeyState( VK_TAB )
RETURN( .T. )
ENDIF

Me permite regresar al primer campo, peroooo...con el mouse no me lo valida,ya que me lo brinca al seleccionar equis campo, y me deja dejar hasta el ultimo campo a teclear y los anteriores me los deja vacios, solo cuando uso el mouse,y con ENTER, no me lo permite hacer,eso es para que el usuario no permita hacer eso.

Dame una idea un ejemplo como haria para controlar desde boton aceptar todos los campos validados, que son 5,por fas.

Gracias y te lo agradecere mucho amigo.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Controlar Gets y validaciones...

Postby joseluisysturiz » Tue Jul 23, 2013 2:35 am

esto lo hice a vuelo de pajaro, nose si habra por alli alguna incoherencia, pero creo deberia ayudarte lo mas posible, solo espero no te enrede mas, saludos... :shock:

Code: Select all  Expand view

LOCAL cVar[5], oGet[5], oDlg, oBtn[2]

PROCEDURE lectura()

   DEFINE DIALOG oDlg RESOURCE "ENTSAL" TITLE "X"
     REDEFINE GET oGet[1] VAR cVar[1] ID 101 OF oDlg PICT "@"
     REDEFINE GET oGet[2] VAR cVar[2] ID 102 OF oDlg PICT "@"
     REDEFINE GET oGet[3] VAR cVar[3] ID 103 OF oDlg PICT "@"
     REDEFINE GET oGet[4] VAR cVar[4] ID 104 OF oDlg PICT "@"
     REDEFINE GET oGet[5] VAR cVar[5] ID 105 OF oDlg PICT "@"

     REDEFINE BUTTON oBtn[1] ID 201 OF oDlg ;
      ACTION valida_campo( cVar, oGet, oDlg ) ;
      PROMPT "Aceptar" ;
      WHEN ( !EMPTY(aVar[1]) .and. !EMPTY(aVar[2]) .and. !EMPTY(aVar[3]) .and. ;
         !EMPTY(aVar[4]) .and. !EMPTY(aVar[5]) )

     REDEFINE BUTTON oBtn[2] ID 202 OF oDlg ;
      ACTION oDlg:END() ;
      PROMPT "Cancelar"
     
   ACTIVATE DIALOG oDlg CENTER
   
RETURN

PROCEDURE valida_campo( cVar, oGet, oDlg )
// POR DEFECTO TODOS LOS CAMPO DEBERAN TENER ALGO, PORQUE SINO
// NO SE ACTIVA BOTON ACEPTAR...
// SI LO DESEAS PUEDES CAMBIAR DO CASE POR IF...
   
   DO CASE
      CASE !EMPTY(cVar[1])
         .....validas lo que tengas que validar en este campo

      CASE !EMPTY(cVar[2])
         .....validas lo que tengas que validar en este campo

      CASE !EMPTY(cVar[3])
         .....validas lo que tengas que validar en este campo

      CASE !EMPTY(cVar[4])
         .....validas lo que tengas que validar en este campo

      CASE !EMPTY(cVar[5])
         .....validas lo que tengas que validar en este campo
     
   END CASE
   
RETURN
 
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Controlar Gets y validaciones...

Postby ACC69 » Tue Jul 23, 2013 2:47 am

joseluisysturiz wrote:esto lo hice a vuelo de pajaro, nose si habra por alli alguna incoherencia, pero creo deberia ayudarte lo mas posible, solo espero no te enrede mas, saludos... :shock:

Code: Select all  Expand view

LOCAL cVar[5], oGet[5], oDlg, oBtn[2]

PROCEDURE lectura()

   DEFINE DIALOG oDlg RESOURCE "ENTSAL" TITLE "X"
     REDEFINE GET oGet[1] VAR cVar[1] ID 101 OF oDlg PICT "@"
     REDEFINE GET oGet[2] VAR cVar[2] ID 102 OF oDlg PICT "@"
     REDEFINE GET oGet[3] VAR cVar[3] ID 103 OF oDlg PICT "@"
     REDEFINE GET oGet[4] VAR cVar[4] ID 104 OF oDlg PICT "@"
     REDEFINE GET oGet[5] VAR cVar[5] ID 105 OF oDlg PICT "@"

     REDEFINE BUTTON oBtn[1] ID 201 OF oDlg ;
      ACTION valida_campo( cVar, oGet, oDlg ) ;
      PROMPT "Aceptar" ;
      WHEN ( !EMPTY(aVar[1]) .and. !EMPTY(aVar[2]) .and. !EMPTY(aVar[3]) .and. ;
         !EMPTY(aVar[4]) .and. !EMPTY(aVar[5]) )

     REDEFINE BUTTON oBtn[2] ID 202 OF oDlg ;
      ACTION oDlg:END() ;
      PROMPT "Cancelar"
     
   ACTIVATE DIALOG oDlg CENTER
   
RETURN

PROCEDURE valida_campo( cVar, oGet, oDlg )
// POR DEFECTO TODOS LOS CAMPO DEBERAN TENER ALGO, PORQUE SINO
// NO SE ACTIVA BOTON ACEPTAR...
// SI LO DESEAS PUEDES CAMBIAR DO CASE POR IF...
   
   DO CASE
      CASE !EMPTY(cVar[1])
         .....validas lo que tengas que validar en este campo

      CASE !EMPTY(cVar[2])
         .....validas lo que tengas que validar en este campo

      CASE !EMPTY(cVar[3])
         .....validas lo que tengas que validar en este campo

      CASE !EMPTY(cVar[4])
         .....validas lo que tengas que validar en este campo

      CASE !EMPTY(cVar[5])
         .....validas lo que tengas que validar en este campo
     
   END CASE
   
RETURN
 


Ok gracias mas o menos me das el tiro la idea,pero ....no es posible hacerlo en cada campo cada valid ? como en los tiempos de clipper,obvio que no se usaba mucho el mouse, porque con fivewin, con la instruccion que te indique :

Code: Select all  Expand view
IF !GetKeyState( VK_RETURN ) // .and. !GetKeyState( VK_DOWN ) .and. !GetKeyState( VK_TAB )
     RETURN( .T. )
 ENDIF


Me funciona si todo fuera a puro teclado, pero los usuarios usan mas el mouse al seleccionar equis campo, y se brinca al siguiente sin validarme, o habra alguna forma o metodo que con el mouse me valide ,que se yo!, espero que el maestro Antonio Linares nos pueda ayudar con el tema de validaciones de cada campo,pero este proceso si me es importante que se valide . Pero hare pruebas con tu ejemplo Jose Luis y ver si se me prende el foco solucionar otra manera.

Gracias amigo.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Controlar Gets y validaciones...

Postby joseluisysturiz » Tue Jul 23, 2013 2:55 am

Claro que puedes hacer los VALID individual, solo tienes que llamar a la funcion valida_campo() que te envie, pero en vez de enviar cVar, enviarias cVar[n], en cada GET, pero para mi , creo es mas trabajo, creo le puedes dar libertad al usuario para que llene los campos sin un orden a menos que en valor de un campo dependa de la validacion de otro, al final vas a validar todos los campo igual, te di esta idea porque al principio nombrastes solo campo usuario y campo clave, si puedes coloca una imagen de tu captura de datos y que quieres validar en cada GET para tratar ayudarte mas, puedes realizar validacion cuando el GET pierda el focus, es decir, cuando el usuario salta de GET en GET con el mouse, aunque sigo creyendo que como te lo dije de validaciones al final con el boton es mas controlable y menos problematico, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Controlar Gets y validaciones...

Postby ACC69 » Tue Jul 23, 2013 3:48 am

joseluisysturiz wrote:Claro que puedes hacer los VALID individual, solo tienes que llamar a la funcion valida_campo() que te envie, pero en vez de enviar cVar, enviarias cVar[n], en cada GET, pero para mi , creo es mas trabajo, creo le puedes dar libertad al usuario para que llene los campos sin un orden a menos que en valor de un campo dependa de la validacion de otro, al final vas a validar todos los campo igual, te di esta idea porque al principio nombrastes solo campo usuario y campo clave, si puedes coloca una imagen de tu captura de datos y que quieres validar en cada GET para tratar ayudarte mas, puedes realizar validacion cuando el GET pierda el focus, es decir, cuando el usuario salta de GET en GET con el mouse, aunque sigo creyendo que como te lo dije de validaciones al final con el boton es mas controlable y menos problematico, saludos... :shock:


Hola amigo, es lo que intente hacer adjuntar la imagen, pero no recuerdo, ya que tiene tiempo que deje de programar y por otra parte perdi todos mis codigos fuentes en que se me daño mi disco duro y no pude recuperar totalmente nada, estoy rehaciendo o intentando rehacer de nuevo pero a la vez me deprime es como empezar de cero...ya intente con las opciones de fivewin, pero no logro subir la imagen que quiero hacer...!
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Controlar Gets y validaciones...

Postby joseluisysturiz » Tue Jul 23, 2013 3:54 am

Para subir imagen preferiblemente usa http://www.imageshack.us/ suscribete, subi tu imagen de tamaño para foro, copias en link, luego aca en el foro le das a la etiqueta Img y entre , colocas el link que te de http://www.imageshack.us/, no te desesperes, para eso esta el foro, para ayduarnos unos a los otros, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Controlar Gets y validaciones...

Postby ACC69 » Tue Jul 23, 2013 5:08 am

joseluisysturiz wrote:Para subir imagen preferiblemente usa http://www.imageshack.us/ suscribete, subi tu imagen de tamaño para foro, copias en link, luego aca en el foro le das a la etiqueta Img y entre , colocas el link que te de http://www.imageshack.us/, no te desesperes, para eso esta el foro, para ayduarnos unos a los otros, saludos... :shock:


Esta es la imagen...

Image
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Controlar Gets y validaciones...

Postby joseluisysturiz » Tue Jul 23, 2013 5:19 am

ACC69 wrote:
joseluisysturiz wrote:Para subir imagen preferiblemente usa http://www.imageshack.us/ suscribete, subi tu imagen de tamaño para foro, copias en link, luego aca en el foro le das a la etiqueta Img y entre , colocas el link que te de http://www.imageshack.us/, no te desesperes, para eso esta el foro, para ayduarnos unos a los otros, saludos... :shock:


Esta es la imagen...

Image


No llego imagen man, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Controlar Gets y validaciones...

Postby ACC69 » Tue Jul 23, 2013 2:26 pm

joseluisysturiz wrote:
ACC69 wrote:
joseluisysturiz wrote:Para subir imagen preferiblemente usa http://www.imageshack.us/ suscribete, subi tu imagen de tamaño para foro, copias en link, luego aca en el foro le das a la etiqueta Img y entre , colocas el link que te de http://www.imageshack.us/, no te desesperes, para eso esta el foro, para ayduarnos unos a los otros, saludos... :shock:


Esta es la imagen...


No llego imagen man, saludos... :shock:



Hola buenos dias a todos, ahi va la imagen, de como puedo validar cada campo y que me permita retornar al campo anterior en caso que este vacio en el campo activo ..

Image

Saludos y buen dia !
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Controlar Gets y validaciones...

Postby FranciscoA » Tue Jul 23, 2013 3:04 pm

Hola Adrian.
Como te dice Jose Luis, utiliza tus validaciones a como lo vienes haciendo por cada Get, pero al final, en el boton Aceptar, vuelve a validar.
Ej:
Redefine Get oGet1 Var... Valid TuFuncion(var1,var2...)
Redefine Get oGet2 Var... Valid TuFuncion(var1,var2...)
Redefine Get oGet3 Var... Valid TuFuncion(var1,var2...)

Redefine button oBt1....... Action TodoOK(var1,var3,varx...)

//----------------------------------------------------------------------
Function TodoOk (var1,var3,varx...)

if empty(var1) .or. empty(var3...) //o cualquier otro tipo de validacion
Return .f.
endif

Return .t.

Tambien prueba a usar la clausula WHEN en los gets
Ej:
Redefine Get oGet1 Var... Valid TuFuncion(var1,var2...)
Redefine Get oGet2 Var... Valid TuFuncion(var1,var2...) WHEN var1
Redefine Get oGet3 Var... Valid TuFuncion(var1,var2...) WHEN var2 etc

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Controlar Gets y validaciones...

Postby karinha » Tue Jul 23, 2013 3:26 pm

Una duda: usas ENCRYPT / DECRYPT ???
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7794
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: groiss and 42 guests