Добавить контекстное меню в Datagrid - PullRequest
0 голосов
/ 03 февраля 2010

Как добавить контекстное меню в заголовок столбца таблицы данных. Спасибо

1 Ответ

0 голосов
/ 03 февраля 2010

Контекстные меню требуют щелчка правой кнопкой мыши, и они фиксируют событие MouseEvent.CLICK, прежде чем вы сможете (однако не проверяли его с событием priority, поэтому попробуйте).

Так что вам нужно добавить обработчик flash.events.ContextMenuEvent в DataGrid (или часть сетки данных, такую ​​как заголовок). Или вы можете добавить глобальный (это то, что я делаю).

Затем проверьте, какая текущая цель находится под мышью. Вы, вероятно, не получите точный элемент (DisplayObject / UIComponent и т. Д.), Который вы ищете, просто проверив свойство event.relatedObject и т. Д., Поэтому лучше всего использовать stage.getObjectsUnderPoint(new Point(stage.mouseX, stage.mouseY).

Затем, как только вы получите объект (или вы обнаружите, что «этот объект - тот, который я хочу», вы можете динамически установить контекстное меню).

Примерно так:

protected function updateTarget(event:ContextMenuEvent):void
{
    var targets:Array = stage.getObjectsUnderPoint(new Point(stage.mouseX, stage.mouseY))// or less accurately, event.mouseTarget;
    var target:DisplayObject = targets[targets.length - 1];
    if (target)
    {
        // array of ContextMenuItem objects based on the target
        var contextMenuItems:Array = getMyContextMenuItems(target);
        if (contextMenuItems)
        {
            var menu:flash.ui.ContextMenu = stage.contextMenu; // or another target
            var menuItems:Array = [];
            var i:int = 0, n:int = contextMenuItems.length;
            for (i; i < n; i++)
            {
                menuItems.push(contextMenuItems[i].getItem());
            }
            menu.customItems = menuItems;
            if (hideBuiltInItems)
                menu.hideBuiltInItems();
            target.contextMenu = menu;
        }
    }
}

Настройте его так, как вам нужно:).

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...