
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.

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.

Valora esta pregunta


0