Domanda

Ho un componente a griglia ed è verticalescrollpolicy è impostato su "auto". E ogni volta che verticale verticale appare o scompare, voglio gestire questo evento.

Ho provato ad ascoltare l'evento di ridimensionamento:

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

Ma non funziona: mi sembra che l'evento ridimensiona effettivamente invio prima che l'aggiornamento visivo della griglia e la barra di scorrimento appaia/scompaiono. Ho provato ad ascoltare ChildExistenceEvent.Child_add e ChildExistenceCedevent.Child_Remove anche eventi, ma non funziona anche per me.

Forse non vedo una soluzione ovvia. Grazie in anticipo per qualsiasi aiuto o consiglio.

È stato utile?

Soluzione

Non si specifica quale griglia. (Spark, MX o uno dei nostri (http://www.flexicious.com/home/ultimate) )

Una cosa che potresti fare è lanciare una validaTenow prima di controllare:

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

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

L'altra cosa che potresti fare anche è usare un timer o una chiamata in seguito.

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

Altri suggerimenti

Forse puoi ascoltare l'evento "show" del ScrollBar si. Qualcosa sulla falsariga dovrebbe funzionare:

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

Non l'ho testato, ma sono abbastanza sicuro che dovrebbe funzionare. (Certo, potresti voler rinominare onGridResize a qualcosa di più adatto come onVerticalScrollShow.)

A proposito, non devi verificare che il ScrollBar esiste; Almeno in AS3 puro, sono istanziati insieme al DataGrid ed esistono indipendentemente dal loro ScrollPolicy valore.

Il motivo per cui l'evento di ridimensionamento sembra sparare subito è perché viene inviato non appena le sue dimensioni cambiano. Suppongo che nella tua applicazione, l'utente si trascina per regolare manualmente le dimensioni della griglia e quindi gli eventi si accendono non appena viene effettuata qualsiasi regolazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top