Du brauchst einfach eine Boolean-Variable (im Bereich private deines Form)
mit dem du das "Magnetic-Snap" Verhalten an- und abschalten kannst.
Wichtig ist auch, dass du
nicht über die globale Variable
Form1 auf die Daten zugreifst.
Delphi-Quellcode:
procedure TForm1.OnMove(var aMsg:TWMMove);
begin
if not FMagneticSnap then Exit;
if Left < 20 then Left:=0;
if Top < 20 then Top:=0;
if Left+Width > Screen.Width-20 then
Left:=Screen.Width-Width;
if Top+Height > Screen.Height-20 then
Top:=Screen.Height-Height;
end;