Visual Basic.NET - Pasar datos a formulario secundario Visual Basic 2010 Express

 
Vista:
sin imagen de perfil

Pasar datos a formulario secundario Visual Basic 2010 Express

Publicado por Guillermo (42 intervenciones) el 25/02/2015 20:49:47
Hola! A ver por donde empiezo, porque me estoy volviendo loco de remate. Estoy programando una aplicación de escritorio, más concretamente un Panel de Control para acceder a bases de datos SQL, como va a ser para un TPV con pantalla tactil, estoy programando un teclado virtual como el de los teléfonos móviles, dicho teclado está en un Formulario llamado Teclado, al que llamo con Teclado.Show() cada vez que el usuario hace doble click/toca 2 veces sobre el Textbox en cuestión.
El problema es el siguiente: Imaginemos que yo estoy en el formulario CLIENTES, sobre un campo llamado NOMBRECLI, hago doble click sobre él y el sistema al detectar el doble click abre el formulario TECLADO, que se nos abre encima del formulario anterior, CLIENTES. Bien, ahora ya tenemos los 2 formularios abiertos, CLIENTES en segundo plano, y TECLADO por encima, en primer plano.
Ahora yo, utilizando el teclado virtual que contiene TECLADO escribo lo que quiero, por ejemplo un nombre! dicho nombre se almacena en un Textbox, llamado TECLABOX. Una vez termino de escribir, el teclado virtual tiene una tecla en la que pone 'OK', dicha tecla debería hacer lo siguiente:

1º Trasladar el contenido de TECLABOX (string) al Textbox NOMBRECLI.
Lo hago así: Clientes.ActiveControl.Text = Teclabox.Text

2º Cerrar el formulario TECLADO
Lo hago así: Me.Close()

Eso lo se hacer, porque como conozco el nombre del formulario secundario, CLIENTES, no hay problema. Pero yo lo que quiero, es poder llamar a TECLADO desde cualquier formulario, sin preocuparme por su nombre, y él al cerrarse (pulsar OK), averigue el nombre del formulario que hay en segundo plano, y almacene el texto almacenado en TECLABOX, sobre el campo Textbox que se encuentre activo en ese momento en el formulario secundario.
Algo así:

instruccionquenoconozcoyquehacereferenciaalformulariosecundario.Activecontrol.Text=Teclabox.Text

Sabed que he probado con lo siguiente también, pero no funciona! ya que por lo visto hace referencia a los formularios MDI, y los mios no son MDI, son normales.

Dim activeChild As Form = Me.ActiveMdiChild()
activeChild.ActiveControl.Text = Teclabox.Text

Alguien puede ayudarme por favor? es que me he quedado atascado.
Aquí os dejo la imagen en la que se ve el formulario clientes, y sobre él, tras pinchar 2 veces en Móvil se ha abierto el teclado virtual y he escrito un telefono, ahora debería pinchar sobre OK y él sin saber el nombre del formulario que tiene detrás (debe averiguarlo), tiene que sustituir el Activecontrol con el contenido de la variable Teclabox. Pero no se hacerlo.
1saludo for all.
teclado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Pasar datos a formulario secundario Visual Basic 2010 Express

Publicado por Miguel (476 intervenciones) el 25/02/2015 22:33:36
Hola, si te he entendido correctamente puedes hacer ésto:

1) En un módulo de variables (puede ser el formulario principal) declara una variable/propiedad para pasarle valores del formulario "teclado". Ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
Module Variables
 
       Public Property valorTeclado As String = ""
 
       Private Function escribir(Optional texto As String = "") As String
            formTeclado.textboxValor.Text = texto
            valorTeclado= texto
            formTeclado.ShowDialog() 'Puede ser  "formTeclado.Show()
            Return valorTeclado
      End Function
 
End Module



2) En el boton "OK" del formulario "teclado":

1
2
3
4
Private Sub buttonOK_Click (sender As Object, e As EventArgs) Handles buttonOK.Click
      Variables.valorTeclado = textboxValor.Text 'Teclabox
       Me.Close()
End Sub



3) Uso (desde cualquier formulario):

1
2
3
Private Sub textboxX_DoubleClik(sender As Object, e As EventArgs) Handles textboxX.DoubleClik
       textboxX.Text= escribir(textboxX.Text)
End Sub




Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Pasar datos a formulario secundario Visual Basic 2010 Express

Publicado por Guillermo (42 intervenciones) el 26/02/2015 11:39:13
Hola Miguel! Muchas gracias por tu pronta respuesta, lo primero que he hecho hoy es mirar a ver si alguien me había respondido, porque da mucha rabia quedarte atascado! jejeje.
Así a ojo de buen cubero, parece que lo que me dices podría funcionar, así que ahora mismo me pongo manos a la obra.
Mira, lo acabo de probar, y tanto si declaro el Modulo en mi formulario principal (Panel de control), antes del Public class, como si lo declaro a través del explorador de soluciones como Modulo independiente (variables.vb), me da el siguiente error:

Error 1: 'escribir' no está declarado. Puede que esté inaccesible debido a su nivel de protección.Linea 9 columna 25.

Además 'escribir' me aparece subrayado en rojo cuando en el evento doble_click del Textbox que elijo (en este caso es movilcli) le pongo lo de:

movilcli.Text = escribir(movilcli.Text)

Lo que no entiendo es que si 'escribir' es el nombre de una función de error!. No se declara así misma al generarla con el codigo en el modulo? No se como debería definir 'escribir' ni donde, porque como nunca había creado funciones en vb.
Te adjunto en un zip un par de capturas de pantalla para que lo veas. (está limpio)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Pasar datos a formulario secundario Visual Basic 2010 Express

Publicado por Miguel (476 intervenciones) el 26/02/2015 15:51:10
Tienes razón... la función "escribir" se encuentra en "Private"; cámbiala a "Public" (Public Function escribir...)

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Pasar datos a formulario secundario Visual Basic 2010 Express

Publicado por Guillermo (42 intervenciones) el 26/02/2015 19:14:10
Eres un máquina Miguel! He cambiado el Private por el Public y me ha dejado de dar el error de la 'declaración'! Pero calla, que no me rellenaba el campo cuando cerraba el formulario del teclado con OK, y sabes lo que era? que me he vuelto loco revisándolo! pues que abría el formulario TECLADO con:
1
Teclado.Show()
Y resulta que así no devuelve el valor macho!, lo he cambiado a su forma original, según tu codigo:
1
Teclado.ShowDialog()
Y así SÍ que ha funcionado!! Por lo visto Show() abre formulario pero no bloquea al resto, y ShowDialog() si que los bloquea. Con el Show() termina la ejecución de la función y no da tiempo a asignar el valor que devuelve Teclado a los Textbox.

Te debo la vida tio!! jajaja. Muchas gracias. Si me quedo enganchado por ahí, ya te digo algo. Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Pasar datos a formulario secundario Visual Basic 2010 Express

Publicado por Miguel (476 intervenciones) el 26/02/2015 19:51:12
Un gusto amigo. Cualquier duda coméntala...

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar