2011-07-21 9 views
2

私はアイテムを並べ替えるためにDataGridにドラッグアンドドロップを使用しています。しかし、ユーザがCtrlを押したままであれば、ドラッグ操作を開始することができます。どうすればコピーを完全に無効にできますか? (ちょうどドロップをキャンセルするだけでなく、(+)アイコンを示すから、Ctrlキー+ドラッグを防ぐことはできません)フレックスDataGrid /リストのドラッグアンドドロップ - コピーを避ける方法

+0

を? Flex 3または4? –

+0

@J_A_X、4.5 –

答えて

1

一つのアプローチは、次のようになります。

  1. データグリッド上のKeyDownイベントのために聞いてください。ユーザーがCTRLを押し続けている場合は、ダーティーフラグを設定します。
  2. DataGridのdragStartイベントを待ち受けます。 dirtyフラグがtrueに設定されているかどうかを確認し、そうであれば、event.preventDefault()はドラッグを終了する必要があります。

必要に応じてダーティーフラグをリセットすることを忘れないでください。

+0

を使って試してみてください。 dragStart中のpreventDefaultは、ドラッグ操作をキャンセルしていないようです。 –

+0

dragStartは、既に開始したことを意味します。 –

6

これは(スパークリストのために)私の仕事:あなたが使用しているSDK

<s:List dragEnabled="true" dropEnabled="true" dragMoveEnabled="true" 
dragEnter="{event.ctrlKey = false}" dragOver="{event.ctrlKey = false}"> 
... 
</s:List> 
0
To avoid the copying use dragDropHandler() in which you can check weather the cntrl key is pressed while dragging, if yes you can restrict the dragdrop. 

protected function myTree_dragDropHandler(event:DragEvent):void { 
      if(event.ctrlKey== true) { 
       event.preventDefault(); 
       cvTree.hideDropFeedback(event); 
       return; 
      } 
} 
関連する問題