// Mit BorderStyle=bsNone wird ein Fenster ohne Titelzeile erstellt,
// dass jedoch auch keinen Rand mehr hat. Dieses Problem wird durch
// Überschreiben von
CreateParams anstelle von BorderStyle=bsNone
// gelöst. Wie man so ein Fenster mit der Maus auf dem Desktop
// verschieben kann, steht unter
Formen und Komponenten verschieben
// Siehe aber auch: Rand zeichnen

// Getestet mit D4 unter Win98

// 1. Beim Programmstart, wenn das Fenster noch nicht sichtbar ist:

...
private 
procedure createParams(var Params: TCreateParams); override; 
public 
{ Public-Deklarationen} 
end; 
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.DFM} 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  borderstyle := bsSizeable; 
end;


// und dann kommt eine der vier hier aufgeführten Varianten:

procedure TForm1.createParams(var Params: TCreateParams); 
begin 
  inherited createparams(Params); 
  with Params do 
    style := (style or ws_popup) and (not ws_dlgframe); 
end;
procedure TForm1.createParams(var Params: TCreateParams); 
begin 
  inherited createparams(Params); 
  with Params do begin 
    style := (style or ws_popup) and (not ws_dlgframe); 
    ExStyle := ExStyle + WS_EX_STATICEDGE; 
  end; 
end;
procedure TForm1.createParams(var Params: TCreateParams); 
begin 
  inherited createparams(Params); 
  with Params do begin 
    style := (style or ws_popup) and (not ws_dlgframe) 
      and (not ws_border); 
    ExStyle := ExStyle + WS_EX_STATICEDGE; 
  end; 
end;
procedure TForm1.createParams(var Params: TCreateParams); 
begin 
  inherited createparams(Params); 
  with Params do 
    style := ws_border or ws_popup; 
end;

 

// 2. Bei laufendem Programm und sichtbarem Fendster:

 
  
var  
  Form1: TForm1;  
  
implementation  
  
{$R *.DFM}  
  
procedure TForm1.Button1Click(Sender: TObject);  
var style: dword;  
begin  
  style := getwindowlong(handle, GWL_STYLE);  
  setwindowlong(handle, GWL_STYLE, style and (not ws_dlgframe)  
    and (not ws_border));  
// oder: 
// setwindowlong(handle, GWL_STYLE, style and not WS_CAPTION); 
  clientheight := height;  
end;


Zugriffe seit 6.9.2001 auf Delphi-Ecke