Page 1 of 2
Favor Ayuda con Valid en Get URGENTE
Posted: Tue Aug 27, 2019 1:39 am
by remtec
Amigos
Muy buenas noches.
Estoy complicado, me estoy dando vueltas y no encuentro la Solucion.
Necesito Validar un GET, cuando la variable Lic1 tome el valor "S" o "N", debe recibir solo estas 2 letras, pero además que realice lo que muestro en el Codigo:
Desde ya muchas gracias.
Saludos
Antonio
Code: Select all
@ 150,10 SAY "LICENCIA [S/N]" PIXEL OF oDlg99 FONT oFont993 COLORS RGB(0, 60, 179)
@ 150,73 GET oLic1 Var Lic1 SIZE 10,10 PIXEL OF oDlg99 PICTURE "!" COLOR RGB(0,0,128) FONT oFont993 UPDATE;
VALID (IF((Lic1 # "S".and.Lic1 # "N" ),(MsgStop("Debe Digitar S/N","Error"),.F.),.T.),oDlg99:Refresh()) <--- Valida que no funciona
If Lic1 = "S" <-------- Necesito que se ejecute esta Linea, Cada ves que cambie el Get Lic1.
@ 165,05 GROUP oGroup992 TO 220,270 PIXEL PROMPT " ANTECEDENTES LICENCIA MEDICA " COLOR RGB(0, 77, 0), (128, 0, 0) FONT oFont992 OF oDlg99 TRANSPARENT
@ 185,010 SAY "Tipo Licencia" PIXEL OF oDlg99 FONT oFont993
@ 185,130 SAY "Nro. Licencia" PIXEL OF oDlg99 FONT oFont993
@ 200,010 SAY "Inicio" PIXEL OF oDlg99 FONT oFont993
@ 200,95 SAY "Término" PIXEL OF oDlg99 FONT oFont993
@ 200,185 SAY "Cant. Dias" PIXEL OF oDlg99 FONT oFont993
@ 185,58 GET oTip_Lic1 Var Tip_Lic1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "!" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 185,180 GET oNro_Lic1 Var Nro_Lic1 SIZE 66,10 PIXEL OF oDlg99 PICTURE "@!" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 200,32 GET oFec_Ini1 Var Fec_Ini1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "@d" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 200,127 GET oFec_Fin1 Var Fec_Fin1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "@d" COLOR RGB(0,0,128) FONT oFont993 UPDATE;
Valid Calcula_Dias(oDia_Lic1,oDlg99,Fec_Ini1,Fec_Fin1)
@ 200,223 SAY oDia_Lic1 Var Dia_Lic1 SIZE 20,10 PIXEL OF oDlg99 PICTURE "999" COLOR RGB(0,0,128) FONT oFont993 BORDER
Else
Stor 0 to dia_lic1
Stor Spac(15) to Nro_Lic1
Tip_Lic1=" "
Stor Ctod(" / / ") to Fec_Ini1,Fec_Fin1
Endif
Re: Favor Ayuda con Valid en Get
Posted: Tue Aug 27, 2019 9:49 am
by jvtecheto
Hola amigo:
Se me ocurre que podrias hacer algo como esto
Code: Select all
Local lLic1:=.F.
@ 150,10 SAY "LICENCIA [S/N]" PIXEL OF oDlg99 FONT oFont993 COLORS RGB(0, 60, 179)
@ 150,73 GET oLic1 Var Lic1 SIZE 10,10 PIXEL OF oDlg99 PICTURE "!" COLOR RGB(0,0,128) FONT oFont993 UPDATE;
VALID (IF(( Lic1 != "S" .OR. Lic1 !="N" ),(MsgStop("Debe Digitar S/N","Error"),.F.),lLic1:=.T.),oDlg99:Refresh()) <--- Valida que no funciona
IF lLic1
If Lic1 = "S"
@ 165,05 GROUP oGroup992 TO 220,270 PIXEL PROMPT " ANTECEDENTES LICENCIA MEDICA " COLOR RGB(0, 77, 0), (128, 0, 0) FONT oFont992 OF oDlg99 TRANSPARENT
@ 185,010 SAY "Tipo Licencia" PIXEL OF oDlg99 FONT oFont993
@ 185,130 SAY "Nro. Licencia" PIXEL OF oDlg99 FONT oFont993
@ 200,010 SAY "Inicio" PIXEL OF oDlg99 FONT oFont993
@ 200,95 SAY "Término" PIXEL OF oDlg99 FONT oFont993
@ 200,185 SAY "Cant. Dias" PIXEL OF oDlg99 FONT oFont993
@ 185,58 GET oTip_Lic1 Var Tip_Lic1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "!" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 185,180 GET oNro_Lic1 Var Nro_Lic1 SIZE 66,10 PIXEL OF oDlg99 PICTURE "@!" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 200,32 GET oFec_Ini1 Var Fec_Ini1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "@d" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 200,127 GET oFec_Fin1 Var Fec_Fin1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "@d" COLOR RGB(0,0,128) FONT oFont993 UPDATE;
Valid Calcula_Dias(oDia_Lic1,oDlg99,Fec_Ini1,Fec_Fin1)
@ 200,223 SAY oDia_Lic1 Var Dia_Lic1 SIZE 20,10 PIXEL OF oDlg99 PICTURE "999" COLOR RGB(0,0,128) FONT oFont993 BORDER
Else
Stor 0 to dia_lic1
Stor Spac(15) to Nro_Lic1
Tip_Lic1=" "
Stor Ctod(" / / ") to Fec_Ini1,Fec_Fin1
Endif
ENDIF
Saludos.
Jose
Re: Favor Ayuda con Valid en Get
Posted: Tue Aug 27, 2019 10:50 am
by jvtecheto
Hola Perdona por el lapsus.
Las validaciones debes hacerlas una vez cierres el dialog ya que de lo contrario el dialogo
lee las valores iniciales de las variables y no las actualiza aunque hagas Update al dialogo, solamente las guarda una vez lo has cerrado entonces si puedes validar con
los nuevos datos introducidos, si necesitas esas validaciones sin cerrar el dialogo deberias crearte una funcion y llamarla desde el VALID .
Espero haberme explicado bien.
Perdona si te he liado mas.
Saludos.
Jose.
Re: Favor Ayuda con Valid en Get
Posted: Tue Aug 27, 2019 11:03 am
by remtec
Hola Jose
Muy buen dia, muchas gracias por responder.
Probare lo ultimo que me indicas, ya que tu primera sugerencia me dio error. Ahora tendré que ver como creo la función de Validación
, para que me actualice oDlg99.
Comentare luego de aplicarla como me sugeres.
Muchos Saludos.
Antonio
Este error me dio la primera sugerencia:
Code: Select all
c:\util\hb32\bin\harbour .\ActuaConsu.PRG /n /gc0 /q /Ic:\util\hb32\include;c:\util\fwh1709\include /w0 /Oobj\ActuaConsu.c
Harbour 3.2.0dev (r1506171039)
Copyright (c) 1999-2015, http://harbour-project.org/
.\ActuaConsu.PRG(1524) Error E0030 Syntax error "syntax error at '@'"
1 error
No code generated.
** error 1 ** deleting .\obj\ActuaConsu.OBJ
Re: Favor Ayuda con Valid en Get
Posted: Tue Aug 27, 2019 2:23 pm
by karinha
Muestre esta línea:
ActuaConsu.PRG(1524)
Saludos.
Re: Favor Ayuda con Valid en Get
Posted: Tue Aug 27, 2019 2:29 pm
by remtec
Hola Amigos
No doy con la solucion que pueda mostrar dialogo del Lic1 = "S".
Lo he modificado de esta forma y nada.
En espera de sugerencias.
Muchos Saludos.
Antonio
Code: Select all
@ 150,10 SAY "LICENCIA [S/N]" PIXEL OF oDlg99 FONT oFont993 COLORS RGB(0, 60, 179)
@ 150,73 GET oLic1 Var Lic1 SIZE 10,10 PIXEL OF oDlg99 PICTURE "!" COLOR RGB(0,0,128) FONT oFont993 UPDATE;
VALID (Licencia(Lic1,oDlg99))
If Lic1 = "S"
@ 165,05 GROUP oGroup992 TO 220,270 PIXEL PROMPT " ANTECEDENTES LICENCIA MEDICA " COLOR RGB(0, 77, 0), (128, 0, 0) FONT oFont992 OF oDlg99 TRANSPARENT
@ 185,010 SAY "Tipo Licencia" PIXEL OF oDlg99 FONT oFont993
@ 185,130 SAY "Nro. Licencia" PIXEL OF oDlg99 FONT oFont993
@ 200,010 SAY "Inicio" PIXEL OF oDlg99 FONT oFont993
@ 200,95 SAY "Término" PIXEL OF oDlg99 FONT oFont993
@ 200,185 SAY "Cant. Dias" PIXEL OF oDlg99 FONT oFont993
@ 185,58 GET oTip_Lic1 Var Tip_Lic1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "!" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 185,180 GET oNro_Lic1 Var Nro_Lic1 SIZE 66,10 PIXEL OF oDlg99 PICTURE "@!" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 200,32 GET oFec_Ini1 Var Fec_Ini1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "@d" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 200,127 GET oFec_Fin1 Var Fec_Fin1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "@d" COLOR RGB(0,0,128) FONT oFont993 UPDATE;
Valid Calcula_Dias(oDia_Lic1,oDlg99,Fec_Ini1,Fec_Fin1)
@ 200,223 SAY oDia_Lic1 Var Dia_Lic1 SIZE 20,10 PIXEL OF oDlg99 PICTURE "999" COLOR RGB(0,0,128) FONT oFont993 BORDER
Else
Stor 0 to dia_lic1
Stor Spac(15) to Nro_Lic1
Tip_Lic1=" "
Stor Ctod(" / / ") to Fec_Ini1,Fec_Fin1
Endif
....
....
Function Licencia(lice,oDlg99)
If (lice #"S".and.lice#"N")
MsgStop("Error, Debe Digitar [S/N]")
Return .f.
Endif
oDlg99:Update()
oDlg99:Refresh()
Return .t.
Re: Favor Ayuda con Valid en Get
Posted: Tue Aug 27, 2019 2:33 pm
by remtec
karinha wrote:Muestre esta línea:
ActuaConsu.PRG(1524)
Saludos.
Code: Select all
VALID (IF(( Lic1 != "S" .OR. Lic1 !="N" ),(MsgStop("Debe Digitar S/N","Error"),.F.),lLic1:=.T.),oDlg99:Refresh()) <--- Aqui daba el error al poner ",oDlg99:Refresh()"
Hola Amigo como estas.
Mira esta es la linea original que mostraba el Error, pero ya he cambios a ver si doy con la solucion como muestro en el ultimo post y nada.
Saludos
Antonio.
Re: Favor Ayuda con Valid en Get
Posted: Tue Aug 27, 2019 2:41 pm
by karinha
Ponga el VALID en una FUNCTION, és mejor para el controle de IF...ELSIF, etc.
Saludos.
Re: Favor Ayuda con Valid en Get
Posted: Tue Aug 27, 2019 3:12 pm
by remtec
Hola Karinha
Muchas gracias por responder.
Mira ya lo habia puesto, asi lo tengo en una funcion, pero no funciona, no activa el Dialogo del " Lic1 = "S"".
Quedo atento a los comentarios.
Saludos
Antonio
Code: Select all
@ 150,10 SAY "LICENCIA [S/N]" PIXEL OF oDlg99 FONT oFont993 COLORS RGB(0, 60, 179)
@ 150,73 GET oLic1 Var Lic1 SIZE 10,10 PIXEL OF oDlg99 PICTURE "!" COLOR RGB(0,0,128) FONT oFont993 UPDATE;
VALID (Licencia(Lic1,oDlg99))
If Lic1 = "S"
@ 165,05 GROUP oGroup992 TO 220,270 PIXEL PROMPT " ANTECEDENTES LICENCIA MEDICA " COLOR RGB(0, 77, 0), (128, 0, 0) FONT oFont992 OF oDlg99 TRANSPARENT
@ 185,010 SAY "Tipo Licencia" PIXEL OF oDlg99 FONT oFont993
@ 185,130 SAY "Nro. Licencia" PIXEL OF oDlg99 FONT oFont993
@ 200,010 SAY "Inicio" PIXEL OF oDlg99 FONT oFont993
@ 200,95 SAY "Término" PIXEL OF oDlg99 FONT oFont993
@ 200,185 SAY "Cant. Dias" PIXEL OF oDlg99 FONT oFont993
@ 185,58 GET oTip_Lic1 Var Tip_Lic1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "!" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 185,180 GET oNro_Lic1 Var Nro_Lic1 SIZE 66,10 PIXEL OF oDlg99 PICTURE "@!" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 200,32 GET oFec_Ini1 Var Fec_Ini1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "@d" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 200,127 GET oFec_Fin1 Var Fec_Fin1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "@d" COLOR RGB(0,0,128) FONT oFont993 UPDATE;
Valid Calcula_Dias(oDia_Lic1,oDlg99,Fec_Ini1,Fec_Fin1)
@ 200,223 SAY oDia_Lic1 Var Dia_Lic1 SIZE 20,10 PIXEL OF oDlg99 PICTURE "999" COLOR RGB(0,0,128) FONT oFont993 BORDER
Else
Stor 0 to dia_lic1
Stor Spac(15) to Nro_Lic1
Tip_Lic1=" "
Stor Ctod(" / / ") to Fec_Ini1,Fec_Fin1
Endif
Function Licencia(lice,oDlg99)
If (lice #"S".and.lice#"N")
MsgStop("Error, Debe Digitar [S/N]")
Return .f.
Endif
oDlg99:Update()
oDlg99:Refresh()
Return .t.
Re: Favor Ayuda con Valid en Get Urgente
Posted: Tue Aug 27, 2019 4:11 pm
by remtec
Amigos
Alguna Sugerencia ??
Saludos
Antonio
Re: Favor Ayuda con Valid en Get URGENTE
Posted: Tue Aug 27, 2019 5:37 pm
by karinha
Mira:
Code: Select all
// Testing GETs
#include "FiveWin.ch"
FUNCTION Main()
LOCAL oDlg, oGet
LOCAL Lic1 := " "
SET _3DLOOK ON
DEFINE DIALOG oDlg TITLE "TGet from " + FWDESCRIPTION
@ 1, 2 SAY "LICENCIA [S/N]" OF oDlg
@ 1, 7 GET oGet VAR Lic1 OF oDlg SIZE 20, 10 PICTURE "@K!" UPDATE ;
CENTER COLORS CLR_BLACK, CLR_WHITE ;
VALID ( Licencia( Lic1, oGet, oDlg ) )
@ 3, 11 BUTTON "Ok" ACTION( oDlg:End() ) CANCEL //-> HABILITA EL VALID.
ACTIVATE DIALOG oDlg CENTERED
RETURN NIL
FUNCTION Licencia( lic1, oGet, oDlg )
IF ( lic1 # "S" .AND. lic1 # "N" )
MsgStop( "Error, Debe Digitar [S/N]" )
Lic1 := " "
oGet:VARPUT( Lic1 )
oGet:Refresh()
RETURN( .F. )
ENDIF
oDlg:Update()
oDlg:Refresh()
RETURN( .T. )
Saludos.
Re: Favor Ayuda con Valid en Get URGENTE
Posted: Tue Aug 27, 2019 5:54 pm
by remtec
Hola Karinha
Muchas gracias por tu tiempo y disposicion.
Probe u sugerencia, pero no me funciona, pero ademas me sugeres que cierre el oDlg, para que proceda la validacion?
Pero esto me cerraria el ingreso de datos del usuario, lo que necesito es que mientras digia, si Lic1 toma el "S" debe mostrar el los Get y Say, de lo Contrario, no debe mostrar nada en ese Sector.
Por lo que entiendo es necesario, pero pasaria que abandona la digitacion, eso es lo que creo, ademas de Agregar un Boton?
@ 3, 11 BUTTON "Ok" ACTION( oDlg:End() ) CANCEL //-> HABILITA EL VALID.
Quedo atento a los comentarios.
Muchos Saludos.
Antonio
Re: Favor Ayuda con Valid en Get URGENTE
Posted: Tue Aug 27, 2019 6:13 pm
by karinha
Por lo que entiendo es necesario, pero pasaria que abandona la digitacion, eso es lo que creo, ademas de Agregar un Boton?
SI, ni q sea en modo Hide() ó ponga un segundo GET Hide() en el dialogo. En Recursos me queda más simples. No me gusta @. jajajajaja.
Saludos.
Re: Favor Ayuda con Valid en Get URGENTE
Posted: Tue Aug 27, 2019 6:40 pm
by karinha
Si desea cambiar lLic1, use: STATIC lLic1 := .F. en el inicio.
Prueba ahora, se comprendes.
Code: Select all
// Testing GETs
#include "FiveWin.ch"
FUNCTION Main()
LOCAL oDlg, oGet, oGetH, oBtn
LOCAL Lic1 := " ", LicH := " "
SET _3DLOOK ON
DEFINE DIALOG oDlg TITLE "TGet from " + FWDESCRIPTION
@ 1, 2 SAY "LICENCIA [S/N]" OF oDlg
@ 1, 7 GET oGet VAR Lic1 OF oDlg SIZE 20, 10 PICTURE "@K!" UPDATE ;
CENTER COLORS CLR_BLACK, CLR_WHITE ;
VALID ( Licencia( Lic1, oGet, oDlg ) )
// GET FUERA DEL DIALOGO no visible al usuario - hago todo en Fivewin. jeje
@ 2, 117 GET oGeth VAR LicH OF oDlg SIZE 20, 10 PICTURE "@K!" UPDATE ;
CENTER COLORS CLR_BLACK, CLR_WHITE
// BUTTON Invisible. //-> HABILITA EL VALID.
@ 3, 11 BUTTON oBtn PROMPT "Ok" ACTION( oDlg:End() ) CANCEL
ACTIVATE DIALOG oDlg CENTERED ON INIT( oBtn:Hide() )
RETURN NIL
FUNCTION Licencia( lic1, oGet, oDlg )
IF ( lic1 == "S" .OR. lic1 == "N" )
// SIN PROBLEMAS. No hay nada q FiveWin no haga. jajajaja.
MsgStop( "Bien, Fivewin The Best!" )
oGet:SetFocus()
ELSE
MsgStop( "Error, Debe Digitar [S/N]" )
Lic1 := " "
oGet:VARPUT( Lic1 )
oGet:Refresh()
RETURN( .F. )
ENDIF
oDlg:Update()
oDlg:Refresh()
RETURN( .T. )
Saludos
Re: Favor Ayuda con Valid en Get URGENTE
Posted: Tue Aug 27, 2019 7:42 pm
by EBM
Hola, espero poder ayudarte en algo, a como entiendo tu problema, creo que puede solucionarse asi:
Code: Select all
... tu codigo
#DEFINE Tip_Lic1 aVar[ 1 ]
#DEFINE Nro_Lic1 aVar[ 2 ]
#DEFINE Fec_Ini1 aVar[ 3 ]
#DEFINE Fec_Fin1 aVar[ 4 ]
#DEFINE Dia_Lic1 aVar[ 5 ]
... tu codigo
@ 150,10 SAY "LICENCIA [S/N]" PIXEL OF oDlg99 FONT oFont993 COLORS RGB(0, 60, 179)
@ 150,73 GET oLic1 ;
VAR Lic1 ;
SIZE 10,10 ;
PIXEL ;
OF oDlg99 ;
PICTURE "!" ;
COLOR RGB(0,0,128) ;
FONT oFont993 UPDATE; ;
VALID ( Iif(( Lic1 # "S".and.Lic1 # "N" ), ;
( MsgStop("Debe Digitar S/N","Error"), oDlg99:Update(), .F. ), ;
( ValidaGet( Lic1, @aVar ), oDlg99:Update(), .T. ) ) )
// oDlg99:Refresh() ) <--- Valida que no funciona, debe ir antes de .F. o .t. para que funcione el valid
... tu demas codigo
/////////////////////////////////////////////////////////////////////////////////////////////////
STATIC FUNCTION ValidaGet( Lic1, aVar )
...
DEFINE DIALOG ...
...
If Lic1 = "S" <-------- Necesito que se ejecute esta Linea, Cada ves que cambie el Get Lic1.
@ 165,05 GROUP oGroup992 TO 220,270 PIXEL PROMPT " ANTECEDENTES LICENCIA MEDICA " COLOR RGB(0, 77, 0), (128, 0, 0) FONT oFont992 OF oDlg99 TRANSPARENT
@ 185,010 SAY "Tipo Licencia" PIXEL OF oDlg99 FONT oFont993
@ 185,130 SAY "Nro. Licencia" PIXEL OF oDlg99 FONT oFont993
@ 200,010 SAY "Inicio" PIXEL OF oDlg99 FONT oFont993
@ 200,95 SAY "Término" PIXEL OF oDlg99 FONT oFont993
@ 200,185 SAY "Cant. Dias" PIXEL OF oDlg99 FONT oFont993
@ 185,58 GET oTip_Lic1 Var Tip_Lic1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "!" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 185,180 GET oNro_Lic1 Var Nro_Lic1 SIZE 66,10 PIXEL OF oDlg99 PICTURE "@!" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 200,32 GET oFec_Ini1 Var Fec_Ini1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "@d" COLOR RGB(0,0,128) FONT oFont993 UPDATE
@ 200,127 GET oFec_Fin1 Var Fec_Fin1 SIZE 50,10 PIXEL OF oDlg99 PICTURE "@d" COLOR RGB(0,0,128) FONT oFont993 UPDATE;
Valid Calcula_Dias(oDia_Lic1,oDlg99,Fec_Ini1,Fec_Fin1)
@ 200,223 SAY oDia_Lic1 Var Dia_Lic1 SIZE 20,10 PIXEL OF oDlg99 PICTURE "999" COLOR RGB(0,0,128) FONT oFont993 BORDER
Else
Stor 0 to dia_lic1
Stor Spac(15) to Nro_Lic1
Tip_Lic1=" "
Stor Ctod(" / / ") to Fec_Ini1,Fec_Fin1
Endif
ACTIVATE DIALOG ....
Return NIL
Espero te sirva, lo hice al vuelo asi que tal vez tenga algún errorcillo de sintaxis pero mas que todo es la idea.
Saludos !!
Eduardo Borondón Muñiz