ドラッグアンドドロップと onマクロについて


新しく CodeZine に記事が載っていたので紹介させてもらいます。


Curl Apps Galleryで注目を集める「見積デモ」を紐解く 第2回
http://codezine.jp/article/detail/3669


前回に引き続き、Curl社のコンサルタント宮崎氏が、Curl Apps Gallery の
見積もり作成でも似ついて解説されています。
今回の解説テーマは「ドラッグアンドドロップ」です。


Curlは、グラフィカルなオブジェクトを[dragee]というプロパティを設定するだけドラッグ対象することが可能です。
一方、ドロップされる側には、ドラッグしているオブジェクトをグラブしたままマウスで重ねるイベント[DragOver]と
実際にドロップしたときに発生する[Drop]イベントを記述します。


Curlでは、イベントを記述する際に「on マクロ」というものを利用します。

例:ボタンの押下イベント[Action] を追加
ボタンを押すとActionイベントが発生し、
その中で記述されたメッセージのポップアップが実行されます。
{CommandButton
label = "ボタン",
{on Action do
{popup-message "ボタンが押されました"}
}
}

上記の例では、CommandButton というクラスのコンストラクタに on マクロの式を渡しています。
わざわざイベントクラスを別に定義したり、CommandButton クラスのイベントクラスを上書き定義しなくても、
これだけでイベントが追加できるわけです。


on マクロで記述できるイベントは EventHandler クラス型なので、
変数として定義しておけば、add-event-handle や remove-event-handler を利用して、
ダイナミックに追加・削除も可能です。


Curl言語の大きな特徴として、onマクロをはじめとする「マクロ機能」があげられますが、
ぜひドラッグアンドドロップのコードなどを参考にして、体感してみてください。