Page 1 of 1

Nombre del Objeto en oDlg:aControls

PostPosted: Sun Jul 08, 2007 6:50 pm
by jvargas
En \fwh\samples\testfoc2.prg hay una rutina Cntllsearch donde se puede indagar qué control tiene el foco. En el array de oDlg:aControls se podria incluir el nombre del Objeto?. ademas de su Id. seria de gran ayuda al momento de hacer el debug.
Muchas gracias
Jorge Vargas

PostPosted: Mon Jul 09, 2007 2:00 pm
by Antonio Linares
Jorge,

Puedes saber el nombre de la clase del objeto:

oDlg:aControls[ n ]:ClassName()

PostPosted: Wed Jul 11, 2007 10:21 pm
by jvargas
Hola Antonio.
Gracias por tu respuesta
Esta bien el Nombre de la Clase del Objeto, pero lo que necesito es el Nombre del Objeto. Imagínate que hay muchos Gets o Botones y deseo saber cuál de todos ellos tiene el foco.
Saludos
Jorge Vargas

PostPosted: Sat Feb 16, 2008 11:09 am
by thefull
jvargas wrote:Hola Antonio.
Gracias por tu respuesta
Esta bien el Nombre de la Clase del Objeto, pero lo que necesito es el Nombre del Objeto. Imagínate que hay muchos Gets o Botones y deseo saber cuál de todos ellos tiene el foco.
Saludos
Jorge Vargas

Bueno, una manera 'simple' seria dotarle tu el nombre, es decir, usando la variable cargo.

@1,1 GET oGet VAR cNombre OF oDlg
oGet:Cargo := "Nombre"

Lógicamente esto depende de ti, porque que yo sepa, los objetos no tienen nombre, si no de que tipo de clase es, ademas, tienes un oBj:hWnd que identifica al objeto en cuestion , pero eso no te ayudará en nada.

Recuerdo que tuve que realizar alguna cosa similar por temas de un codigo clipper y manteniendo la compatibilidad, esa era la opcion más sencilla, y recuerdo que ¿ ReadVar() ? devolvian el nombre de la variable en la que estabas, en este caso debería dar "cNombre", pero no estoy muy seguro que funcione.

PostPosted: Sun Feb 17, 2008 3:08 am
by Antonio Linares
Jorge,

Puedes hacerlo así:

oControlConFoco = oDlg:aControls[ AScan( oDlg:aControls, { | o | o:lFocused } ) ]

PostPosted: Fri Feb 22, 2008 3:41 pm
by jvargas
Hola Rafa. Hola Antonio: Muchas gracias por la respuesta de ambos.
Los objetos tienen dentro de sí muchas propiedades: la clase, el valor, el ID, el texto, de los que he podido identificar.
En la sentencia: @01,01 GET oFactu VAR wFactu .......
Alguna de las propiedades del objeto podría tener “oFactu” y con una funcion por ejemplo:
WhoHasFocus() que te devuelva ->“oFactu” se puede hacer :
oFactu:oJump := oFecha. Así de simple, así de rápido, así de fácil.
Este pedido es porque SetFocus() no siempre funciona, y buscando las razones y quién se quedó con el foco, empiezas a perder la paciencia, además de tu valioso tiempo.
Un software como FiveWin merece tener todo tipo de ayuda al usuario.
La función ReadVar() te devuelve “OBJETO”, que tampoco es de tanta ayuda y
oControlConFoco = oDlg:aControls[ AScan( oDlg:aControls, { | o | o:lFocused } ) ] devuelve el ID del Objeto.
otra vez gracias por la atención a este asunto
Saludos
Jorge Vargas