Ich würde TWMMoving auswerten und die Ausdehnung des Forms gegen den screen testen.
Als Ansatz :
Delphi-Quellcode:
type
TWMMoving = record
Msg: Cardinal;
fwSide: Cardinal;
lpRect: PRect;
Result: Integer;
end;
TForm1 = class(TForm)
Image1: TImage;
cxLabel2: TcxLabel;
private
procedure OnMoving(var Msg: TWMMoving); message WM_MOVING;
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.OnMoving(var Msg: TWMMoving);
begin
if self.Top<1 then
begin
self.Top:=1;
end;
if (self.Left<1) then
begin
self.Left:=1;
end;
if ((self.Left+self.Width)>screen.Width) then
begin
self.Left:=(screen.Width-self.Width);
end;
if ((self.Top+self.Height)>screen.Height) then
begin
self.Top:=screen.Height-self.Height;
end;
end;