Flex中使用ContextMenu - 添加,动态改变, 响应.

AIR Only: AIR: 通过监听ContextMenuEvent.MENU_SELECT事件 动态改变菜单内容

\ 这里是通用的:

AIR: 通过监听ContextMenuEvent.MENU_SELECT事件 动态改变菜单内容

某Tree上的menu
_menu = new NativeMenu();
_menuAddTopOU = new NativeMenuItem("Add Top OU");
_menuAdd = new NativeMenuItem("Selcet one OU ls");
_menu.addItem(_menuAddTopOU);
_menu.addItem(_menuAdd);
_menu.addEventListener(ContextMenuEvent.MENU_SELECT, onMenuSelected);
_menu.addEventListener(Event.SELECT, onMenuItemSelected);
_treeOUs.contextMenu = _menu;

监听函数:

// Menu打开后动态改变菜单内容
private function onMenuSelected(event:ContextMenuEvent):void {
var currentOU:OrgUnit = _treeOUs.selectedItem as OrgUnit;
_menuAdd.enabled = _actionAdd.enabled;
if(_menuAdd.enabled) {
_menuAdd.label = “Add OU in ” + currentOU.nameFullLocalized;
}else {
_menuAdd.label = “Select one UP first”;
}
}

// 选中Menu中某item后响应
private function onMenuItemSelected(event:Event):void {
if(event.target == _menuAddTopOU) {
trace(“右键点击增加顶级部门”);
onAction(_actionAddTopOU, null);
}else if(event.target == _menuAdd) [...]

使用ActionScript建立DataGrid, 添加右键, 增加列, 并设定列的ItemRenderer

很多时候为了获得对组件的灵活控制, 不得不放弃MXML, [...]

AIR中通过右键直接选定基于LIST容器[DataGrid, List, Tree等]的数据 – Select List item with mouse right-click

在很多情况下, 我们在DataGrid, List, Tree等容器中使用右键, 进行如修改, 删除 某行的操作. 问题是如果该容器初始状态下直接进行右键点击时, 并不能选定任何数据. 通过监听右键菜单SELECT事件, 获取到当前右键所击位置的Index, 并将之赋值给DataGrid或其他容器的SelectIndex, [...]