Public Sub _new()
$texto = New _TextTips(Me) 'Creamos la instancia del formulario
$obs = New Observer($texto.txt) As "obsComponente" ''Observo el componente que quiera o el formulario
Print $texto.Parent
End
Public Sub obsComponente_GotFocus()
Raise GotFocus() '' Levanto el evento para el componente o formulario <---- Aquí entra al hacer setfocus por código desde el exterior.
End
(28-08-2021, 21:07)gambafeliz escribió: En el componente pongo:
Public Sub _new()
$texto = New _TextTips(Me) 'Creamos la instancia del formulario
$obs = New Observer($texto.txt) As "obsComponente" 'Observo el componente que quiera o el formulario
Un observer observa controles. no cadenas de texto por tanto debería ser New Observer($Texto) as "obsComponente" símplemente
Print $texto.Parent
End
Public Sub obsComponente_GotFocus()
Raise GotFocus() '' Levanto el evento para el componente o formulario <---- Aquí entra al hacer setfocus por código desde el exterior.
No veo necesario levantar el evento. Aquí simplemente
$texto.textbox1.setfocus()
y debería funcionar
End
Entonces por que no se ve el prompt en la caja TextBox del componente, """ No lo veo, el por que ???? Porque lo tiene el componente en sí, pero no lo pasa al $texto.
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?? La que te indico más arriba
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. Click es un evento que se hace sobre el textbox directamente y Tab mueve el foco sólo a los controles que lo pueden mantener (textobox, textArea, combobox, etc.) por eso el foco pasa al textbox.
For Each c As Object In ControlPersonal.Children
c.txt.SetFocus ' txt es TextBox1 en el control personal
Next
(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:
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...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
c.txt.SetFocus ' txt es TextBox1 en el control personal
Next
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. ????
Public Sub obsComponente_GotFocus()
Raise GotFocus() '' Levanto el evento para el componente o formulario <---- Aquí entra al hacer setfocus por código desde el exterior.
End
Public Sub obsComponente_GotFocus()
$texto.txt.setfocus()
End
....
....
Private $texto As Textbox
Private $obs As Observer
Public Sub _new()
$texto = New _TextTips(Me) 'Creamos la instancia del formulario
$obs = New Observer(_textbox) As "elForm" 'creamos el observador del formulario que detectará los eventos que éste levante
Me.Proxy = $texto 'Con esto el componente hereda los eventos de teclado y ratón del control $texto. Ignoro si se aplica a setfocus y gotfocus, pero por probar no pierdes nada
End
.....