是否有方法在TListView项开始之前,在自动拖动模式下拒绝拖动该项?

是否有方法在TListView项开始之前,在自动拖动模式下拒绝拖动该项?,listview,delphi,drag-and-drop,delphi-2009,Listview,Delphi,Drag And Drop,Delphi 2009,这很简单。如果我认为某个特定项目不适合拖动,我希望有机会拒绝开始拖动(在拖动之前)。有可能吗 我尝试实现自己的拖动系统,但在某些情况下,它无法正常工作: procedure TNewListView.MouseMove(Shift: TShiftState; X, Y: Integer); var StartIt: Boolean; DragIndex: Integer; begin if (ssLeft in Shift) and not Dragging then begin

这很简单。如果我认为某个特定项目不适合拖动,我希望有机会拒绝开始拖动(在拖动之前)。有可能吗

我尝试实现自己的拖动系统,但在某些情况下,它无法正常工作:

procedure TNewListView.MouseMove(Shift: TShiftState; X, Y: Integer);
var StartIt: Boolean;
    DragIndex: Integer;
begin
 if (ssLeft in Shift) and not Dragging then begin
  DragIndex:= GetItemIndexAt(X, Y);
  if (DragIndex >= 0) and IsIndexSelected(DragIndex) then begin
   StartIt:= False;
   if Assigned(FOnBeforeDrag) then FOnBeforeDrag(Self, DragIndex, StartIt);
   if StartIt then BeginAutoDrag;
  end;
 end;
 inherited;
end;

你可以从<代码> OnStartDrag < /COD>事件中看到代码> CuffelRoad < /C>,但是在这种情况下,我会考虑使用手动模式(因为你将取消操作,而不需要首先启动)。但是我在ListView方法中找不到<代码> CuffelRoad < /代码>…这是一个独立的过程,从<代码>控件< /代码>模块。哇!这正是我所需要的!:)谢谢你可以把它贴出来作为答案。但我不明白你在说什么手动模式。。。我用自动模式测试了它,它工作正常。在手动模式下,没有必要取消它,因为您可以选择不从头开始。自动模式是问题所在……您可以自己监听
LVN_BEGINDRAG
通知和
BEGINDRAG
(但仅当所选项目满足您的条件时)。