Nombre del Objeto en oDlg:aControls

Post Reply
jvargas
Posts: 63
Joined: Sun Apr 08, 2007 9:50 pm
Location: Lima Perú

Nombre del Objeto en oDlg:aControls

Post 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
FW-705, xHarbour 0.99.71 (SimpLex) , bcc55
User avatar
Antonio Linares
Site Admin
Posts: 37485
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Jorge,

Puedes saber el nombre de la clase del objeto:

oDlg:aControls[ n ]:ClassName()
regards, saludos

Antonio Linares
www.fivetechsoft.com
jvargas
Posts: 63
Joined: Sun Apr 08, 2007 9:50 pm
Location: Lima Perú

Post 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
FW-705, xHarbour 0.99.71 (SimpLex) , bcc55
User avatar
thefull
Posts: 720
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona
Contact:

Post 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.
Saludos
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
User avatar
Antonio Linares
Site Admin
Posts: 37485
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Jorge,

Puedes hacerlo así:

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

Antonio Linares
www.fivetechsoft.com
jvargas
Posts: 63
Joined: Sun Apr 08, 2007 9:50 pm
Location: Lima Perú

Post 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
FW-705, xHarbour 0.99.71 (SimpLex) , bcc55
Post Reply