// Hiermit kann man die Ausmaße eines maximierten Fensters selbst bestimmen.
// Im Beispiel werden vom oberen Bildschirmrand 100 Pixel frei gelassen.
// Querverweis:
die Ausmaße eines Fensters begrenzen


// Getestet mit D4 unter XP

 ...
 procedure FormDblClick(Sender: TObject);
 private 
    procedure minmax(var aMsg: TWMGetMinMaxInfo); message WM_GETMINMAXINFO; 
    procedure WMNChittest(var Msg: TWMNChittest); message WM_NCHittest; 
  public 
  { Public-Deklarationen } 
  end; 
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.DFM} 
 
const 
  obenfrei: integer = 100; 
  drin: boolean = false; 
 
procedure TForm1.minmax(var aMsg: TWMGetMinMaxInfo); 
var r: TRect; 
begin 
  SystemParametersInfo(SPI_GETWORKAREA, 0, @r, 0); 
  with aMsg.MinMaxInfo^ do begin 
    ptMaxPosition.y := obenfrei; 
    ptMaxSize.y := r.bottom - ptMaxPosition.y; 
  end; 
end; 
 
procedure TForm1.WMNChittest(var msg: TWMNChittest); 
begin 
  DefaultHandler(Msg); 
  if (Msg.result = HTCAPTION) and (windowstate = wsMaximized) 
    then begin 
    Msg.result := HTCLIENT; 
    drin := true; 
  end else 
    drin := false; 
end; 
 
procedure TForm1.FormDblClick(Sender: TObject); 
begin 
  if drin and (windowstate = wsMaximized) then windowstate := wsNormal; 
end; 
 


Zugriffe seit 6.9.2001 auf Delphi-Ecke