加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex tree的拖拉

发布时间:2020-12-15 04:14:37 所属栏目:百科 来源:网络整理
导读:1.tree的拖拉 ? ?xml version="1.0" encoding="utf-8"? mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" ? ? ? ? mx:Script ? ? ? ? ? ? ? ? ![CDATA[ ? ? ? ? ? ? ? ? ? import mx.events.ListEvent; ? ? ? ? ? ? ? ? ? ? ? ?

1.tree的拖拉

?

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

????<mx:Script>
????????<![CDATA[
?????????import mx.events.ListEvent;
????????????import mx.controls.Alert;
????????????import mx.controls.Label;
????????????import mx.controls.List;
????????????import mx.collections.ArrayCollection;
????????????import mx.core.DragSource;
????????????import mx.controls.Tree;
????????????import mx.controls.DataGrid;
????????????import mx.controls.listClasses.ListBase;
????????????import mx.events.DragEvent;
????????????import mx.containers.Canvas;
????????????import mx.managers.DragManager;
????????????import mx.core.UIComponent;
???????
????????????[Bindable]

????????????private var dataGridProvider:ArrayCollection = new ArrayCollection();
???????????

????????????private function onDragEnter( event:DragEvent) : void

????????????{???????????
???????????????//Alert.show("22");
??????????????
????????????????if( event.dragInitiator is Tree ) {????//dragInitiator启动拖动的组件
????????????????????var ds:DragSource = event.dragSource;??//包含正在拖动的数据的 DragSource 对象。
????????????????????if( !ds.hasFormat("treeItems") ) return;?????// no useful data

????????????????????var items:Array = ds.dataForFormat("treeItems") as Array;
????????????????????for(var i:Number=0; i < items.length; i++) {

????????????????????????var item:XML = XML(items[i]);
????????????????????????if(?item.@type?!= "restaurant" ) return; // not what we want

????????????????????}
????????????????}
??????????????// If the Tree control passes or the dragInitiator is not a Tree control,
?????????????// accept the drop.
????????????DragManager.acceptDragDrop(UIComponent(event.currentTarget));
????????????}???????
???????????

????????????private function onDragOver( event:DragEvent ) : void

????????????{
??????????????
??????????????// Alert.show("11");
????????????????if( event.dragInitiator is Tree ) {
????????????????????DragManager.showFeedback(DragManager.COPY); //设置拖放操作的反馈指示符
????????????????} else {

????????????????????if (event.ctrlKey)
????????????????????DragManager.showFeedback(DragManager.COPY);
????????????????????else if (event.shiftKey)

????????????????????????DragManager.showFeedback(DragManager.LINK);
????????????????????else {
????????????????????????DragManager.showFeedback(DragManager.MOVE);
????????????????????}

????????????????}
????????????}???????
???????????
????????????private function onDragExit( event:DragEvent ) : void

????????????{
?????????????//??Alert.show("f");
????????????????var dropTarget:ListBase=ListBase(event.currentTarget);??
????????????dropTarget.hideDropFeedback(event);
????????????}

???????????
????????????private function onGridDragDrop( event:DragEvent ) : void

????????????{
????????????????var ds:DragSource = event.dragSource;
????????????????var dropTarget:DataGrid = DataGrid(event.currentTarget);
????????????????var arr:Array;
???????????????// Alert.show("r");
????????????????if( ds.hasFormat("items") ) {

????????????????????arr = ds.dataForFormat("items") as Array;
????????????????} else if( ds.hasFormat("treeItems") ) {

????????????????????arr = ds.dataForFormat("treeItems") as Array;
????????????????}
????????????????for(var i:Number=0; i < arr.length; i++) {

????????????????????var node:XML = XML(arr[i]);
????????????????????var item:Object = new Object();
????????????????????item.label =?node.@label;
????????????????????item.type??=?node.@type;
????????????????????dataGridProvider.addItem(item);
????????????????}

????????????????onDragExit(event);
????????????}
???????????
????????????private function onTreeDragComplete(event:DragEvent):void {

????????????????event.preventDefault();??//取消doubleClick 事件
????????????}???????
???????????
????????????private function selectAllMaybe( event:KeyboardEvent ) : void

????????????{
????????????????if( event.ctrlKey && event.keyCode == 65 ) {

????????????????????var l:List = List(event.currentTarget);
????????????????????var allItems:Array = new Array(l.dataProvider.length);
????????????????????for(var i:Number=0; i < allItems.length; i++) {

????????????????????????allItems[i] = i;
????????????????????}
????????????????????l.selectedIndices = allItems;
????????????????}

????????????}
???????????
?????????????[Bindable]??
????????????public var selectedNodeArr:Object;??
????????????public function handle(e:ListEvent):void{
???????????
????????????trace("11");
??????????????// dataGridProvider=Tree(e.target).selectedItem as ArrayCollection;??
????????????trace(Tree(e.target).selectedItem as Object);
????????????}
???????????
????????]]>
????</mx:Script>
????<mx:XML id="treeData" xmlns="">
????????<root>

????????????<node label="Massachusetts" type="state" data="MA">
????????????????<node label="Boston" type="city" >
????????????????????<node label="Smoke House Grill" type="restaurant" />
????????????????????<node label="Equator" type="restaurant" />
????????????????????<node label="Aquataine" type="restaurant" />
????????????????????<node label="Grill 23" type="restaurant" />

????????????????</node>
????????????????<node label="Provincetown" type="city" >
????????????????????<node label="Lobster Pot" type="restaurant" />
????????????????????<node label="The Mews" type="restaurant" />
????????????????</node>
????????????</node>

????????????<node label="California" type="state" data="CA">
????????????????<node label="San Francisco" type="city" >
????????????????????<node label="Frog Lane" type="restaurant" />
????????????????</node>
????????????</node>
????????</root>

????</mx:XML>
???????
????<mx:Label x="34" y="40" text="Drag items from this Tree"/>
????<mx:Label x="34" y="55" text="(items are copied)"/>

????<mx:Tree x="34" y="81" width="181" height="189"
????????dataProvider="{treeData.node}"
????????labelField="@label"
????????dropEnabled="false"
????????dragEnabled="true"
????????dragComplete="onTreeDragComplete(event)"
????????dragMoveEnabled="false"
?????????change="handle(event)"
????????/>
????????<!--
????????dropEnabled : Boolean
用于指定是否可将拖动项目拖放到图表上的标志。??
?
dragEnabled : Boolean
指定是否可以将项目拖出此图表并将其拖放到其它控件上。
?-->

????<mx:Label x="291" y="55" text="Drop items from Tree here"/>
????<mx:DataGrid x="291" y="81" height="189"
????????dragEnabled="true"
????????dataProvider="{dataGridProvider}"
????????dragEnter="onDragEnter(event)"
????????dragOver="onDragOver(event)"
????????dragDrop="onGridDragDrop(event)"
????????dragExit="onDragExit(event)">

????????<mx:columns>
????????????<mx:DataGridColumn headerText="Label" dataField="label"/>
????????????<mx:DataGridColumn headerText="Type" dataField="type"/>

???????</mx:columns>???</mx:DataGrid></mx:Application>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读