ドラッグオブジェクトを使ったドラッグアンドドロップのカスタマイズ

提供: RAD Studio
移動先: 案内検索

コントロールの利用:インデックス への移動

TDragObject の下位オブジェクトを使用して,オブジェクトのドラッグアンドドロップ動作をカスタマイズできます。標準のドラッグオーバーイベントとドラッグアンドドロップイベントは,ドラッグされる項目のソースと,受け入れ側のコントロールにおけるマウスカーソルの座標をパラメータとして受け取ることができます。付加的な状態情報を取得するには,TDragObject または TdragObjectExからカスタムドラッグオブジェクトを派生させ,その仮想メソッドをオーバーライドします。カスタムドラッグオブジェクトを OnStartDrag イベントで作成します。

通常,ドラッグオーバーイベントおよびドラッグアンドドロップイベントのソースパラメータは,ドラッグ操作を開始したコントロールです。種類の異なる複数のコントロールが同一種類のデータの操作を開始できる場合,ソースは各種類のコントロールをサポートする必要があります。ただし,TDragObject の子オブジェクトを使用する場合は,ドラッグオブジェクト自身がソースです。つまり,各コントロールが自分自身の OnStartDrag イベントに同一種類のドラッグオブジェクトを生成すれば,受け入れ先では 1 種類のオブジェクトだけを処理すればよいことになります。ドラッグを開始したコントロールとは対照的に,ドラッグオーバーイベントおよびドラッグアンドドロップイベントは IsDragObject 関数を呼び出すことにより,ソースがドラッグオブジェクトであるかどうかを識別できます。

TDragObjectEx の下位オブジェクトが自動的に解放されるのに対して,TDragObject の下位オブジェクトは自動的に解放されません。TDragObject の下位オブジェクトを明示的に解放させていない場合は,TDragObjectEx から派生するように変更するとメモリの損失を防止できます。

アプリケーションの実行形式ファイルに実装されたフォームと,.DLL ファイルを使って実装されたフォームの間でもドラッグ項目をドラッグできます。複数の .DLL ファイルを使って実装されたフォーム間でもドラッグできます。

関連項目