如何在VirtualTreeView控件中通过Delphi修改拖动光标的样式?

更新于
2026-10-03 11:37:03
2阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计478个文字,预计阅读时间需要2分钟。

在使用VirtualTreeView时,默认情况下拖动操作支持的是[复制、移动]。移动操作通过带有小方框的箭头指针指示,而复制操作由相同的指针图标显示,但旁边增加了[]+。默认情况下,VT使用复制操作。如需修改,请按以下操作:

1. 按下修改按钮。

2.根据需要调整选项设置。

3.完成后,点击保存以应用更改。

使用VirtualTreeView时,默认情况下拖动操作是[doCopy,doMove].移动操作由带有小方框的箭头指针指示,复制操作由相同的指针图标指示,但旁边添加了[].

默认情况下,VT使用复制操作,如果按下修改键(SHIFT键),它会修改操作以移动,从而从指针中删除[].

这就是我需要的:

>反转操作(默认是移动,按下修改键 – 复制),因此反向指针箭头
>替换修饰键 – CTRL而不是SHIFT
>读取两个操作中的哪一个发生的事件并开始复制或移动操作

任何指向正确方向的指标都值得赞赏.

除了更改修饰符之外,您应该在OnDragOver事件处理程序中更改您将要执行的操作.因此,要将CTRL键添加为复制操作修饰符,您可以编写如下内容.此事件中设置的效果参数值也会更改拖动光标,具体取决于所选操作.除了传递给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;

本文共计478个文字,预计阅读时间需要2分钟。

在使用VirtualTreeView时,默认情况下拖动操作支持的是[复制、移动]。移动操作通过带有小方框的箭头指针指示,而复制操作由相同的指针图标显示,但旁边增加了[]+。默认情况下,VT使用复制操作。如需修改,请按以下操作:

1. 按下修改按钮。

2.根据需要调整选项设置。

3.完成后,点击保存以应用更改。

使用VirtualTreeView时,默认情况下拖动操作是[doCopy,doMove].移动操作由带有小方框的箭头指针指示,复制操作由相同的指针图标指示,但旁边添加了[].

默认情况下,VT使用复制操作,如果按下修改键(SHIFT键),它会修改操作以移动,从而从指针中删除[].

这就是我需要的:

>反转操作(默认是移动,按下修改键 – 复制),因此反向指针箭头
>替换修饰键 – CTRL而不是SHIFT
>读取两个操作中的哪一个发生的事件并开始复制或移动操作

任何指向正确方向的指标都值得赞赏.

除了更改修饰符之外,您应该在OnDragOver事件处理程序中更改您将要执行的操作.因此,要将CTRL键添加为复制操作修饰符,您可以编写如下内容.此事件中设置的效果参数值也会更改拖动光标,具体取决于所选操作.除了传递给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;