![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2007
Сообщений: 232
|
Привет, Всем!
Горю желанием написать редактируемый элемент Tree. Больше всего хотелось бы сделать этот элемент управления также, как организована панель слоев в программе AdobePhotoshop. Т.е. мне нужен элемент Tree у которого можно: 1) Создавать элементы 2) Создавать папки 3) Удалять папки и элементы 4) Перемещать элементы и папки в иерархии отображения 5) Переименовывать элементы и папки Задача оказалась несколько сложнее чем я думал. Вот то что у меня получилось: <?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> <mx:Script> <![CDATA[ import mx.collections.XMLListCollection; import flash.utils.*; [Bindable] private var _collection:XMLListCollection = new XMLListCollection( new XMLList() ); private function newFolder():void { var item:XML = <item isBranch="true"/>; item.@label = "Папка " + Math.round(Math.random()*10); _collection.addItem( item ); } private function newItem():void { var item:XML = <item/>; item.@label = "Элемент " + Math.round(Math.random()*10); _collection.addItem( item ); } private function removeItem():void { var selectedItem:XML = tree.selectedItem as XML; if( !selectedItem ) return; var parent:XML = selectedItem.parent() as XML; if(parent) delete parent.*[selectedItem.childIndex()]; else _collection.removeItemAt( _collection.getItemIndex(selectedItem) ); } ]]> </mx:Script> <mx:Tree id="tree" labelField="@label" dragEnabled="true" dropEnabled="true" width="300" height="450" dataProvider="{_collection}"/> <mx:HBox horizontalGap="4" width="300"> <mx:Button click="newItem()" label="newItem" width="33%" /> <mx:Button click="newFolder()" label="newFolder" width="33%"/> <mx:Button click="removeItem()" label="deleteItem" width="33%" /> </mx:HBox> </mx:WindowedApplication> Эту функцию я реализовал следующим образом: 1) Проверил есть ли у выбранного элемента "Папа". Если есть то из "Папы" удалил его. 2) Если "Папы" нет, значит этот элемент находится вверху иерарции XMLList и значит можно получить его Index и удалить из XMLListCollection непосредственно. Скажите это верно или полный бред? Заранее благодарен! |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|