ドラッグした項目の受け入れ
コントロールの利用:インデックス への移動
ユーザーがコントロール上で何かをドラッグすると,コントロールは OnDragOver イベントを受け取り,その時点でユーザーがその項目をドロップした場合に受け入れることができるかどうかを示さなければなりません。ドラッグカーソルが変化し,ドラッグされた項目をコントロールが受け入れられるかどうかをユーザーに示します。コントロールがドラッグした項目を受け入れるには,コントロールの OnDragOver イベントに対応するイベントハンドラを定義します。
このドラッグオーバーイベントには Accept というパラメータがあります。項目を受け入れる場合,イベントハンドラはこのパラメータに True を設定します。Accept を設定することにより,カーソルの種類を変更します(受け入れカーソル,非受け入れカーソルのどちらかに変更)。
ドラッグオーバーイベントには,ドラッグのソースやマウスカーソルの現在位置を示すパラメータもあります。イベントハンドラは各パラメータを参照して,ドラッグを受け入れるかどうかを判断します。次の VCL 例では,ファイルリストボックスからドラッグされた項目だけをディレクトリツリービューで受け入れます。
procedure TFMForm.DirectoryOutline1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
if Source is TFileListBox then
Accept := True
else
Accept := False;
end;
void __fastcall TForm1::TreeView1DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
{
if (Source->InheritsFrom(__classid(TFileListBox)))
}