Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Como Saber Que Objeto Tiene El Enfoque
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Como Saber Que Objeto Tiene El Enfoque 
 
Hola compañeros, me gustaría saber si existe una función que me permita saber que objeto tiene el enfoque.


Si alguno conoce, le agradezco de antemano.
 



 
aristicol - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Saber Que Objeto Tiene El Enfoque 
 
No, no existe una función que haga eso. Ver el mensaje de ahtonio, más abajo.

Se me ocurre que durante el evento GotFocus de un control podrías establecer su propiedad Tag a True y durante el evento LostFocus a False. Así para saber si un control tiene el enfoque sólo deberías mirar el valor de su propiedad Tag (seguramente sería necesario iterar la colección Controls para ello).

Pero es altamente probable que si expones claramente el problema podamos encontrar una solución más eficiente.
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
última edición por fabianfv el Jueves, 22 Julio 2010, 18:28; editado 1 vez 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Saber Que Objeto Tiene El Enfoque 
 
Lo que se me ocurre es declarar una variable global de clase, y cuando un control pierda o recupere el foco, la variable sea igual a este control. Me explico:

Private foco As Variant 'Declaramos la variable

Public Sub cualquiera_gotfocus()
foco = cualquiera
End

Public Sub listbox1_gotfocus()
foco = listbox1
End


Claro que es sólo un ejemplo, puedes hacer otras cosas.

Espero haber ayudado, saludos!
 



 
 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Saber Que Objeto Tiene El Enfoque 
 
Tomando la mejora de Ayortano, le haría un par de modificaciones al código:
PRIVATE ControlWithFocus AS Object

Public Sub Control_GotFocus()
  ControlWithFocus = Null
End

Public Sub Control_GotFocus()
  ControlWithFocus = LAST
End
 


Donde "Control" podría ser cualquier control (TextBox, ListBox, etc) o bien un grupo de controles (el valor de la propiedad Group de varios controles.
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Saber Que Objeto Tiene El Enfoque 
 
Buena aproximación, fabián, pero me temo que LAST devolverá la referencia al último objeto que haya generado un evento, incluidos los objetos generados por el programador, tales como sockets, files, etc.

Así que bajo mi punto de vista, esto puede acarrear problemas...

http://gambasdoc.org/help/lang/last?es


Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Saber Que Objeto Tiene El Enfoque 
 
Citar:

me temo que LAST devolverá la referencia al último objeto que haya generado un evento, incluidos los objetos generados por el programador, tales como sockets, files, etc.

Así que bajo mi punto de vista, esto puede acarrear problemas...


Pero estamos hablando del uso de LAST dentro de manejadores de evento, por lo que un manejador de eventos para un control o grupo de controles sólo se ejecutará cuando ese control o alguno de los controles agrupados hayan generado el evento, y en consecuencia dentro de ese manejador de eventos LAST únicamente puede devolver una referencia al control al que está asociado o, en el caso de tratarse de un grupo de controles, a uno de los controles agrupados.

Amplío el ejemplo:

PRIVATE ControlWithFocus AS Object
PRIVATE txtNombre AS TextBox

PUBLIC SUB txtNombre_GotFocus()
  ControlWithFocus = LAST
End

'En este caso se trata de controles agrupados (su propiedad Group tiene el mismo valor: Group=DatosPersona)

PUBLIC SUB DatosPersona_GotFocus()
  ControlWithFocus = LAST
End
 

 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
última edición por fabianfv el Lunes, 19 Julio 2010, 19:18; editado 1 vez 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Saber Que Objeto Tiene El Enfoque 
 
Comprendo. Es evidente lo que dices, no había pensado mucho en ello. Otra cuestión es si es necesario comprobar la pérdida de foco, ya que si un control lo pierde es porque otro lo recibe (aunque sea el propio formulario o un contenedor). Entonces creo que bastaría con el manejador _GotFocus().

De todos modos ahora mismo no se me ocurre ninguna razón para que sea necesario conocer qué control tiene el foco...

Quizás aristicol nos pueda aclarar su finalidad.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Saber Que Objeto Tiene El Enfoque 
 
Es cierto, el manejador del evento GotFocus es todo lo que se necesita. Modifico los ejemplos para reflejar esto.
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Saber Que Objeto Tiene El Enfoque 
 
Hola. Si lo unico que necesitas es saber el control activo, mira la documentacion de Gambas2, el objeto Application tiene una propiedad activecontrol que devuelve una referencia al control activo:

Application (gb.qt)
Global information about application.

Symbols
This class reimplements Application in gb. Static properties  
Args  Daemon  Dir  Env  Handle  Id  Name  Path  Return  Title  Version    
--------------------------------------------------------------------------------
This class is static.

--------------------------------------------------------------------------------
Static properties  
ActiveControl ActiveWindow  Busy  Embedder  Font  MainWindow  Theme  ToolTip     

de este modo, siempre puedes

Public sub mi_proc()
   DIM hctl AS Control
   hctl = Application.ActiveControl
   DEBUG hctl.Name           ' Mostrar el nombre del control por consola en tiempo de diseño
...
   'Operaciones con el control activo
...
End





Espero haber sido de ayuda.
 



 
ahtonio - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Saber Que Objeto Tiene El Enfoque 
 
Gracias ahtonio, a mí me sirve de mucho porque no recordaba en absoluto que la clase Appication tuviera esa propiedad.

Saludos.
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Saber Los Dias Que Tiene Un Mes [SOLUCIONADO] desoljor Aplicaciones/Fragmentos de Código 17 Jueves, 04 Julio 2019, 16:19 Ver último mensaje
gambafeliz
No hay nuevos mensajes ¿Hay Alguna Manera De Saber Qué Control ... shordi General 2 Viernes, 14 Febrero 2014, 12:45 Ver último mensaje
Shell
No hay nuevos mensajes Crear Objeto Y Ponerlo Como El Objeto Supe... gambafeliz General 4 Martes, 23 Junio 2020, 08:29 Ver último mensaje
v3ctor
No hay nuevos mensajes Si Textbox Tiene 12 Caracteres Se Habilita... zero14 General 2 Martes, 17 May 2011, 03:49 Ver último mensaje
zero14
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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
No puede descargar archivos
No puede publicar eventos en el calendario