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.

Evento asignado

Foro de Xailer profesional en español
Responder
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Evento asignado

Mensaje por jose.luis »

Hola,
En un dbBrowse he asignado un evento de varias maneras, dependiendo del
valor de una variable. Algo así
::odbBrowse1:oDataset := ::oMemDataSet1
SWITCH nValor
CASE 1
::odbBrowse1:onchange := "MiEventoOnChange"
EXIT
CASE 2
::odbBrowse1:onChange := {|a,b,c| Msginfo("Evento onchange") }
EXIT
END
En otra parte del programa quisiera hacer un listado con la tReport. El
listado será sobre un tMemDataSet que está en el odbBrowse1 citado
anteriormente.
El report tiene estas lineas:
WITH OBJECT oReport
:bWhile := {| | !::oMemDataSet1:Eof() }
:bSkip := {| | ::oMemDataSet1:Skip() }
...
...
Parece ser (salvo error u omisión) que el onchange se dispara a cada
iteración del report (incluso si he puesto oMemDataSet1:lUpdLinked := .T.)
Entonces mi pregunta es: ¿hay alguna forma de quitar un evento onchange y
luego volverlo a colocar?
Algo así:
LOCAL miEvento
miEvento := ::oDbBrowse1:Onchange
::odbBrowse1:onChange := {|| .T.}
....
....
::odbBrowse1:onChange := miEvento
Saludos y gracias,
José Luis Capel
PD: Espero haberme explicado bien (no siempre es fácil)
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Evento asignado

Mensaje por jfgimenez »

José Luis,
> Entonces mi pregunta es: ¿hay alguna forma de quitar un evento onchange y
> luego volverlo a colocar?
>
> Algo así:
>
> LOCAL miEvento
>
> miEvento := ::oDbBrowse1:Onchange
Me temo que esto no se puede hacer. El simple hecho de intentar leer el
evento, en realidad lo dispara. Lo que podrías hacer es crear un método en
el formulario donde estás asignando inicialmente los eventos (digamos
'PonerEventos') y en el listado simplemente lo asignas a Nil y al finalizar
llamas a dicho método.
--
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
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Evento asignado

Mensaje por jose.luis »

José,
Gracias por tu respuesta.
Y.... ¿a nivel c? ¿sería posible? (jejeje)
Saludos,
José Luis Capel
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=45bf0581@news.xailer.com...]45bf0581@news.xailer.com...[/email]
> José Luis,
>
>> Entonces mi pregunta es: ¿hay alguna forma de quitar un evento onchange
>> y luego volverlo a colocar?
>>
>> Algo así:
>>
>> LOCAL miEvento
>>
>> miEvento := ::oDbBrowse1:Onchange
>
> Me temo que esto no se puede hacer. El simple hecho de intentar leer el
> evento, en realidad lo dispara. Lo que podrías hacer es crear un método en
> el formulario donde estás asignando inicialmente los eventos (digamos
> 'PonerEventos') y en el listado simplemente lo asignas a Nil y al
> finalizar llamas a dicho método.
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
> http://www.xailer.info
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Evento asignado

Mensaje por jfgimenez »

José Luis,
> Y.... ¿a nivel c? ¿sería posible? (jejeje)
No, me temo que tampoco. Lo único que se puede comprobar es si está asignado
el evento o no. Pero no se puede leer como si fuera un codeblock y volver a
asignarlo después.
--
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
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Evento asignado

Mensaje por jose.luis »

José,
Gracias por tu respuesta.
Saludos,
José Luis Capel
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=45bf181a@news.xailer.com...]45bf181a@news.xailer.com...[/email]
> José Luis,
>
>> Y.... ¿a nivel c? ¿sería posible? (jejeje)
>
> No, me temo que tampoco. Lo único que se puede comprobar es si está
> asignado el evento o no. Pero no se puede leer como si fuera un codeblock
> y volver a asignarlo después.
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
> http://www.xailer.info
>
Responder