[SOLUCIONADO] Control personalizado con foco pero no se puede escribir en el - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: General (https://gambas-es.org/forum-4.html) +--- Tema: [SOLUCIONADO] Control personalizado con foco pero no se puede escribir en el (/thread-557.html) |
Control personalizado con foco pero no se puede escribir en el - gambafeliz - 28-08-2021 Hola Hace tiempo hice un control personalizado basado en un TextBox. Yo por código hago un SetFocus y le levanto desde el control personalizado con Raise el GotFocus este no da la posibilidad de escribir en el. Cuando clicko por ejemplo en el, si puedo escribir. Y esto mismo lo hago sin usar SetFocus, pero llego al control desde la tecla Tab o con el ratón, entonces todo va bien, osea, se puede escribir. Por lo tanto: 1. Cuando accedo a el con la tecla Tab, si puedo escribir. 2. Cuando accedo con Click, si puedo escribir. 3. Cuando por código accedo con SetFocus, no me deja escribir, aunque si pregunto por código con HasFocus si tiene el foco, me devuelve, True. Alguien por favor le suena que puedo hacer para resolver este contratiempo. Gracias. Nota: No deseo poner el código, perdón, pero prefiero ser directo. ==== Solución ==================================================== Como es un componente o un Control esté esta hecho de muchos mas controles cuando le solicitas a esté control que te presente sus Children este presenta en mi caso 1 y es su formulario que contiene todos los controles, lo curioso es que cuando recorro todas las propiedades una de las propiedades son los controles que están en el interior de formulario y gracias a esto lo he hecho es nombrar al control TextBox que me interesa y le nombro el evento SetFocus y listo ahora cuando hago SetFocus es por fin visible para el usuario el prompt y por lo tanto es posible escribir. RE: Control personalizado con foco pero no se puede escribir en el - Shordi - 28-08-2021 Sin el código poco te podemos decir. Lo único que se me ocurre es que no esté en primer plano y tenga delante un panel o algo así no visible pero que impida el acceso... Ya te digo, sin código... Saludos RE: Control personalizado con foco pero no se puede escribir en el - gambafeliz - 28-08-2021 Era el control que hicimos junto que tenia textbox, Imagebutton, y label, pero ojo si funciona solo que no funciona cuando hago por código el setfocus hacia el. Y lo único que quería era como una lluvia de ideas, opiniones para que yo mire. Pienso que es como si el form que lo contiene recibe el foco y no el Textbox pero estoy intentando ver que pasa y no lo veo. Gracias de todas formas. RE: Control personalizado con foco pero no se puede escribir en el - Shordi - 28-08-2021 Por lo que cuentas el que recibe el foco es el contenedor del texbox. Establece en su evento gotfocus que se lo pase al texbox y funcionará. RE: Control personalizado con foco pero no se puede escribir en el - gambafeliz - 28-08-2021 En el componente pongo: Código: Public Sub _new() Entonces por que no se ve el prompt en la caja TextBox del componente, """ No lo veo, el por que ???? Otra cosa como puedo depurar el código desde el .SetFocus de mi formulario FMain al interior de mi componente, es que yo le pongo un punto pero no entra dentro del componente para seguir el código, es que no es posible hacerlo? Como te dije cuando hago .SetFocus .HasFocus me dice True, es posible que tenga que levantar en alguna parte que desconozco la caja del textbox?? Otra cosas este TextBox esta diseñado así: en el raiz esta Panel1 y dentro hay un HBox1 y dentro HBox2 y dentro el TextBox Te suena algo por que sigo sin ver nada. Ojo lo curioso es que si Clicko todo normal o si recibe el TAB también todo normal. RE: Control personalizado con foco pero no se puede escribir en el - Shordi - 29-08-2021 Veo aquí algunas cosas raras: (28-08-2021, 21:07)gambafeliz escribió: En el componente pongo: Haz esos cambios que te digo y ya me cuentas. Saludos. Por otro lado, si el objetivo del componente es mostrar un textbox con un texto predeterminado cuando esté vacío, a partir de la version 3.16.2 eso viene de serie en muchos controles, el textbox entre ellos, en una propiedad llamada "PlaceHolder". Lo mismo puedes simplificar o perfeccionar tu código con eso. Saludos. RE: Control personalizado con foco pero no se puede escribir en el - gambafeliz - 29-08-2021 Gracias Shordi si seguimos tu anterior comentario y comento de arriba hacia abajo, numerando cada azul tuyo, te cuento: 1. txt es el nombre para referirme a TextBox1, por lo tanto esta bien y no tengo que cambiar nada. Además sigo tus instrucciones ya que lo hicimos juntos. 2. Raise también esta bien, ya que se refiere a txt nuevamente, o lo que es lo mismo es un evento de txt. Además son instrucciones tuya de mi control. 3. Estoy deacuerdo. 4. Ni idea oiga. 5. Si estoy deacuerdo. En fin ya esta solucionado, aunque creo que esta solucionado de forma fullera ya que lo que hago es esto: MiControlPersonalizado.txt.SetFocus desde el código externo que tiene en el FMain el control personalizado. Pero no veo otra solución, me falta mucho que aprender, pero gracias a personas como tu, algún día incluso podré decir que se programar en Gambas, RE: Control personalizado con foco pero no se puede escribir en el - Shordi - 29-08-2021 Cita:Además sigo tus instrucciones ya que lo hicimos juntos.No recuerdo... ¿No tienes un enlace a dónde lo hicimos? RE: Control personalizado con foco pero no se puede escribir en el - gambafeliz - 30-08-2021 Shordi por un lado tienes razón pero por otro creo que no. Ya que aunque es un hilo del foro antiguo yo creo y solo creo que tu y yo seguimos tu explicación por otros medios. Pero mi memoria no me permite discutir contigo sobre cosas que tu sabes tan bien y no yo. Como suele ocurrir conmigo tu seguro que tienes mas razón que yo. Este es el enlace nuestro: https://foro.gambas-es.org/viewtopic.php?f=4&t=7718&highlight=componente Voy a probar otra cosa, por que al ver este enlace observo que tu me enseñas algo que yo con mi solución actual infrinjo de tus explicaciones magistrales. Por otra parte quiero decirte que en el enlace vigilamos un Form y yo solo manejo un TextBox1 que lo contiene el Form. Gracias como siempre. Nota: Mira lo curioso es que en el formulario externo que lo llama con este código si funciona: Código: For Each c As Object In ControlPersonal.Children Es que cuando uno pone ControlPersonal.SetFocus va al control pero no tengo ni idea a donde aunque ponga puntos de interrupción por eso no doy con la solución normal donde el control tras pasar .SetFocus desde el Exterior el asume el prompt en la caja de texto. ???? RE: Control personalizado con foco pero no se puede escribir en el - Shordi - 30-08-2021 (30-08-2021, 09:56)gambafeliz escribió: Shordi por un lado tienes razón pero por otro creo que no. Ya que aunque es un hilo del foro antiguo yo creo y solo creo que tu y yo seguimos tu explicación por otros medios. Pero mi memoria no me permite discutir contigo sobre cosas que tu sabes tan bien y no yo.En lugar de esto: Código: Public Sub obsComponente_GotFocus() Código: Public Sub obsComponente_GotFocus() Otra cosa a probar es añadir ésto al _New() del componente Código: .... Y por último, me siento tonto buscando corregir los defectos de un código que no he visto y que no quieres mostrar. Sube el código si quieres ayuda. Saludos |