Page 1 of 1

ScrollBar entra en recursividad

Posted: Thu Dec 14, 2006 4:35 pm
by jlcapel
Antonio,

Este código:

Code: Select all

function Main()

   local oWnd, oScr1, oScr2

   DEFINE WINDOW oWnd TITLE "ScrollBars"

   @ 2, 5 SCROLLBAR oScr1 OF oWnd ;
      ON UP   oScr1:GoTop() ;
      ON DOWN oScr1:GoBottom() HORIZONTAL
      

   @ 2, 15 SCROLLBAR oSrc2 OF oWnd ;
      ON UP   oWnd:Say( 2, 30, Time() ) ;
      ON DOWN oWnd:Say( 4, 30, "Hello!" ) ;
      ON PAGEUP     MsgInfo("Página Arriba") ;
      ON PAGEDOWN   MsgInfo("Página Abajo") 
      

   ACTIVATE WINDOW oWnd

return nil

//-----------
Hace que el msginfo del pageup o pagedown entre en recursividad.

Saludos,
José Luis Capel

Posted: Thu Dec 14, 2006 4:46 pm
by Antonio Linares
Jose Luis,

Sí, lo habiamos visto, pero no es recursividad sino que el evento no deja de dispararse continuamente.

La solución es llamar a una función que use una variable static que cambie de estado para que la función no vuelva a procesarse hasta que no termine su trabajo:

Code: Select all

function Test()

   static lWorking := .f.

   if ! lWorking
     lWorking = .t.
     ... código a ejecutar
     lWorking = .f. 
   endif

return nil

Re: ScrollBar entra en recursividad

Posted: Wed Jun 19, 2013 10:24 am
by ORibeiro
Estoy teniendo el mismo problema, pero sólo con Windows Server 2003.

Si yo puedo desencadenar un comando en ScrollBar que se abre un cuadro de diálogo, en la flecha en el rollo que se ha pulsado no se congela y comienza a rodar locamente registros.

Muiiiito raro! Si alguien tiene alguna sugerencia, gracias.

Gracias,

_ Ribeiro

Re: ScrollBar entra en recursividad

Posted: Wed Jun 19, 2013 8:38 pm
by Antonio Linares