Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Formulario Splash (http://www.forosdelweb.com/f29/formulario-splash-350886/)

Mary_ 17/11/2005 14:10

Formulario Splash
 
Hola, tengo un problema. El caso es que he hecho un formulario Splash d bienvenida a una aplicación y m encuentro con el problema d q si el formulario principal tiene la propiedad WindowsState a Normal se muestra la pantalla Splash y acto seguido el formulario principal. En cambio si
cambio esa propiedad a Maximized (q es como lo kiero), al ejecutar se muestra el form splash y en segundo plano el principal (se muestra tb a la vez q l splash). Cómo puedo solucionar esto? gracias.

fredy666 18/11/2005 01:39

Yo lo que hago es cargar el splash, carga la barra progresbar, mientras compruebo las conexiones a SQLserver, y luego abro el formulario MDI que quiero, al tiempo que cierro el splash xD

Mary_ 18/11/2005 03:51

Gracias Freddy pero es q lo he hecho d dos formas y d ninguna funciona n l caso d q l formulario principal tenga esa propiedad a Maximized, no lo entiendo. Si está a Normal si q aparece después d q se cierre
el Splash.

Mary_ 18/11/2005 06:18

hola, otra cosa muy extraña es q lo hice d otra forma muy sencilla, añadiendo al form splash un timer con interval=3000 y

Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
Me.Close()
Dim frmprincipal As New frmPrincipal
frmprincipal.Show()
End Sub

y si pongo q ejecute desd el form splash m muestra este pero tras los 3 segundos se para la ejecución en vez d pasar a mostrarme el formulario principal. No entiendo nada, alguien tiene alguna explicación para esto? gracias

fredy666 18/11/2005 06:31

Aqui te paso todo el codigo de mi formulario Splash, espero que lo puedas aprovechar xD

Código PHP:


Imports System
.Data
Imports System
.Data.SqlClient

Public Class frmSplash
    Dim intBarra 
As Integer 0
    Dim dblTransparencia 
As Double 0.0


    
Private Sub cmdAceptar_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles cmdAceptar.Click
        strUser 
Trim(txtusu.Text)
        
subBuscarCodigoUsuario()
        
frmInicio.Show()
        
Me.Hide()
    
End Sub
    
Private Sub frmSplash_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
      
        
'user = System.Environment.UserName
        prgBarraProgreso.Text = "Bienvenido " & System.Environment.UserName & ". Espere a que se cargue la aplicación ..."

        ' 
Aplicar el efecto
        prgBarraProgreso
.Position 0
        Timer1
.Enabled True
        Timer1
.Interval 100
    End Sub
    
Private Sub cmdCancelar_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles cmdCancelar.Click
        cargarsalir
()
    
End Sub
    
Private Sub Timer1_Tick(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Timer1.Tick
        intBarra 
+= 10
        prgBarraProgreso
.Text "Cargando la aplicación, por favor espere."
        
prgBarraProgreso.Position intBarra
        ProgressBar1
.Value intBarra
        
If prgBarraProgreso.Position 100 Then
            Timer1
.Stop()
            
Timer1.Enabled False
            ComprobarConexion
()
        
End If

        
dblTransparencia += 0.1
        
If dblTransparencia <> 1 Then
            Me
.Opacity dblTransparencia
        End 
If
    
End Sub
    
Private Sub cmdEmail_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles cmdEmail.Click
        frmEmailSoporte
.ShowDialog()
    
End Sub
    
Private Sub cargarsalir()
        
Application.Exit()
    
End Sub

    
Public Sub ComprobarConexion()
        
Timer1.Stop()
        
Timer1.Enabled False

        
Try

            
cnConexion = New Data.SqlClient.SqlConnection(strConexion)
            
cnConexion.Open() 'Abrimos la conexion
            cnConexion.Close()
            bolCargaOK = True
            prgBarraProgreso.Text = "Aplicación cargada con éxito."
            Me.Text = "Cargado OK"
        Catch ex As Exception
            ' 
MsgBox("Ha habido un problema con la conexión." vbCrLf "Póngase en contacto con el departamento DTI."MsgBoxStyle.Critical MsgBoxStyle.OkOnly"Error cargando.")
            
' bolCargaOK = False
            ' 
prgBarraProgreso.Text "Error al cargar la aplicación."
            ' prgBarraProgreso.ForeColor = Color.DarkRed
            MsgBox(ex.Message, MsgBoxStyle.Critical)
        End Try

        If bolCargaOK = True Then
            cmdAceptar.Visible = True
            cmdCancelar.Visible = True
        Else
            cmdAceptar.Visible = False
            cmdCancelar.Visible = True
            cmdEmail.Visible = True
        End If
        bolCargaOK = True

    End Sub
  
    Public Sub subBuscarCodigoUsuario()
        Try
            Dim myReader As SqlDataReader
            Dim miccommand As SqlCommand
            miccommand = New SqlCommand
            miccommand.Connection = strConexion1
            strConexion1.Open()
            miccommand.CommandText = "SELECT fkh_empleado from tblusuario where fldlogin='" & Trim(strUser) & "'"
            myReader = miccommand.ExecuteReader
            If myReader.Read Then '
Devuelve algo porque hay mensaje por leer
                intUser 
Trim(myReader("fkh_empleado"))
            
End If
            
strConexion1.Close()
        Catch 
ex As Exception

        End 
Try
    
End Sub
End 
Class 

Debe de estar el frmSplash como principal, es decir, que sea el primero en cargar.

pip<fLaSh> 18/11/2005 10:00

Yo lo hice de esta manera, espero que te sirva..

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Interval = 6000
Timer1.Start()
End Sub

Private Sub Timer1_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
Me.Visible = False
Dim f As New Form2
f.Show()
Timer1.Stop()
End Sub

..y con respecto a lo de Maximized y Normal, se me ocurre que podrias cambiar la propiedad a maximized despues que ya haya cargado el form.

pumisu 18/11/2005 14:15

Respecto a lo de la 'cosa extraña' lo que ocurre es que el formulario principal de tu aplicación es el Splash, con lo que cuando lo cierras, cierras tb la aplicación.

Si te fijas en el código que te ha pasado freddy666 mo hace un frmsplash.close, lo que hace es ocultar el formulario de Splash con el método hide, lo cual solventa el problema.

Aunque te recomiendo que utilices la el metodo run del objeto application,con la que pasarias a 'nombrar' a tu frmprincipal como el principal de la aplicación del siguiente modo:

Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick

Me.Close()
'inicia el formulario principal como el de la aplicacion
Application.Run(New frmPrincipal)
End Sub

Por cierto, de paso solucionas lo del maximized y normal tb.

Espero que te sirva de ayuda

Saludos ........

Mary_ 19/11/2005 05:36

Mil gracias a todos!, no he probado todavía vuestras opciones pero he hecho lo q ha dicho pip<fLaSh> y ya va. Es una solución un poco así pero el caso es q funciona y no m voy a romper más la cabeza jeje.
saludos.


La zona horaria es GMT -6. Ahora son las 10:49.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.