In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Duda con TFolde

Foro de Xailer profesional en español
Responder
jmartial
Mensajes: 397
Registrado: Vie May 20, 2005 8:53 pm

Duda con TFolde

Mensaje 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
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Duda con TFolde

Mensaje 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
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
jmartial
Mensajes: 397
Registrado: Vie May 20, 2005 8:53 pm

Duda con TFolde

Mensaje 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
>
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Duda con TFolde

Mensaje 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
>>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Duda con TFolde

Mensaje 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
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
jmartial
Mensajes: 397
Registrado: Vie May 20, 2005 8:53 pm

Duda con TFolde

Mensaje 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.
>
Responder