Fomulario Modal

Iniciado por TheGhost(Z), 25 Agosto 2010, 15:46 PM

0 Miembros y 2 Visitantes están viendo este tema.

TheGhost(Z)

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:

Kasi

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

TheGhost(Z)

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ó??


BlackZeroX

The Dark Shadow is my passion.

TheGhost(Z)

Estudiaré el código. les aviso, luego.

BlackZeroX


un pequeño error

Borrar en el Frm_Login este evento

Código (Vb) [Seleccionar]


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!¡.
The Dark Shadow is my passion.

Tokes

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.

TheGhost(Z)

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

BlackZeroX

correciones Logicas!¡.

Código (Vb) [Seleccionar]


Private Sub Form_Load()
    Loggeado = False
End Sub



se obvia ya que cualquier Boolean siempre al inicio es False!¡.


Aqui otras!¡.

Código (Vb) [Seleccionar]


Private Sub FrmLogin_Resultado(e As Boolean)
   If e = True Then
       Loggeado = True
   Else
       Loggeado = False
   End If
End Sub



por

Código (Vb) [Seleccionar]


Private Sub FrmLogin_Resultado(e As Boolean)
       Loggeado = e
End Sub




y

Código (Vb) [Seleccionar]


Private Sub Form_Unload(Cancel As Integer)
   If Loggeado = True Then
       RaiseEvent Resultado(True)
   Else
       RaiseEvent Resultado(False)
   End If
End Sub



por

Código (Vb) [Seleccionar]


Private Sub Form_Unload(Cancel As Integer)
       RaiseEvent Resultado(Loggeado )
End Sub



Ducles Lunas!¡.
The Dark Shadow is my passion.

goldarg

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