Показать сообщение отдельно
Старый 15.02.2007, 08:57
Azy вне форума Посмотреть профиль Отправить личное сообщение для Azy Посетить домашнюю страницу Azy Найти все сообщения от Azy
  № 10  
Ответить с цитированием
Azy
 
Аватар для Azy

Регистрация: Apr 2004
Адрес: Челябинск
Сообщений: 131
Отправить сообщение для Azy с помощью ICQ
Решил проблему.
1. Пишем свой итемрендерер.
2. Отлавливаем маусовер и записываем в какею-либо переменную дерева данный элемент.
3. В дереве при вызове контекстного меню проверяем эту переменную

Код итемрендерера:
Код:
package CellRenderers.Classes
{
	import mx.controls.treeClasses.*;
	import mx.collections.*;
	import flash.ui.ContextMenu;
	import flash.ui.ContextMenuItem;
	import flash.ui.ContextMenuBuiltInItems;
	import flash.events.ContextMenuEvent;
	import flash.events.ContextMenuEvent;
	import flash.events.MouseEvent;
	import editor.ETree;

	public class ETreeItemRenderer extends TreeItemRenderer
	{
		public function ETreeItemRenderer() 
		{
			super();
			this.addEventListener(MouseEvent.MOUSE_OVER, mouseOverEvent);
		}
		
		public function mouseOverEvent(event:MouseEvent):void
		{
			var myListData:TreeListData	= TreeListData(listData);
			var eTree:ETree = ETree(this.listData.owner);
			eTree.setOverItem(myListData);
		}	
	}
}
]
Обработка в дереве:
Код:
public class ETree extends Tree
{
	...
	public var overItem:TreeListData;
	...
	public function treeContextMenuEvent(event:ContextMenuEvent):void
	{
		selectedItem	= overItem.item;
		//If toplevel category then disable first menu item
		if (TreeListData(overItem).depth==1)
		{
			contextMenu.customItems[0].enabled = false;	
		}
	}
}