0
如何在datagrid列标题中添加上下文菜单。 谢谢在Datagrid中添加上下文菜单
如何在datagrid列标题中添加上下文菜单。 谢谢在Datagrid中添加上下文菜单
上下文菜单需要右键单击,然后才能捕获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;
}
}
}
自定义它,你需要它:)。
希望有所帮助。
其中语言 – ratty 2010-02-03 11:37:56