Página 1 de 1

Duda con TFolde

Publicado: Lun Nov 19, 2007 12:48 am
por jmartial
Hola,
Necesito que al cambiar de pestaña el foco se vaya al control donde
estaba el foco antes del cambio, sin embargo, siempre se va al primero,
con lo que si se están editando 2 fichas en diferentes pestañas no se
puede volver al estado anterior.
¿Existe alguna forma de hacerlo?
Un Saludo,
Joaquí­n Martí­nez

Duda con TFolde

Publicado: Lun Nov 19, 2007 5:58 pm
por jfgimenez
Joaquín,
> Necesito que al cambiar de pestaña el foco se vaya al control donde estaba
> el foco antes del cambio, sin embargo, siempre se va al primero, con lo
> que si se están editando 2 fichas en diferentes pestañas no se puede
> volver al estado anterior.
>
> ¿Existe alguna forma de hacerlo?
Me temo que tendrás que modificar o sobrecargar el método WMSetFocus() de
XFolderPage. Si te fijas verás que al final del método se está llamando a
::GoFirstControl(); no creo que haga falta explicar más ;-) Lo que puedes
hacer es cambiar esa llamada por un ::oActiveControl:SetFocus(), o
sobrecargar el método más o menos así (ojo, no lo he probado pero debería
funcionar):
METHOD WMSetFocus() CLASS TFolderPage
LOCAL oCtl := ::oActiveControl
Super:WMSetFocus()
::oActiveControl:SetFocus()
RETURN 0
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info

Duda con TFolde

Publicado: Lun Nov 19, 2007 8:02 pm
por jmartial
Jose,
¿Para qué sirve oCtl si no lo usas?
Lo probé pero parece ser que oActiveControl es el de TFolder en una
pestaña en concreto, pero no guarda el control activo de cada pestaña.
Es decir, sólo queda bien posicionado el foco en una de las pestañas en
las demás va al primero. ¿que me sugieres?
Jose F. Gimenez escribió:
> Joaquí­n,
>
>> Necesito que al cambiar de pestaña el foco se vaya al control donde estaba
>> el foco antes del cambio, sin embargo, siempre se va al primero, con lo
>> que si se están editando 2 fichas en diferentes pestañas no se puede
>> volver al estado anterior.
>>
>> ¿Existe alguna forma de hacerlo?
>
> Me temo que tendrás que modificar o sobrecargar el método WMSetFocus() de
> XFolderPage. Si te fijas verás que al final del método se está llamando a
> ::GoFirstControl(); no creo que haga falta explicar más ;-) Lo que puedes
> hacer es cambiar esa llamada por un ::oActiveControl:SetFocus(), o
> sobrecargar el método más o menos así­ (ojo, no lo he probado pero deberí­a
> funcionar):
>
> METHOD WMSetFocus() CLASS TFolderPage
> LOCAL oCtl := ::oActiveControl
> Super:WMSetFocus()
> ::oActiveControl:SetFocus()
> RETURN 0
>

Duda con TFolde

Publicado: Lun Nov 19, 2007 8:29 pm
por Xevi
Joaquí­n,
Prueba así­...
METHOD WMSetFocus() CLASS TFolderPage
LOCAL oCtl := ::oActiveControl
Super:WMSetFocus()
oCtl:SetFocus()
RETURN 0
Un Saludo,
Xevi.
"Joaquí­n Martí­nez" <jmartial@interbook.net> escribió en el mensaje de
noticias news:[email=4741ddc0@ozsrv2.ozlan.local...]4741ddc0@ozsrv2.ozlan.local...[/email]
> Jose,
>
> ¿Para qué sirve oCtl si no lo usas?
>
> Lo probé pero parece ser que oActiveControl es el de TFolder en una
> pestaña en concreto, pero no guarda el control activo de cada pestaña.
>
> Es decir, sólo queda bien posicionado el foco en una de las pestañas en
> las demás va al primero. ¿que me sugieres?
>
> Jose F. Gimenez escribió:
>> Joaquí­n,
>>
>>> Necesito que al cambiar de pestaña el foco se vaya al control donde
>>> estaba el foco antes del cambio, sin embargo, siempre se va al primero,
>>> con lo que si se están editando 2 fichas en diferentes pestañas no se
>>> puede volver al estado anterior.
>>>
>>> ¿Existe alguna forma de hacerlo?
>>
>> Me temo que tendrás que modificar o sobrecargar el método WMSetFocus() de
>> XFolderPage. Si te fijas verás que al final del método se está llamando a
>> ::GoFirstControl(); no creo que haga falta explicar más ;-) Lo que
>> puedes hacer es cambiar esa llamada por un ::oActiveControl:SetFocus(), o
>> sobrecargar el método más o menos así­ (ojo, no lo he probado pero deberí­a
>> funcionar):
>>
>> METHOD WMSetFocus() CLASS TFolderPage
>> LOCAL oCtl := ::oActiveControl
>> Super:WMSetFocus()
>> ::oActiveControl:SetFocus()
>> RETURN 0
>>

Duda con TFolde

Publicado: Lun Nov 19, 2007 9:01 pm
por jfgimenez
Xevi,
> METHOD WMSetFocus() CLASS TFolderPage
> LOCAL oCtl := ::oActiveControl
> Super:WMSetFocus()
> oCtl:SetFocus()
> RETURN 0
Gracias por la corrección. Lo escribí al vuelo y evidentemente estaba mal.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info

Duda con TFolde

Publicado: Mar Nov 20, 2007 10:50 am
por jmartial
Jose,
Da error porque a veces es nil, pero, aunque lo arregle y ponga:
METHOD WMSetFocus( hCtl ) CLASS TFormFolder
LOCAL oCtl := ::oActiveControl
Super:WMSetFocus()
if oCtl<>nil
oCtl:SetFocus()
endif
RETURN 0
Falla!!, siempre se va al 1º control y nunca recuerda en qué edit estaba
la pestaña. ¿Funciona bien oActiveControl ? ¿ O se podrí­a guardar el
control con foco al perder el foco la pestaña y al recibir el foco hacer
un setfocus?
¿En qué método de la clase pierde el foco para poder añadirle una nueva
DATA que recuerde el control activo ?
Una manita porfa, que me tiene atascado este efecto al cambiar de pestaña.
Jose F. Gimenez escribió:
> Xevi,
>
>> METHOD WMSetFocus() CLASS TFolderPage
>> LOCAL oCtl := ::oActiveControl
>> Super:WMSetFocus()
>> oCtl:SetFocus()
>> RETURN 0
>
> Gracias por la corrección. Lo escribí­ al vuelo y evidentemente estaba mal.
>