Hola, amigos
Veran tengo tres Formularios:
FormPrincipal
FormCliente
FormDocumentos
El FormCliente tiene TextBox como: TextNombres, TextApellidos, TextDocumento, etc. Y lo ejecuto desde FormPrincipal con el código siguiente:
Dim MiFormCliente As New ForCliente
With MiFormCliente
.Show
End With
Una vez cargado el nuevo Formulario, relleno los TextBox y cuando me sitúo en el TextDocumento, preciono Ctrl + Enter para cargar el FormDocumentos que contiene un ListBox con los documentos comunes como: DNI, Pasaporte, Licencia de conducir, etc.
Bueno, pues al dar DobleClik en el ListBox no se como pasar los datos del documento seleccionado porque el FormCliente lo he creado con el código que ya dije anteriormente. He intentado con:
With FormCliente
.TextDocumento.Text = Listado.Text
.TextDocumento.Tag = Listado.ItemData(Listado.ListIndex)
End With
y
With MiFormCliente
.TextDocumento.Text = Listado.Text
.TextDocumento.Tag = Listado.ItemData(Listado.ListIndex)
End With
y no me pasa los datos. Ayuda por favor alguna sugerencia o solución..
Para mostrar un formulario que esta en tu proyecto lo haces simplemente con el evento Show.
Private Sub Form_Load()
frmSecundario.Show
End Sub
Y si quieres hacer referencia a algun control, función (publica), etcétera seria así:
MsgBox frmSecundario.txtNombre.Text
No entendí bien tu problema, espero haberte ayudado. ;D
Eso lo tengo claro. Lo que digo que el el formulario lo cargo en tiempo de ejecución:
Dim MiFormCliente As New ForCliente
With MiFormCliente
.Show
End With
Seria lógico hacer un:
MiFormCliente.TextDocumento.Text = "DNI"
Pero si lo hago me sale error.... por que ese Formulario lo he cargado en tiempo de ejecución.
Práticamente mi pregunta sería: ¿como hacer referencia a control de un formulario que ha sido creado en tiempo de ejecución?
Agrega un Form
Con un TextBox con nombre Text1
Agrega un modulo y pega esto
Establece en propiedades del proyecto el proceso inicial Sub Main
Public MatrizDeForms() As Form
Sub main()
ReDim MatrizDeForms(10)
For Index = LBound(MatrizDeForms) To UBound(MatrizDeForms)
Set MatrizDeForms(Index) = New Form1
With MatrizDeForms(Index)
.Text1.Text = "Cagada Del FormNo.: " & Index
.Show
End With
Next
End Sub
Dulce Infierno Lunar!¡.
Graciar, veo que funciona.
Hola, lo que intento es crear una matriz vacía, Fomularios () as Form y segun ande ejecuntando formularios ire agregando a la matriz, pero si se cierra un formulario la posicion de la matriz quedaría vacía. y asi aría un for para buscar posiciones vacías y cuando encuentre uno metería el nuevo formulario en esa posicion vacía y si no encuentro pues redimensionno + 1 y meto ahi el nuevo formulario.
mi pregunta es como hago para saber si una pocicion determinada esta vacía porque hago con:
IF Formularios(0) = VBNull then
endif
no me sale nada...
Te respondi esto hace unos cuantos post atras...
Pone ese code en el form que tiene la lista (en este caso list1, tu ejemplo es FormDocumentos) y automagicamente te va a agregar el item seleccionado al form que lo llamo en un textbox llamado text1
Private Sub List1_Click()
GetCaller.Text1 = List1
End Sub
Private Function GetCaller() As Object
Dim objForm As Object
For Each objForm In Forms
If objForm Is Me Then Exit For
Set GetCaller = objForm
Next
End Function
Hola Cobein
Sabes, no entiendo este
If objForm Is Me Then Exit For
el is Me
formularioDocumentos, al que tienen la lista, no?. lo que yo quiero es pasar el dato al: FormClientes(i).TextDocumentos.Text=Lista.text
El "Me" hace referencia a el form en el que esta escrito.
Saludos
Ahi te deje un ejemplo, no es el mismo source que postie aca, es mas simple y versatil.
http://www.2shared.com/file/11965677/711ea2d3/Sample.html
Podes cambiar esto en el FormCliente asi no tenes mas de una instancia.
Private Sub Command1_Click()
If Not Called Is Nothing Then
If Called.Visible Then Exit Sub
Called.Show: Exit Sub
End If
Dim f As New FormDocumentos
f.Show
End Sub