【ご質問】
TextField等入力可能なコントロールに対して、
ドラッグ&ドロップによる値の修正を制御することは可能でしょうか。
【回答】
TextFieldUIクラスのon-drop、on-drag-over、on-drag-startedメソッドを
オーバーライドし、ドラッグ&ドロップ時の処理をさせないようにすることで実現可能となります。
詳細は以下のサンプルをご参照ください。
(グラフィック階層の違いにより下記サンプルはバージョン6以前では動作しません。)
| {curl 7.0,8.0 applet}{curl-file-attributes character-encoding = “shift-jis”}
 {define-class public NoMoveTextFieldUI {inherits SkinnableTextFieldUI}{constructor public {default …}
 {construct-super {splice …}
 }
 }
   {method public open {on-drag-started e:DragStarted}:void{if not e.consumed? and
 self.enabled? and
 self.input-method-info == null
 then
 {self.start-dragscroll e, start-leaf = self.string-graphic}
 {e.consume}
 }
 {super.on-drag-started e}
 }
   {method public {on-drop e:Drop}:void{e.consume}
 }
 
 {method public {on-drag-over e:DragOver}:void
 {e.consume}
 }
 }
 {Table columns = 2,“ドラッグ&ドロップで切り取り、挿入ができない”,
 {TextField
 ui-object = {NoMoveTextFieldUI},
 value = “0123456789”
 },
 “通常のTextField”,
 {TextField
 value = “ABCDEFGHIJK”
 }
 }
 |