Tengo inconveniente de como controlar en un dialogo que se me pide usuario y clave al darle boton aceptar si antes no he tecleado sea usuario y clave, me saca del dialogo y no me regresa de nuevo al get del campo de usuario o clave ,cualquiera que sea condicion, pero si tecleo correctamente usuario y clave todo bien me abre la pantalla de menu,pero no logro controlar el dialogo de que no me saque del dialogo si le doy enter al boton aceptar si me muestra mensaje favor de teclear usuario ,pero me saca luego.
Como estoy creando nuevo proyecto, en ese modo, es lo que no me habia topado antes,porque lo hacia de otra manera y todo funcionaba bien.
Pongo el codigo:
- Code: Select all Expand view
- #include "FiveWin.ch"
IF !ACCESA() // Pide Dialogo Usuario y Clave
*MsgStop("Se sale de aqui...")
SET RESOURCES TO
DbCloseAll()
RETURN NIL
ELSE
DbCloseAll()
ENDIF
DEFINE WINDOW oWnd MENU DespMenu() ICON oICON Title "Control de obligaciones de SAT" MenuInfo 1 MDI COLOR nClr,nClr
SET FONT OF oWnd TO oFont1
SET MESSAGE OF oWnd TO "Selección de empresa..." CENTER
DEFINE BUTTONBAR oBar 3DLOOK BUTTONSIZE 26,26 OF oWnd
oWnd:bPainted := { | hDC | BmpTiled( hDC, oWnd, oBmp ) }
oWnd:oMsgBar:KeybOn()
oWnd:oMsgBar:DateOn()
ACTIVATE WINDOW oWnd MAXIMIZED ON INIT (Sel_Empr(oWnd,oFont2))
DbCloseAll()
oFont1:End()
RETURN NIL
//------------------------------------------------------------------------------\\
STATIC FUNCTION ACCESA()
LOCAL oDlg, oSay, oGet, oBtn,lRet:= .F., lAcceso := .F.
oGet := Array(2)
oSay := Array(1)
oBtn := Array(2)
cUsuar := SPACE(22)
cPassw := SPACE(6)
DEFINE DIALOG oDlg RESOURCE "USERCVE" TITLE "Acceso al control obligaciones de SAT"
REDEFINE GET oGet[01] VAR cUsuar ID 101 OF oDlg PICTURE "@K"
REDEFINE GET oGet[02] VAR cPassw ID 102 OF oDlg PICTURE "@K!"
REDEFINE BUTTON oBtn[1] ID 201 OF oDlg ACTION lAcceso:=V_ACCESO(cUsuar,cPassw,@lAcceso), oDlg:End() // Aqui me saca del dialogo ,aunque me valida que
// debo teclear usuario o clave
REDEFINE BUTTON oBtn[2] ID 202 OF oDlg ACTION oDlg:END() CANCEL
ACTIVATE DIALOG oDlg CENTERED
IF lAcceso
cRutaDat := "..\CObSAT\EMP01"
lRet := .T.
ELSE
lRet := .F.
ENDIF
*MsgInfo( cRutaDat )
RETURN (lRet)
//------------------------------------------------------------------------------
STATIC FUNCTION V_Acceso(cUsuar,cPassw,lAcceso)
LOCAL lRet := .F.
DO CASE
CASE EMPTY(cUsuar) .AND. !EMPTY(cUsuar)
MsgAlert("Favor de teclear usuario")
lRet := .F.
CASE EMPTY(cPassw)
MsgAlert("Favor de teclear su clave de acceso")
lRet := .F.
ENDCASE
S01 := Abre_Dbf(1,1) // USUARIOS.DBF
*(S01)->(DbSeek(STR(nNumEmp,2)+EnDeCrypt(cPassW,'+')))
(S01)->( DbSeek(cUsuar+cPassw) )
IF (S01)->( FOUND() )
MsgInfo("Usuario encontrado...")
lRet := .T.
lAcceso := .T.
ELSE
MsgInfo('Verifique su contraseña...',"Confirme")
cPassW := SPACE(6)
RETURN .F.
ENDIF
Release lRet
RETURN (lRet)
Alguien me pueda echar la mano con ese detalle, que alguien me tire que mas me falta.
Saludos
Gracias
Atte: Adrian C. C.
acc69@hotmail.com