Hogyan kiváltó itemEditEnd eseményt egy Flex List amikor bejelöli a négyzetet / bejelölve?

szavazat
2

Van egy Listkomponens, amely drop-in CheckBoxitemEditor is szolgál, mint a itemRenderer. Ezt mutatja az egyes elemeket, mint egy egyszerű CheckBoxcímkével.

Azonban a itemEditEnd esemény nem kap váltott, amíg nem kattint valamit azon kívül, a lista. Azt akarom, hogy bekapcsol, ha a négyzet be van jelölve, vagy bejelölve.

Arra gondoltam, hogy kézzel kiszállításakor az ListEvent.ITEM_EDIT_END a Click eseményt felvezető, de aztán a itemEditEnd Event kapnánk feladott kétszer. Kell lennie egy jobb módja ennek.

Bármilyen ötletet?

Kösz.

A kérdést 30/06/2009 17:37
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
2

Itt a megoldás kitaláltam. Megváltoztattam a lista, hogy használja a komponens egy itemRenderer csak , nem mint itemRenderer és itemEditor. Aztán hozzá egy MouseEvent.CLICK felvezető hívni egy függvényt a lista a itemRenderer végrehajtani a szükséges intézkedéseket:

Kedvenceim komponens:

package
{
    import mx.controls.List;
    import mx.core.ClassFactory;

    public class CustomCheckBoxList extends List
    {
        public function CustomCheckBoxList()
        {
            super();

            itemRenderer = new ClassFactory(CheckBoxRenderer);
        }

        public function dispatchSelectionEvent(item:Object, selected:Boolean):void
        {
            // Take action here...
        }
    }
}

Saját ItemRenderer:

package
{
    import flash.events.MouseEvent;

    import mx.controls.CheckBox;

    public class CheckBoxRenderer extends CheckBox
    {
        public function CheckBoxRenderer()
        {
            super();
        }

        override protected function clickHandler(event:MouseEvent):void
        {
            super.clickHandler(event);

            CustomCheckBoxList(listData.owner).dispatchSelectionEvent(data, selected);
        }
    }
}
Válaszolt 15/07/2009 22:15
a forrás felhasználó

szavazat
0

Most befut ez. Én egy egyedi alkatrész helyett drop-in megközelítés, és ez akkor működik, ha a megjelenítő a szerkesztő.

Megjegyezzük, hogy a Flex emberek nyilván jött a gondolat, hogy a felhasználók szeretne váltani a négyzeteket egy párszor, mielőtt rendezése az állam kötelezettséget ... a pont, amikor azt az Enter billentyűt. Hogyan nyilvánvaló!

A megoldás szintetizálni a billentyűzet esemény, amely egyenértékű az Enter használatával. A trükkös része az, hogy kell használni, a callLater () metódus az elszállítást az esemény, mert a lista vezérlő nem regisztrált a billentyűzet hallgatót a szerkesztő, amíg a négyzetet kattintáskövetését felvezető hívódik. Itt a kattintás kezelőjét a négyzetet az én egyéni megjelenítőt / szerkesztő összetevő:

private function onClick(value:Object):void {
    newValue = value;
    var list:ListBase = ListBase(owner);
    list.callLater(dispatchEvent, [new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, Keyboard.ENTER, Keyboard.ENTER)]); 
}
Válaszolt 02/12/2009 06:22
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more