private
{ Private declarations }
procedure WMWINDOWPOSCHANGING(var msg:TWMWindowPosChanging);message WM_WINDOWPOSCHANGING;
procedure TForm3.WMWINDOWPOSCHANGING(var msg: TWMWindowPosMsg);
var
workdound:TRect;
remove:Word;
begin
remove:=50;
workdound.left:=form1.left;
workdound.Top:=form1.top;
workdound.Right:=form1.left+form1.Width;
workdound.Bottom:=form1.top+form1.Height;
with msg.WindowPos^ do
begin
if (x+cx<workdound.Left + remove) then
if (x+cx>workdound.left-remove) or ((x+cx>workdound.Left) and (x+cx<workdound.Left+remove)) then
begin
x:=workdound.Left-cx;
end;
if (x>workdound.Right-remove) then
if (x<workdound.Right+remove) or ((x<workdound.Right) and (x>workdound.Right-remove)) then
begin
x:=workdound.Right;
end;
if (y+cy<workdound.top + remove) then
if (y+cy>workdound.top-remove) or ((y+cy>workdound.top) and (y+cy<workdound.top+remove)) then
begin
y:=workdound.Left-cy;
end;
if (y>workdound.bottom-remove) then
if (y<workdound.bottom+remove) or ((y<workdound.bottom) and (y>workdound.bottom-remove)) then
begin
y:=workdound.bottom;
end;
end;
end;