除了更改修饰符之外,您还应该在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;