Este código solo controla cuando mueves la ventana a la izquierda y derecha:
Código Delphi
[-]
type
TForm1 = class(TForm)
private
public
procedure Moviendo(var message:TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Moviendo(var message: TWMWindowPosChanging);
begin
if message.WindowPos.x + self.Width >= screen.Width then
message.WindowPos.x := screen.Width - self.Width
else if message.WindowPos.x <= 0 then
message.WindowPos.x := 0;
end;
Lo que hace es capturar el mensaje que windows le pasa a una ventana cuando ésta se está moviendo (o cambiando su tamaño) WM_WINDOWPOSCHANGING y en la rutina lo que hago es ver la posición actual message.windowPos.x y cuando se salga de la pantalla, le asigno un valor fijo.
Faltaría por comprobar el límite de arriba y de abajo, pero te dejo que trastees un poco

.
Saludos