Pregunta

Tengo un componente de cuadrícula y su verticalScrollPolicy está configurada en "Auto". Y cada vez que cuando verticalScrollbar aparece o desaparece, quiero manejar este evento.

Traté de escuchar el evento de cambio de tamaño:

    private function onGridResize(event:Event):void
    {
       if (_grid.verticalScrollBar && _grid.verticalScrollBar.visible)
       {
           trace("scroll on");
       }
       else
       {
           trace("scroll off");
       }
    }

Pero no funciona: me parece que el evento de cambio de tamaño realmente se despacha antes de que la actualización visual de la red y la barra de desplazamiento aparezcan/desaparezcan. Traté de escuchar los eventos de ChildExistencangedevent.child_add y ChildExistenceChangedevent.child_remove, pero también no funciona para mí.

Tal vez simplemente no veo una solución obvia. Gracias de antemano por cualquier ayuda o asesoramiento.

¿Fue útil?

Solución

No especifica qué cuadrícula. (Spark, MX, o uno de los nuestros (http://www.flexicious.com/home/ultimate) )

Una cosa que podría hacer es lanzar una validatenow antes de verificar:

private function onGridResize(event:Event):void
    {
       _grid.validateNow(); //add this.

       if (_grid.verticalScrollBar && _grid.verticalScrollBar.visible)
       {
           trace("scroll on");
       }
       else
       {
           trace("scroll off");
       }
    }

La otra cosa que también podría hacer es usar un temporizador o llamar más tarde.

private function onGridResize(event:Event):void
    {
       callLater(checkForScrollBar); //check for scrollbar would have the code above.
    }

Otros consejos

Quizás puedas escuchar el evento "show" del ScrollBar sí mismo. Algo similar a esto debería funcionar:

_grid.verticalScrollBar.addEventListener(ComponentEvent.SHOW, onGridResize);

No he probado esto, pero estoy bastante seguro de que debería funcionar. (Por supuesto, es posible que desee cambiar el nombre onGridResize a algo más adecuado como onVerticalScrollShow.)

Por cierto, no tienes que verificar que el ScrollBar existe; en puro as3 al menos, se instancian junto con el DataGrid y existen independientemente de su ScrollPolicy valor.

La razón por la que el evento de cambio de tamaño parece disparar de inmediato es porque se envía tan pronto como cambian sus dimensiones. Supongo que en su aplicación, el usuario se arrastra para ajustar manualmente el tamaño de la cuadrícula y, por lo tanto, los eventos se disparan tan pronto como se realice cualquier ajuste.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top