¿Como abrir desde el c贸digo un formulario del que s贸lo conozco el nom
¿Hay alguna manera de, sabiendo el nombre de un formulario, poderlo invocar desde el c贸digo sin usar el metodo show o load del propio objeto del formulario?
Es decir, si tengo un formulario que se llama Form1, se puede mostrar o cargar en memoria con su metodo, Form1.show, o Form1.load ... pero, ¿se puede hacer esto, por ejemplo, desde una funcion "generica", para abrir cualquier formulario de la aplicaci贸n?... es decir
sub AbreFormulario(Nombre as string)
... abrirlo
end sub
Por supuesto, no puedo tener previamente todos los formularios cargados en memoria para buescarlo con el objeto forms.
Gracias por adelantado
Es decir, si tengo un formulario que se llama Form1, se puede mostrar o cargar en memoria con su metodo, Form1.show, o Form1.load ... pero, ¿se puede hacer esto, por ejemplo, desde una funcion "generica", para abrir cualquier formulario de la aplicaci贸n?... es decir
sub AbreFormulario(Nombre as string)
... abrirlo
end sub
Por supuesto, no puedo tener previamente todos los formularios cargados en memoria para buescarlo con el objeto forms.
Gracias por adelantado
no se si lo he comprendido bien, lo que puedes hacer es que el par谩metro de Sub AbreFormulario se tipo Form
Sub AbreFormulario(Nombre As Form)
Nombre.Show
End Sub
A ver si es esto lo que quieres. Un saludo.
Sub AbreFormulario(Nombre As Form)
Nombre.Show
End Sub
A ver si es esto lo que quieres. Un saludo.
Gracias por tu ayuda Enco. No puedo pasarle el formulario como objeto, pues lo 煤nico que tengo del formulario es el nombre. Se que ese formulario existe en la aplicaci贸n, pero quisiera referenciarlo por el nombre. Todo esto viene motivado por tener una lista de formularios en una bbdd con sus privilegios para los distintos usuarios, y no tener que hacer un select case con el nombre del formulario... algo asi:
select case NombreFormulario
select case NombreFormulario
joer, que lo dejo a medias...decia:
Select case NombreFormulario
Case "Form1"
Form1.show
Case "Form2"
Form2.show
etc..
Ya que son un monton de formularios, y ademas, el engorro de tener que modificar la funcion cada vez que se a帽ada o quite alguno....
No se si me he explicado
Gracias por adelantado
Select case NombreFormulario
Case "Form1"
Form1.show
Case "Form2"
Form2.show
etc..
Ya que son un monton de formularios, y ademas, el engorro de tener que modificar la funcion cada vez que se a帽ada o quite alguno....
No se si me he explicado
Gracias por adelantado
Hola,
Es esto lo que necesitas???
Dim nombreFormulario As String
Dim f As Form
nombreFormulario = "Form3"
Select Case nombreFormulario
Case "Form2"
Set f = Form2
Case "Form3"
Set f = Form3
Case "Form4"
Set f = Form4
End Select
f.Show
Salu2
sdemingo
http://boards.melodysoft.com/sdemingo
Es esto lo que necesitas???
Dim nombreFormulario As String
Dim f As Form
nombreFormulario = "Form3"
Select Case nombreFormulario
Case "Form2"
Set f = Form2
Case "Form3"
Set f = Form3
Case "Form4"
Set f = Form4
End Select
f.Show
Salu2
sdemingo
http://boards.melodysoft.com/sdemingo
gracias por tu inter茅s sdemingo :)
No es exactamente eso, ya que lo que precisamente quiero evitar es el select... por cierto, investigando he descubierto una cosa que a mi me parece muy interesante. Se trata del objeto VBA, que a煤n no conozco bien, pero parece que tiene las colecciones de los proyectos, de las ventanas, de los forms... de todo. Pero para poder usarlo, que es lo que a mi me faltaba, y en la documentacion del MSDN no he visto, es activar la referencia "Microsoft Visual Basic For Aplications Extensibility"... cuando sepa algo m谩s del tema, os lo escribo. De todas formas, si alguien sabe algo sobre este tema, agradecere indicaciones.
Muchas gracias a todos
No es exactamente eso, ya que lo que precisamente quiero evitar es el select... por cierto, investigando he descubierto una cosa que a mi me parece muy interesante. Se trata del objeto VBA, que a煤n no conozco bien, pero parece que tiene las colecciones de los proyectos, de las ventanas, de los forms... de todo. Pero para poder usarlo, que es lo que a mi me faltaba, y en la documentacion del MSDN no he visto, es activar la referencia "Microsoft Visual Basic For Aplications Extensibility"... cuando sepa algo m谩s del tema, os lo escribo. De todas formas, si alguien sabe algo sobre este tema, agradecere indicaciones.
Muchas gracias a todos
si he leido tu llamado en la respuesta a Laura, y de hecho lo segu铆 buscando.
Lo 煤nico que he encontrado que podr铆a haber sido relevante fu茅 la funci贸n CallByName del objeto VBA, que hace exactamente lo que necesitabas, acceder a las propiedades y m茅todos usando Strings, PERO, s贸lo usando el String para las propiedades y los m茅todos, no para hacer referencia al objeto en s铆.
O sea, se puede hacer
Dim Instruccion As String
Instruccion = "show"
VBA.CallByName Form3, Instruccion, VbMethod 'para mostrar el fomulario
MsgBox VBA.CallByName(Form3, "visible", VbGet) 'para saber si est谩 visible
Pero continua necesitando el par谩metro de tipo Object, del que no existe una funci贸n de conversi贸n.
Creo que no te quedar谩 m谩s remedio que usar el Select Case : (
Lo 煤nico que he encontrado que podr铆a haber sido relevante fu茅 la funci贸n CallByName del objeto VBA, que hace exactamente lo que necesitabas, acceder a las propiedades y m茅todos usando Strings, PERO, s贸lo usando el String para las propiedades y los m茅todos, no para hacer referencia al objeto en s铆.
O sea, se puede hacer
Dim Instruccion As String
Instruccion = "show"
VBA.CallByName Form3, Instruccion, VbMethod 'para mostrar el fomulario
MsgBox VBA.CallByName(Form3, "visible", VbGet) 'para saber si est谩 visible
Pero continua necesitando el par谩metro de tipo Object, del que no existe una funci贸n de conversi贸n.
Creo que no te quedar谩 m谩s remedio que usar el Select Case : (
si, lo comprendo, pero el problema es no poder acceder por la colecci贸n Forms
Lo ideal ser铆a que hubiera una funci贸n de conversi贸n, como CStr(), CDbl(), que conviertiera el string en objecto Form, pero desgraciadamente creo que VB no contempl贸 esa posibilidad : (
A mi s贸lo se me ocurre usar el Select Case, aunque tenga el inconveniente que te presenta.
De todas formas cabe esperar a que alguien sepa alg煤n "truquillo".
Lamento no poder ayudar. Un saludo.
Lo ideal ser铆a que hubiera una funci贸n de conversi贸n, como CStr(), CDbl(), que conviertiera el string en objecto Form, pero desgraciadamente creo que VB no contempl贸 esa posibilidad : (
A mi s贸lo se me ocurre usar el Select Case, aunque tenga el inconveniente que te presenta.
De todas formas cabe esperar a que alguien sepa alg煤n "truquillo".
Lamento no poder ayudar. Un saludo.
Muchas gracias de nuevo por tu inter茅s Enço. Buscando en la ayuda del MSDN, me he encontrado que hace referencia al objeto VBE, que se supone tiene colecciones para acceder a los proyectos del VB, sus ventanas y no se cuantas cosas m谩s. De hecho, me sale en la ayuda de los temas del VB6, pero chico, no se si me falta alguna referencia en el proyecto o algo asi, por que el visual basic no me reconoce ese objeto.... si eso te da una pista sobre algo m谩s que sepas
Gracias
Gracias
Hellow..como estan...este codigo lo vi en la pagina del guille
www.guille.info.net
okas
sub loadform(byval NameForm as string)
Dim f As Form
'valida si ya ta cargao px
For Each f In Forms
If f.Name = NameForm Then
Exit Function
End If
Next
Set f = Forms.add(NameForm)
f.Show
end sub
me funciona okas en VB6.0
www.guille.info.net
okas
sub loadform(byval NameForm as string)
Dim f As Form
'valida si ya ta cargao px
For Each f In Forms
If f.Name = NameForm Then
Exit Function
End If
Next
Set f = Forms.add(NameForm)
f.Show
end sub
me funciona okas en VB6.0
