2010. december 4., szombat
How to limit MDI child form movement to the client area of the MDI parent form
Problem/Question/Abstract:
Is it possible to limit the MDI client form movement, so that the form cannot be moved outside the client area of the MDI form?
Answer:
Yes, you can handle the WM_WINDOWPOSCHANGING message in the child forms and modify the message parameters if needs be to keep the child fully visible. Of course this is a breach of the standard Windows behaviour.
private {in form declaration}
procedure WMWINDOWPOSCHANGING(var msg: TWMWINDOWPOSCHANGING);
message WM_WINDOWPOSCHANGING;
procedure TForm1.WMWINDOWPOSCHANGING(var msg: TWMWINDOWPOSCHANGING);
var
r: TRect;
begin
with msg.Windowpos^ do
begin
if (flags and SWP_NOMOVE) = 0 then
begin
r := GetClientrect(Application.Mainform.handle, r);
if x < 0 then
x := 0;
if y < 0 then
y := 0;
if (x + cx) > r.right then
x := r.right - cx;
if (y + cy) > r.bottom then
y := r.bottom - cy;
end;
inherited;
end;
end;
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése