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




 

Zugriffe seit 6.9.2001 auf Delphi-Ecke