Hola como puedo devolver un valor al cerrar una ventana modal
'Formulario Principal
Dim UsuarioLegitimo As Boolean
Dim F As New FormComprobarUsuario
UsuarioLegitimo = F.Show VbModal
Cuando llego esta parte del codigo se carga un nuevo FormConprobarUsuario, que por cierto tiene dos TextBox (Usuario y contraseña), y dos Botones (aceptar y cancelar)... el obejetivo es que si, despues de validar, el usuario es correcto devuelva True y sino False.
Alguna idea, he intentado muchas maneras pero no me salen resultados.. :huh: :huh:
Prueba a intentar plantearlo al reves, es decir, desde el "padre" abres un nuevo form (que podria denominarse como un hijo) o algo asi.
Ahora plantea el problema al reves, en vez de intentar obtener X resultado desde el padre al cerrar el hijo, hazlo al contrario.
Cuando se cierre el hijo, obtienes la referencia hasta el padre y le dejas el resultado donde tu quieras, y luego ya sigues con el script con normalidad.
No se si me explico bien.
Un saludo
He intentado eso. Pero son varias ventanas secundarias que llaman cada uno a un FormComprobarUsuario es decir...
Cada ventanaSecuntaria esta creado con New FormSecundario y cada una de estas llama a un New FormComprobarUsuario
Si lo hago al revés como dices.. como sabre que FormSecundario és el que le llamó??
.
Aqui tienes un Ejemplo:
http://infrangelux.sytes.net/FileX/index.php?dir=/BlackZeroX/Programacion/vb6/ejemplos%20VB6/RaiseEvent
Dulces Lunas!¡.
Estudiaré el código. les aviso, luego.
un pequeño error
Borrar en el Frm_Login este evento
Private Sub Form_Unload(Cancel As Integer)
If Not LLoginOk Then End
End Sub
en Frm_Main hay una variable llamada LoginNow no tiene en el codigo ningun uso por lo cual se puede borrar.... bueno mejor dejoa qui el codigo corregido!¡.
http://infrangelux.sytes.net/FileX/index.php?file=/BlackZeroX/Programacion/vb6/ejemplos%20VB6/RaiseEvent/Ejemplo%20FormReturnValue%20V2.zip&dir=/BlackZeroX/Programacion/vb6/ejemplos%20VB6/RaiseEvent&
Dulces Lunas!¡.
No sé si entendí bien. A ver:
Si se crea un formulario en forma modal no se puede hacer nada más con los otros formularios, puesto que el formulario en forma modal toma el control total. Entonces, no puede haber varios formularios modales a la vez ¿O sí?
En el caso de que solo pueda haber un formulario modal a la vez ¿Porqué no pones una variable pública en un módulo BAS? Esa variable será tipo boolean y sólo podrá ser modificada por un formulario modal a la vez.
Si me equivovo, mil disculpas. Saludos.
BlackZeroX , muchas gracias. aunque no es tan simple como un InputBox, pero funciona y es lo que importa. aquí mostraré el código para los que andaban en lo mismo. cambié algunas cocitas pues ya depende para la finalidad del uso.
En el FormularioPrincipal
Private WithEvents FrmLogin As frmUser
Dim Loggeado As Boolean
Private Sub cmdAutenticar_Click()
Set FrmLogin = New frmUser
With FrmLogin
.Show vbModal
End With
Set FrmLogin = Nothing
If Loggeado = True Then '// codigo una ves loggeado //
Me.BackColor = vbGreen
Else
Me.BackColor = vbRed
End If
End Sub
Private Sub FrmLogin_Resultado(e As Boolean)
If e = True Then
Loggeado = True
Else
Loggeado = False
End If
End Sub
En el formulario: Login
Public Event Resultado(ByRef e As Boolean)
Dim Loggeado As Boolean
Private Sub cmdComprobar_Click()
With Me
If .txtUser = .txtPassword Then
Loggeado = True
Unload Me
Else
MsgBox "Incorrecto. Inténtelo nuevaente", vbExclamation
End If
End With
End Sub
Private Sub Form_Load()
Loggeado = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
If Loggeado = True Then
RaiseEvent Resultado(True)
Else
RaiseEvent Resultado(False)
End If
End Sub
Gracias... :D
correciones Logicas!¡.
Private Sub Form_Load()
Loggeado = False
End Sub
se obvia ya que cualquier Boolean siempre al inicio es False!¡.
Aqui otras!¡.
Private Sub FrmLogin_Resultado(e As Boolean)
If e = True Then
Loggeado = True
Else
Loggeado = False
End If
End Sub
por
Private Sub FrmLogin_Resultado(e As Boolean)
Loggeado = e
End Sub
y
Private Sub Form_Unload(Cancel As Integer)
If Loggeado = True Then
RaiseEvent Resultado(True)
Else
RaiseEvent Resultado(False)
End If
End Sub
por
Private Sub Form_Unload(Cancel As Integer)
RaiseEvent Resultado(Loggeado )
End Sub
Ducles Lunas!¡.
Te traigo una solucion simple:
Crea un Modulo1 y declara
Public logueo as single
En el form FormComprobarUsuario
Private Sub cmdValidar_Click()
If txtusuario.text="TuUsuario" and txtpass.text="Tupass" Then
logueo = 1
Else
logueo = 2
End If
Unload Me
End Sub
Private Sub Form_Load()
logueo= -1
End Sub
Y en el boton que llames al FormComprobarUsuario pones
dim f as form
set f=new FormComprobarUsuario
f.show 1
Select Case logueo
case -1
msgbox "Cancelado"
case 1
msgbox "Logueado"
case 2
msgbox "No Logueado"
End Select
Me funcionó bien, pero no se si eso es lo que buscabas