// Wenn man BorderStyle = bsNone setzt,
läßt sich die Form nicht
// mehr am Rand mit der Maus vergrößern bzw. verkleinern. Lösungen:
// Getestet mit D4 unter XP
// Variante 1:
// Mit dem folgenden Code kann
man einen Bereich am Fensterrand
// festlegen, in welchem man das Fenster mit
der gedrückt gehaltenen
// linken Maustaste trotzdem aufziehen kann.
// Befindet sich der Mauszeiger nicht in dieser Randzone, wird das
// gesamte Fenster hin- und hergeschoben.
|
entspricht
beispielsweise |
|
Borderstyle = bsSizeable |
|
BorderStyle = bsNone |
const
RandZone: integer = 20;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var i: integer;
begin
if button = mbleft then begin
if x <= RandZone then begin
if y <= RandZone then
i := $F004 else
if y >= clientheight - RandZone then
i := $F007 else
i := $F001;
end else if x >= clientwidth - RandZone then begin
if y <= RandZone then
i := $F005 else
if y >= clientheight - RandZone then
i := $F008 else
i := $F002;
end else if y <= RandZone then
i := $F003
else if y >= clientheight - RandZone then
i := $F006
else
i := $F012;
releaseCapture;
perform(wm_syscommand, i, 0);
end;
end;
// P.S.
// Falls man auf die Form ein TPanel mit der Eigenschaft
//
Align = alClient
setzt
(um einen Rand für die
ansonsten randlose
// Form zu erhalten),
muss der Code natürlich in
//
TForm1.Panel1MouseDown
stehen.
//----------------------------------------------------------------
//
Variante 2:
// Man gibt dem Fenster wieder eine Umrandung.
type
TForm1 = class(TForm)
...
...
private
{ Private-Deklarationen }
public
procedure CreateParams(var Params: TCreateParams); override;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := (Params.Style or WS_THICKFRAME);
end;
|