Page 1 of 1

Forzar Foco en Get

Posted: Fri Aug 25, 2006 2:20 pm
by MarioG
Hola gente:

Tengo un dialog, desde codigo, con un combo y un get. El foco inicilal lo tiene el Como. Bajo cierta condición quiero que lo tenga el Get. Para ello hago

desde el ON INIT del Dialog hago:
if( !Empty( oSelf:cUser ), ( aO[_Cmb]:oJump:= aO[_Get1], aO[_Get1]:SetFocus() ), )

Pero el foco sigue apareciendo en el Combo. que está mal?
gracias

Posted: Fri Aug 25, 2006 2:50 pm
by manuramos
Intenta:

PostMessage(aO[_Get1]:hWnd,FM_CHANGEFOCUS)

Un saludo.

Posted: Fri Aug 25, 2006 3:58 pm
by MarioG
Manuramos, Duro de roer... no "andó"

asi lo haría yo

Posted: Fri Aug 25, 2006 4:10 pm
by fleal
Mario,

if( Empty( oSelf:cUser ), aO[_Get1]:SetFocus() , .T. )


Si lo anterior no funciona, usamos la fuerza bruta.
Deshabilito el combo al entrar, asi el foco no tiene más opción que irse al siguiente control.

if( !Empty( oSelf:cUser ), ( aO[_Cmb]:disable(), aO[_Get1]:SetFocus() ), )

Posted: Fri Aug 25, 2006 4:47 pm
by Antonio Linares
Mario,

Desde la claúsula ON INIT tienes que devolver .f. para que Windows acepte dar el foco a otro control:

... ON INIT ;
if( !Empty( oSelf:cUser ), ( aO[_Cmb]:oJump:= aO[_Get1], aO[_Get1]:SetFocus(), .f. ), )

Posted: Mon Aug 28, 2006 12:03 pm
by MarioG
Antonio; muchas gracias!.
Tendría que haberlo preguntado hace mucho :-)... ya no recuerdo desde hace cuanto que lo intento y me resignaba a dejarlo sin solución.