Página 1 de 1

Evento asignado

Publicado: Mar Ene 30, 2007 8:52 am
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)

Evento asignado

Publicado: Mar Ene 30, 2007 9:45 am
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

Evento asignado

Publicado: Mar Ene 30, 2007 10:25 am
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
>

Evento asignado

Publicado: Mar Ene 30, 2007 11:05 am
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

Evento asignado

Publicado: Mar Ene 30, 2007 12:53 pm
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
>