Hi,
ist mir gerade auch passiert
Es knallt bei MouseDown und MouseUp.
Wäre schon interessant zu erfahren warum das passiert.
Meine Lösung bis jetzt ist diese:
Code:
function TLayerCollection.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer): TCustomLayer;
begin
if Assigned(MouseListener) then
Result := MouseListener
else
Result := FindLayerAtPos(X, Y, LOB_MOUSE_EVENTS);
// ##########################################################################
// Start Modified
// ##########################################################################
// if (Result <> MouseListener) and ((Result = nil) or ((Result.FLayerOptions and LOB_NO_CAPTURE) = 0)) then
// MouseListener := Result; // capture the mouse
if (Result <> MouseListener) then begin
if ((Result = nil) or ((Result.FLayerOptions and LOB_NO_CAPTURE) = 0)) then MouseListener := Result; // capture the mouse
end;
// ##########################################################################
// End Modified
// ##########################################################################
if Assigned(MouseListener) then
begin
Include(MouseListener.FLayerStates, CStateMap[Button]);
MouseListener.MouseDown(Button, Shift, X, Y);
end;
end;
und
Code:
function TLayerCollection.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer): TCustomLayer;
begin
Result := MouseListener;
if Result = nil then Result := FindLayerAtPos(X, Y, LOB_MOUSE_EVENTS);
if Assigned(Result) then
begin
Exclude(Result.FLayerStates, CStateMap[Button]);
Result.MouseUp(Button, Shift, X, Y);
end;
// ##########################################################################
// Start Modified
// ##########################################################################
// if Assigned(MouseListener) and
// (MouseListener.FLayerStates *
// [lsMouseLeft, lsMouseRight, lsMouseMiddle] = []) then
// MouseListener := nil; // reset mouse capture
if Assigned(MouseListener) then
if (MouseListener.FLayerStates * [lsMouseLeft, lsMouseRight, lsMouseMiddle] = []) then MouseListener := nil; // reset mouse capture
// ##########################################################################
// End Modified
// ##########################################################################
end;
Sind wir die einzigsten mit diesem Problem???