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 )