// Ein Fenster kann sich nur innerhalb der Arbeitsfläche bewegen:


// Getestet mit D4 unter XP

type 
 
  TWMMoving = record 
    M: Cardinal; 
    fwSide: Cardinal; 
    lpRect: PRect; 
    Result: Integer; 
  end; 
 
  TForm1 = class(TForm) 
  private 
    { Private-Deklarationen } 
  public 
    procedure WMMoving(var M: TWMMoving); message WM_MOVING; 
  end; 
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.DFM} 
 
procedure TForm1.WMMoving(var M: TWMMoving); 
var 
  rct: TRect; 
begin 
  SystemParametersInfo(SPI_GETWORKAREA, 0, @rct, 0); 
  if M.lprect^.left < rct.left then 
    OffsetRect(M.lprect^, rct.left - M.lprect^.left, 0); 
  if M.lprect^.top < rct.top then 
    OffsetRect(M.lprect^, 0, rct.top - M.lprect^.top); 
  if M.lprect^.right > rct.right then 
    OffsetRect(M.lprect^, rct.right - M.lprect^.right, 0); 
  if M.lprect^.bottom > rct.bottom then 
    OffsetRect(M.lprect^, 0, rct.bottom - M.lprect^.bottom); 
  inherited; 
end;



 

Zugriffe seit 6.9.2001 auf Delphi-Ecke