4D Writeでは同じ4D Writeエリア内、異なる2つの4D Writeエリア間、また4D Writeと4D間でドラッグ&ドロップ操作を行えます。
ドラッグ&ドロップはデフォルト (標準モード) またはプログラムで使用できます。
デフォルトで4D Writeは、選択されたテキストやピクチャーをマウスでで動かし、移動やコピーを行う標準の自動ドラッグ&ドロップを提供します。
ドラッグ&ドロップを使用してピクチャーが4D Writeエリアに挿入されると、自動でテキスト中にペーストされます。
データは同じあるいは2つの4D writeエリア間でドラッグ&ドロップされると、ドラッグ元のエリアから削除され、移動されます。データをコピーしたい場合、Ctrl (Windows) や Command (Mac OS) を操作の間押したままにします。
このタイプのドラッグ&ドロップでは特別なプログラミングを必要としません。4Dフォーム内でドラッグ&ドロップを行う場合は単に“ドラッグ可”や“ドロップ可”プロパティを設定するだけです (後述)。
4D Writeエリアと4Dオブジェクト間でデータをドラッグ&ドロップできます。
BLOBを除き、すべての型の4Dフィールドと変数を4D Writeエリアにドロップしたり、あるいはその逆が行えます。4D Writeエリアには元の型に基づき、自動でテキストまたはピクチャとして挿入されます。
警告: 4Dフィールドや変数から4D Writeエリアにテキストデータをドラッグするには、操作の間Alt (Windows) または Option (Mac OS) キーを押す必要があります。
4Dえりあから4D Writeエリアに、テキストの一部を選択してドラッグ&ドロップすることはできません。オブジェクトの内容全体がコピーできます。階層リストの場合、リ スト参照だけがコピーされます。リストの内容を扱うには、4Dのドラッグ&ドロップコマンドを使用します。
- 4D Writeエリアと4Dオブジェクトでドラッグ&ドロップを行う場合、4D側でドラッグ&ドロップされるオブジェクトごとに"ドラッグ可"プロパティが選 択されていなければなりません。
- 4D Writeエリアがフォーム上に置かれている場合、他の4D Writeエリアからの4Dオブジェクトや要素を受け取るためには、エリアのプロパティで“ドロップ可”プロパティが選択されていなければなりません。
エ リアの要素をドラッグするためには、“ドラッグ可”プロパティが選択されていなければなりません。 - 外部ウィンドウで開かれた4D Writeの場合、ドラッグ&ドロップはデフォルトで有効です。ドラッグ&ドロップを制御するにはWR SET AREA PROPERTYコマンドを使用します。
4D Writeのデフォルトのドラッグ&ドロップにより直感的で使いやすい、より汎用的なインターフェースを作成できます。
しかし特定の ケースでは、このメカニズムをカスタマイズしたくなることがあります。例えば以下のようなケースです:
- 他のフォームオブジェクト (階層リスト、スクロールエリア等) からのドラッグ&ドロップを使用する
- ドラッグ&ドロップの効果を制御する、例えばドラッグした データを複数の場所にコピーするなど。
この場合、4Dのドラッグ&ドロップ管理コマンドと4D Writeのコマンドを組み合わせる必要があります。
まず、On Drag OverおよびOn Dropを、使用するオブジェクトで有 効にします。
4D Writeエリアのドラッグ&ドロップのプロパティはWR GET AREA PROPERTYとWR SET AREA PROPERTYコマンドで 設定できます。
4D Writeエリアがフォームに含まれている場合、組み込まれたエリアオブジェクトでOn Drag OverとOn Dropフォームイベントで使用できます。外部ウィンドウの場合、WR ON EVENTコマンドを使用して特別にイベントを管理しなければなりません。
動かされたオブジェクトのタイプを正確に制御したい場合、4DのDRAG AND DROP PROPERTIESコマンドを使用しなければなりません。4Dコマンドはでドラッグ&ドロップの結果としていかなるアクションも 実行できます。
2つの4D Writeエリア間のドラッグ&ドロップの場合、ドラッグ元のエリアはWR GET DRAG SOURCEコマンドで知ることができます。
オブジェクトがドロップされた4DのエリアはWR GET DROP TARGETコ マンドで、およびオブジェクトがドロップされた正確な位置 (ヘッダー、ボディー、フッターなどのエリアとカーソルの位置) はWR GET DROP INFOコマンドで知ることができます。