Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: TheGhost(Z) en 5 Marzo 2010, 20:02 pm



Título: Ayuda con MiFormulario as Form2
Publicado por: TheGhost(Z) en 5 Marzo 2010, 20:02 pm
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:
Código:
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:

Código:
With FormCliente
     .TextDocumento.Text = Listado.Text
     .TextDocumento.Tag = Listado.ItemData(Listado.ListIndex)
End With
y

Código:
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..




Título: Re: Ayuda con MiFormulario as Form2
Publicado por: Snopk en 6 Marzo 2010, 04:53 am
Para mostrar un formulario que esta en tu proyecto lo haces simplemente con el evento Show.
Código:
Private Sub Form_Load()

frmSecundario.Show

End Sub

Y si quieres hacer referencia a algun control, función (publica), etcétera seria así:
Código:
MsgBox frmSecundario.txtNombre.Text


No entendí bien tu problema, espero haberte ayudado.  ;D


Título: Re: Ayuda con MiFormulario as Form2
Publicado por: TheGhost(Z) en 6 Marzo 2010, 11:15 am
Eso lo tengo claro. Lo que digo que el el formulario lo cargo en tiempo de ejecución:

Código:
Dim MiFormCliente As New ForCliente
With MiFormCliente
.Show
End With


Seria lógico hacer un:

Código:
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?


Título: Re: Ayuda con MiFormulario as Form2
Publicado por: BlackZeroX en 6 Marzo 2010, 21:47 pm

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

Código
  1.  
  2. Public MatrizDeForms() As Form
  3. Sub main()
  4.    ReDim MatrizDeForms(10)
  5.    For Index = LBound(MatrizDeForms) To UBound(MatrizDeForms)
  6.        Set MatrizDeForms(Index) = New Form1
  7.        With MatrizDeForms(Index)
  8.            .Text1.Text = "Cagada Del FormNo.: " & Index
  9.            .Show
  10.        End With
  11.    Next
  12. End Sub
  13.  
  14.  

Dulce Infierno Lunar!¡.


Título: Re: Ayuda con MiFormulario as Form2
Publicado por: TheGhost(Z) en 8 Marzo 2010, 12:59 pm
Graciar, veo que funciona.


Título: Re: Ayuda con MiFormulario as Form2
Publicado por: TheGhost(Z) en 8 Marzo 2010, 15:54 pm
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:

Código:
IF Formularios(0) = VBNull then
endif
no me sale nada...


Título: Re: Ayuda con MiFormulario as Form2
Publicado por: cobein en 8 Marzo 2010, 16:41 pm
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

Código:
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


Título: Re: Ayuda con MiFormulario as Form2
Publicado por: TheGhost(Z) en 8 Marzo 2010, 20:58 pm
Hola Cobein

Sabes, no entiendo este
Código:
If objForm Is Me Then Exit For

el
Código:
is Me
formularioDocumentos, al que tienen la lista, no?.  lo que yo quiero es pasar el dato al:
Código:
FormClientes(i).TextDocumentos.Text=Lista.text


Título: Re: Ayuda con MiFormulario as Form2
Publicado por: sinksss en 8 Marzo 2010, 21:52 pm
El "Me" hace referencia a el form en el que esta escrito.
Saludos


Título: Re: Ayuda con MiFormulario as Form2
Publicado por: cobein en 9 Marzo 2010, 03:04 am
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.

Código:
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