anchor.diff:  procedure TATTabs.DoTabDrop;
   var
     NFrom, NTo: integer;
  +  ACanDrop: boolean;
   begin
     NFrom:= FTabIndex;
     if not IsIndexOk(NFrom) then Exit;
     NTo:= FTabIndexDrop;
     if not IsIndexOk(NTo) then
       NTo:= TabCount-1;
  -  if NFrom=NTo then Exit;  
  +  if NFrom=NTo then Exit;
  +
  +  ACanDrop:= true;
  +  if Assigned(FOnTabDropQuery) then
  +    FOnTabDropQuery(Self, NFrom, NTo, ACanDrop);
  +  if not ACanDrop then Exit;
   
     FTabList.Items[NFrom].Index:= NTo;
     SetTabIndex(NTo);
  
positive.code:     FOnTabChangeQuery: TATTabChangeQueryEvent;
      FOnTabGetTick: TATTabGetTickEvent;
      FOnTabGetCloseAction: TATTabGetCloseActionEvent;
  
      function ConvertButtonIdToTabIndex(Id: TATTabButton): integer; inline;
      procedure DoAnimationTabAdd(AIndex: integer);
  
negative.code:     property OnTabChangeQuery: TATTabChangeQueryEvent read FOnTabChangeQuery write FOnTabChangeQuery;
      property OnTabGetTick: TATTabGetTickEvent read FOnTabGetTick write FOnTabGetTick;
      property OnTabGetCloseAction: TATTabGetCloseActionEvent read FOnTabGetCloseAction write FOnTabGetCloseAction;
      property OnTabDblClick: TATTabDblClickEvent read FOnTabDblClick write FOnTabDblClick;
      property OnTabDropQuery: TATTabDropQueryEvent read FOnTabDropQuery write FOnTabDropQuery;
    end;
  
  var
  