ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
フォーラム一覧   -   トピック一覧
   ActionScript 3.0
     ドラッグ&ドロップの実現方法について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
5001758
投稿日時: 2011-8-9 21:10
お馴染みさん
登録日: 2010-9-3
居住地:
投稿: 11
ドラッグ&ドロップの実現方法について
データグリッドの一行(メールアドレスのみ)をテキストエリアにドラッグ&ドロップさせたいです。
以下のサイトを参考にしながら、プログラムを記述しているのですが
完成系に持っていけないため、ご教授頂けると幸いです。

http://sham-memo.blogspot.com/2010/02/flex.html
 ※ドラッグ&ドロップ機能を手動で追加を参考にしています。




<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:Script>
        <![CDATA[
			import mx.events.MoveEvent;

			import mx.controls.DataGrid;
			import mx.controls.TextArea;
			import mx.core.DragSource;
			import mx.managers.DragManager;
			import mx.events.DragEvent;

			private function fnc_dragStart(event : MouseEvent) : void {
				var dragInitiator:DataGrid = DataGrid(event.currentTarget);
				var ds:DragSource = new DragSource();
				var data:int = dragInitiator.getStyle('backgroundColor'); <!--変更箇所と思われる点-->
				ds.addData(data, 'color'); <!--変更箇所と思われる点-->
				DragManager.doDrag(dragInitiator, ds, event);
			}

			private function fnc_dropStart(event:DragEvent):void {
				var dropTarget:TextArea = TextArea(event.currentTarget);
				DragManager.acceptDragDrop(dropTarget);
			}

			private function fnc_dropEnd(event:DragEvent) : void {
				var dropTarget:TextArea = TextArea(event.currentTarget);
				var data:Object = event.dragSource.dataForFormat('color'); <!--変更箇所と思われる点-->
				dropTarget.setsetStyle("backgroundColor", data); <!--変更箇所と思われる点-->
			}

        ]]>
    </mx:Script>

	<!--データグリッド-->
	<mx:DataGrid x="10" y="101" width="619" height="162" id="addressBook_datagrid" dataProvider="{addressBookCol}" mouseDown="fnc_dragStart(event);">
		<mx:columns>
			<mx:DataGridColumn headerText="name" dataField="name" width="150"/>
			<mx:DataGridColumn headerText="mailAddress" dataField="mailAddress" width="250"/> <!-- テキストエリアにドラッグ&ドロップさせたいメールアドレス -->
			<mx:DataGridColumn headerText="comment" dataField="comment" width="200"/>
		</mx:columns>
	</mx:DataGrid>
	
	<!--テキストエリア-->
	<mx:TextArea x="51" y="323" width="578" verticalScrollPolicy="on" id="to_textarea" height="56" dragEnter="fnc_dropStart(event);" dragDrop="fnc_dropEnd(event);"/>

</mx:Application>



以上、よろしくお願い致します。
sacreap
投稿日時: 2011-8-10 22:10
一見さん
登録日: 2011-8-10
居住地:
投稿: 3
Re: ドラッグ&ドロップの実現方法について
こんな感じで書けばできるかとおもいます。
実際には、バリデーションや例外処理を入れた方がいいかなぁと思います。

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"  creationComplete="initApp();">
	<mx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.events.DragEvent;
			import mx.managers.DragManager;

			private function initApp():void {
				srcgrid.dataProvider = new ArrayCollection([
					{name:'hoge', mailAddress:'a@abc', id:1},{name:'foo', mailAddress:'b@abc', id:2},{name:'bar', mailAddress:'c@abc', id:3},
				]);
			}

			private function doDragEnter(event:DragEvent):void {
				var target:TextArea = event.currentTarget as TextArea;
				DragManager.acceptDragDrop(target);
			}

			private function doDragDrop(event:DragEvent):void {
				var items:Object = event.dragSource.dataForFormat("items");
				var dest:TextArea = TextArea(event.target);
				dest.text = items[0].mailAddress;
			}
		]]>
	</mx:Script>
	<mx:Label text="User List"/>
	<mx:DataGrid id="srcgrid" dragEnabled="true">
		<mx:columns>
			<mx:DataGridColumn dataField="id"/>
			<mx:DataGridColumn  dataField="name"/>
			<mx:DataGridColumn dataField="mailAddress"/>
		</mx:columns>
	</mx:DataGrid>
	<mx:TextArea text="pleas drag hear!"  dragEnter="doDragEnter(event)" dragDrop="doDragDrop(event)" />
</mx:WindowedApplication>
5001758
投稿日時: 2011-8-24 13:57
お馴染みさん
登録日: 2010-9-3
居住地:
投稿: 11
Re: ドラッグ&ドロップの実現方法について
ご返答いただきまして、ありがとうございます。
確認してみたところ、実現することができました。
ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を