Programación General > Visual Basic 6.0 e inferiores
Mostrar Un Formulario A Partir De Un String
redram:
Necesito mostrar un formulario que no está cargado haciendo referencia a su nombre, por ejemplo:
Dim Nombre as string
Nombre = "Form1"
Nombre.show (esto está mal, pero tendría que ser algo semejante)
Primero probé con Forms(indice).show, pero esto sirve solamente para los formularios que ya han sido cargados; por lo que tendría que tener cargados todos los formularios del proyecto, siendo una solución que no me satisface.
En la ayuda encontré la función "Callbyname", pero ésta no me sirve ya que el primer parámetro que recibe es un objeto, y no su nombre.
Por último, en otro foro me dijeron que cree un procedimiento de esta manera:
Sub AbrirForm(ByRef Formulario as Object)
Formulario.show
End Sub
Y que lo utilice así:
Dim Nombre as string
Nombre = "Form1"
AbrirForm Nombre
Pero esto tampoco funcionó.
¿Alguien me podría tirar alguna punta sobre esto?
Desde ya estoy agradecido.
Christian
DiabloRojo:
Qué tal redram?
Una forma en la que puedes hacer lo que dices es usando un procedimiento como el siguiente:
--- Código: Text --- Private Sub MuestraForm(NomForm As String) Dim MiForm As form ' Select Case NomForm Case "frmSegundo" Set MiForm = New frmSegundo Case "frmTercero" Set MiForm = New frmTercero Case "frmCuarto" Set MiForm = New frmCuarto End Select Load MiForm MiForm.ShowEnd Sub
En el código anterior se supone que existe en el proyecto tres formularios llamados (propiedad name): frmSegundo, frmTercero y frmCuarto. Dependiendo del caso podrías impedir que se cargue un formulario más de una vez.
Espero que te sea de utilidad.
DiabloRojo
redram:
Gracias DiabloRojo por tu respuesta, es una buena solución. Ahora me gustaría buscar una manera en la que pueda evitar el uso de las estructuras "if" o "select", para así no tener que agregar líneas de código cada vez que agrego un formulario al proyecto.
Gracias de nuevo.
Christian
nostromo:
Hola;
No has especificado si esta en un MDI. De ser así, lo único que debes hacer es agregar una instrucción al menú y listo.
Una tarea tan simple, porque te enrollas tanto. La programación es el arte de facilitar las cosas.
Ahora si estos nuevos form son llamados desde otros, debes entonces, crear una dll el cual te permita hacer nexos entre los formularios y avisar al que corresponda, que un nuvo form a de llamar, lo unico que debes cambiar es la dll.
Nos vemos.
Juanolo:
Por favor Nostromo, ilumínanos con tu sabiduría!!
He seguido esta consulta y la verdad es que no visualizo la respuesta. Sería un gran alivio para mí el que la publicaras en forma un poco más explícita, pues por tu forma enigmática de redactar, me recuerdas a tu casi homónimo Nostradamus.
Esperamos. :whistling:
Navegación
[#] Página Siguiente
Ir a la versión completa