Thema: Delphi Fenster am Rand andocken

Einzelnen Beitrag anzeigen

Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: Fenster am Rand andocken

  Alt 10. Sep 2008, 23:01
Zitat von Christian18:
Hallo,

Und wie kann mache ich dass, damit ich ein fenster nicht über den rand hinaus schieben kann?

Wenn ich folgendes mache, dass bilkt das fenster immer.
if Form1.Left <= 0 then Form1.Left:=0;


Delphi-Quellcode:
  private
    { Private declarations }
    procedure WMMoving(var msg: TWMMoving); message WM_MOVING;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMMoving(var msg: TWMMoving);
var
  screenArea: TRect;
begin
  screenArea := Screen.WorkareaRect;
  if msg.lprect^.Left < screenArea.left then
    OffsetRect(msg.lprect^, screenArea.Left - msg.lpRect^.Left, 0);
  if msg.lprect^.Top < screenArea.top then
    OffsetRect(msg.lprect^, 0, screenArea.Top - msg.lprect^.Top);
  if msg.lprect^.Right > screenArea.Right then
    OffsetRect(msg.lprect^, screenArea.right - msg.lprect^.Right, 0);
  if msg.lprect^.Bottom > screenArea.Bottom then
    OffsetRect(msg.lprect^, 0, screenArea.bottom - msg.lprect^.Bottom);
  inherited;
end;

Falls dein Delphi TWMMoving nicht erkennt dieses so deklarieren:

Delphi-Quellcode:
type
 TWMMoving = record
    Msg: Cardinal;
    fwSide: Cardinal;
    lpRect: PRect;
    Result: Integer;
  end;
( Quellangabe )
Thomas
  Mit Zitat antworten Zitat