修飾子を変更するだけでなく、OnDragOver
イベントハンドラーで実行する操作を変更する必要があります。したがって、コピー操作修飾子としてキーを追加するには、CTRL次のように記述します。このEffect
イベントで設定されたパラメータ値は、選択した操作に応じてドラッグカーソルも変更します。それがイベントに渡される値であることを除いてOnDragDrop
、ドロップされたソースをどうするかを決定することができます。
procedure TForm1.VirtualStringTree1DragOver(Sender: TBaseVirtualTree;
Source: TObject; Shift: TShiftState; State: TDragState; Pt: TPoint;
Mode: TDropMode; var Effect: Integer; var Accept: Boolean);
begin
Accept := True;
if Shift = [ssCtrl] then
Effect := DROPEFFECT_COPY;
end;
イベントハンドラーでは、OnDragDrop
使用された効果を判別できます。
procedure TForm1.VirtualStringTree1DragDrop(Sender: TBaseVirtualTree;
Source: TObject; DataObject: IDataObject; Formats: TFormatArray;
Shift: TShiftState; Pt: TPoint; var Effect: Integer; Mode: TDropMode);
begin
case Effect of
DROPEFFECT_COPY: ShowMessage('DROPEFFECT_COPY');
DROPEFFECT_MOVE: ShowMessage('DROPEFFECT_MOVE');
end;
end;