Autor |
Mensaje |
aristicol
Aprendiz
Registrado: Septiembre 2009
Mensajes: 87
Edad: 37 Ubicación:
|
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.
|
#1 Sabado, 17 Julio 2010, 17:10 |
|
|
fabianfv
Analista Programador
Registrado: Octobre 2009
Mensajes: 495
Edad: 50 Ubicación:
|
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, 17:28; editado 1 vez
|
#2 Sabado, 17 Julio 2010, 17:22 |
|
|
Ayortano
|
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:
Claro que es sólo un ejemplo, puedes hacer otras cosas.
Espero haber ayudado, saludos!
|
#3 Sabado, 17 Julio 2010, 18:11 |
|
|
fabianfv
Analista Programador
Registrado: Octobre 2009
Mensajes: 495
Edad: 50 Ubicación:
|
Re: Como Saber Que Objeto Tiene El Enfoque
Tomando la mejora de Ayortano, le haría un par de modificaciones al código:
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.
|
#4 Domingo, 18 Julio 2010, 01:54 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
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"
|
#5 Domingo, 18 Julio 2010, 02:16 |
|
|
fabianfv
Analista Programador
Registrado: Octobre 2009
Mensajes: 495
Edad: 50 Ubicación:
|
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:
=================== Cómo programar con Gambas
Speed Books: informática libre.
última edición por fabianfv el Lunes, 19 Julio 2010, 18:18; editado 1 vez
|
#6 Lunes, 19 Julio 2010, 17:32 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
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"
|
#7 Lunes, 19 Julio 2010, 17:50 |
|
|
fabianfv
Analista Programador
Registrado: Octobre 2009
Mensajes: 495
Edad: 50 Ubicación:
|
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.
|
#8 Lunes, 19 Julio 2010, 18:18 |
|
|
ahtonio
Programador
Registrado: Octobre 2009
Mensajes: 144
Edad: 58 Ubicación: Zaragoza
|
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.
|
#9 Jueves, 22 Julio 2010, 13:08 |
|
|
fabianfv
Analista Programador
Registrado: Octobre 2009
Mensajes: 495
Edad: 50 Ubicación:
|
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.
|
#10 Jueves, 22 Julio 2010, 17:27 |
|
|
|