// 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;
|