Programación General > Visual Basic 6.0 e inferiores
Abrir Formularios Al Ejecutar
(1/1)
fap1603:
Hola a todos,
Primero que nada muchas gracias po la respuesta.
Trabajo en vb 6, incluido el service pack del vs 6, mi pregunta es la siguiente, yo tengo en un archivo los nombres de los formularios que deseo abrir, en este caso seran los que se quedaron abiertos al cerrar el programa. pero no se como hacero, no encuentro la forma de hacerlo. Por favor agradeceria mucho me den una respuesta.
Sagutxo:
Salu2.
Creo que lo mas apropiado es hacerte un .INI que te controle lo que esta ejecutado o no. Cuando tu aplicación arranque que lea el .ini.
Suerte.
Adjunto ejemplo de crear leer y modificar .ini
Espero que lo entiendas, es fácil.
Blag:
Simplemente debes leer el archivo en un listbox....ahi guardas todas las lineas del archivo correspondientes a las ventanas que has abierto....Luego con un for lees cada linea y se la asignas a una variable declarada de tipo form....
--- Código: Text --- dim ventana as new form
Luego, para abrir dichas ventanas, debes de utilizar el comando .show
--- Código: Text --- ventana.show
Saludos,
Blag :devil:
Brroz:
Hola fap1603.
Puedes conseguir lo que pretendes de varias formas, si bien yo aquí te muestro una de mi gusto.
Se trata de utilizar funciones de vb que nos permiten almacenar , borrar y recuperar 'propiedades' en el registro de windows (poco nos importará en que sección o clave...)
Estas funciones son SaveSetting , GetSetting y DeleteSetting
Cada vez que muestres un formulario de estos que quieres que sea visible en el caso que dices, síguelo de una llamada a SaveSetting:
--- Código: Text --- . . . Dim frm1 As Form1 Set frm1 = Form1 frm1.Show SaveSetting App.ExeName, frm1.Name, "Cargado", "Sí" . . .
En el evento Unload del formulario añade:
--- Código: Text --- Private Sub Form_Unload(Cancel as integer) DeleteSetting App.ExeName, Me.NameEnd Sub
En el procediento que se inicie la aplicación (Sub Main o evento Load del formulario principal) recupera los formularios que estaban visibles.
Supongamos que los formularios de tu proyecto son 5 y se llaman FormN, donde N es el número de formulario. El código podría ser algo así:
--- Código: Text --- Private Sub Main() Dim i1 as Integer , s1 as String, frm1 as Form For i1 = 1 to 5 s1 = "Form" & i1 If "Sí" = GetSetting(App.ExeName, s1, "Cargado", "No") Then Select Case i1 Case 1 Set frm1 = new Form1 case 2 Set frm1 = new Form2 case 3 Set frm1 = new Form3 case 4 Set frm1 = new Form4 case 5 Set frm1 = new Form5 End Select frm1.Show End If Next i1 Set frm1 = NothingEnd Sub
Si cuentas con una utilidad para desinstalar tu aplicación, o cuando te interese borrar estas propiedades, utiliza:
--- Código: Text --- DeleteSetting App.ExeName
Espero que con estos ejemplos explicara la idea lo suficientemente bien... es posible que en el código haya cometido algún fallo (está escrito al vuelo), pero la idea sería esa.
Suerte.
Brroz:
Hola de nuevo.
Así de flash me acabo de dar cuenta de un pequeño detalle que hará que la solución que te doy no funcione: Al finalizar la aplicación se descargarán todos los formularios... por lo que se hará un 'DeleteSetting' de todos y cada uno. Para evitar esto, puedes usar una variable booleana definida como pública a nivel de módulo y condicionar el 'DeleteSetting' por esa variable: es decir, antes del End de la aplicación puedes poner la variable a True
--- Código: Text --- Public indFinal as Boolean Private Sub FinAplicación() HacerCosas indFinal = True End End Sub
--- Código: Text --- Private Sub Form_Unload(Cancel as integer) If Not indFinal Then DeleteSetting App.ExeName, Me.NameEnd Sub
Espero que me haya explicado ok.
Chau.
Navegación
Ir a la versión completa