Ah, es ist doch normal so (hatte ich nicht mehr in Erinnerung):
Delphi-Quellcode:
procedure TControl.BeginDrag(Immediate: Boolean; Threshold: Integer);
var
P: TPoint;
begin
if (Self is TCustomForm) and (FDragKind <> dkDock) then
raise EInvalidOperation.CreateRes(@SCannotDragForm);
CalcDockSizes;
if (DragControl = nil) or (DragControl = Pointer($FFFFFFFF)) then
begin
DragControl := nil;
if csLButtonDown in ControlState then
begin
GetCursorPos(P);
P := ScreenToClient(P);
Perform(WM_LBUTTONUP, 0, Longint(PointToSmallPoint(P))); // <----
end;
{ Use default value when Threshold < 0 }
if Threshold < 0 then
Threshold := Mouse.DragThreshold;
// prevent calling EndDrag within BeginDrag
if DragControl <> Pointer($FFFFFFFF) then
DragInitControl(Self, Immediate, Threshold);
end;
end;
In dem Fall musst Du wohl ein Flag einführen und das in der MouseUp-Behandlung abprüfen.