Devolver El Foco A Un Textbox Desde Otro Formulario?


Ir a la página 1, 2  Siguiente

Objetivo: Devolver El Foco A Un Textbox Desde Otro Formulario?
Sigo liado con mi maldito teclado táctil...

Tengo dos formularios (FORM1 y Teclado), cuando se pincha en una caja de texto de FORM1 (evento MouseDown) debe mostrarse el form Teclado ya que el usuario quiere editar ese texto, este es el evento concreto (vGlobal es un módulo donde defino variables globales):

Public Sub TX1_MouseDown()
If Teclado.Visible = False Then
vGlobal.CajaTexto = TX1
vGlobal.FormTXT = Me
Teclado.Show
Endif
End


Hasta aquí todo ok. Cuando Form2 se abre calculará la posición de TX1, el tamaño de Form1, hará una serie de procesos para mostrarlo a la altura que lo tiene que mostrar (como funcionaría por ejemplo en un teléfono móvil) por ejemplo esto es parte de lo que hace el formulario Teclado para que ambos ocupen 480 pixels que es lo que tiene el panel táctil:

Public Sub Form_Open()
Me.y = vGlobal.FormTXT.screenY + (480 - Me.h)
Me.x = vGlobal.FormTXT.ScreenX
vGlobal.FormTXT.h = 480 - Me.h
End Sub


y el foco debería volver a la caja de texto a la espera de que el usuario haga click en cualquier zona del formulario Teclado, lo que generará que en la caja de texto se inserte la tecla que toque. Y todo eso funciona bien, pero no se muestra el cursor. Para devolver el foco uso:

vGlobal.CajaTexto.setfocus


Pero no me hace ni caso, el efecto que persigo es que el cursor aparezca en la caja de texto en la que el usuario pulsó pero como no consigo que el foco vuelva, no sale, entendiendo por foco lo mismo que sucedería en VB6, que no se si en gambas es un concepto diferente.

¿Alguna idea? Es más un tema estético que otra cosa porque el programa funciona, pero con el cursor quedaría mejor.

última edición por Tasagore el Miercoles, 10 Agosto 2016, 16:51; editado 4 veces
Perfil MP  
Objetivo: Re: Devolver El Foco A Un Textbox Desde Otro Formulario?
No se si he entendido bien el problema pero como idea sencilla añade la caja de texto al propio formulario teclado y le estableces el foco después de cada pulsación de botón, con eso te aparecería el cursor. Luego, al pulsar el botón aceptar o cerrar, le pasas el texto al control original form 1 y el cursor aparecerá al final del texto...

Perfil MP  
Objetivo: Re: Devolver El Foco A Un Textbox Desde Otro Formulario?
shordi escribió: [Ver mensaje]
No se si he entendido bien el problema pero como idea sencilla añade la caja de texto al propio formulario teclado y le estableces el foco después de cada pulsación de botón, con eso te aparecería el cursor. Luego, al pulsar el botón aceptar o cerrar, le pasas el texto al control original form 1 y el cursor aparecerá al final del texto...


Inicialmente lo hice así pero me resultaba un poco chapucero desde el punto de vista de la experiencia de usuario y lo descarté.

Piensa en tu móvil, cuando pulsas en una caja de texto el formulario base se desplaza para que el texto que has pulsado lo veas arriba y abajo aparece el teclado, eso en nuestro caso son dos formularios, el texto (y todo lo que le rodea) debe estar aparte del formulario del teclado. Como cuento con una superficie de 800x480 pixels debo calcular el desplazamiento y tamaño del formulario que contiene la caja de texto para que cuando pinto el formulario del teclado al final parezcan uno solo dentro de ese espacio, no puedo "mezclarlos".

Como te digo todo funciona perfecto pero visualmente quedaría mucho mejor ver el cursor parpadeando en la caja en la que estás escribiendo, con mi programa esto no sucede porque el cursor desaparece, y lo hace porque el textbox pierde el foco cuando haces click sobre la tecla que sea (en realidad es un control Picturebox y controlo las teclas por coordenadas), el tema es que no entiendo por qué aunque le devuelvo el foco a la caja de texto original del otro formulario, realmente no lo hace.

Si quieres te pongo unas fotos que igual te clarifican más el asunto.

Perfil MP  
Objetivo: Re: Devolver El Foco A Un Textbox Desde Otro Formulario?
Devuelves el foco al textbox, pero para que eso sea efectivo, el formulario del textbox debe tener también el foco...

Perfil MP  
Objetivo: Re: Devolver El Foco A Un Textbox Desde Otro Formulario?
Cuándo se da el focus al TextBox, el su Form de pertenencia es activado al mismo tiempo ? (Como ha dicho tambien shordi)

última edición por vuott el Jueves, 11 Agosto 2016, 19:32; editado 5 veces
Perfil MP  
Objetivo: Re: Devolver El Foco A Un Textbox Desde Otro Formulario?
vuott escribió: [Ver mensaje]
Tasagore escribió: [Ver mensaje]
... el foco debería volver a la caja de texto ....... pero no se muestra el cursor. Para devolver el foco uso:

vGlobal.CajaTexto.setfocus



Cuándo se da el focus al TextBox, el su Form de pertenencia es activado al mismo tiempo ? (Como ha dicho tambien shordi)


La verdad es que he probado de todo, en concreto con:

vGlobal.FormTXT.setfocus
vGlobal.CajaTexto.setfocus


hace lo mismo, es decir, nada, el foco no vuelve a donde le indico.

Perfil MP  
Objetivo: Re: Devolver El Foco A Un Textbox Desde Otro Formulario?
Os adjunto un ejemplo sencillo del problema (es un link de Google Drive):
Ejemplo de foco

Perfil MP  
Objetivo: Re: Devolver El Foco A Un Textbox Desde Otro Formulario?
Tasagore escribió: [Ver mensaje]
Cuándo se da el focus al TextBox, el su Form de pertenencia es activado al mismo tiempo ? (Como ha dicho tambien shordi)


Para activar el Form de pertenencia del TextBox, tienes que utilizar el su (del Form) metodo .Activate( ).

Si por ejemplo tenemos 2 Form (Fmain y Form1), y tu quieres dar el focus (es decir: activar) a el Form secundario (que se llama: Form1), asì llevandolo encima a FMain:

Form1.Activate()

Perfil MP  
Objetivo: Re: Devolver El Foco A Un Textbox Desde Otro Formulario?
Bueno... el tema de usar un módulo en estas circunstancias... mmmm los módulos no son para eso.
En todo caso tu teclado tiene vocación de control... y no sería nada difícil de hacer.

El tema de variar el foco de un formulario a otro... sólo es posible si el formulario B está contenido en el A.

Te adjunto un ejemplito que acabo de hacer que te puede ilustrar en cómo lo enfocaría yo.
captura_de_pantalla_de_2016_08_11_20_56_05
Falta, por supuesto todo el manejo del resto de teclas (minúsculas, mayúsculas, símbolos, etc.) y el posicionamiento del teclado en la pantalla según la posición del campo que quieras rellenar (si está muy abajo hacer un scroll o cosas así).

Saludos.


teclas-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: teclas-0.0.1.tar.gz
Tamaño: 12.24 KB
Descargado: 52 veces
teclas-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: teclas-0.0.1.tar.gz
Tamaño: 12.24 KB
Descargado: 52 veces
teclas-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: teclas-0.0.1.tar.gz
Tamaño: 12.24 KB
Descargado: 52 veces

Perfil MP  
Objetivo: Re: Devolver El Foco A Un Textbox Desde Otro Formulario?
shordi escribió: [Ver mensaje]
Bueno... el tema de usar un módulo en estas circunstancias... mmmm los módulos no son para eso.
En todo caso tu teclado tiene vocación de control... y no sería nada difícil de hacer.

El tema de variar el foco de un formulario a otro... sólo es posible si el formulario B está contenido en el A.

Te adjunto un ejemplito que acabo de hacer que te puede ilustrar en cómo lo enfocaría yo.
captura_de_pantalla_de_2016_08_11_20_56_05
Falta, por supuesto todo el manejo del resto de teclas (minúsculas, mayúsculas, símbolos, etc.) y el posicionamiento del teclado en la pantalla según la posición del campo que quieras rellenar (si está muy abajo hacer un scroll o cosas así).

Saludos.

Probablemente no sea correcto el uso pero no he tenido tiempo de ver las particularidades de gambas y al final me centro de momento en que funcione. La idea de formulario que contiene a otro la asociaba a los MDI de Windows pero no había visto cómo hacerlo en gambas, echaré un vistazo despacio a tu ejemplo porque tomando como idea esa pertenencia parece que funcionará. El tema del control de símbolos y demás lo tengo todo hecho, aparentemente sería variar muy poco mi código.

Mañana os cuento cómo queda, gracias.

Perfil MP  
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.6925s (PHP: -88% SQL: 188%)
Consultas SQL: 49 - Debug off - GZIP Activado