Главная страница | назад





Article #16163: Adjusting form size to accommodate a required client size

 Question and Answer Database
FAQ1163D.txt Adjusting form size to accommodate a required client size
Category :Miscellaneous
Platform :All
Product :All 32 bit
Question:
How do I adjust my form size to accommodate a required
client size?
Answer:
You can make a call to the Windows API function
AdjustWindowRectEx(). This function takes in a rectangle of your
requested client size in screen space, and returns a rectangle
containing the required window size and position to accommodate
the request.
Notes: 1) The returned rectangle may be larger than the screen.
2) The form's client area may be reduced by the automatic
addition of scroll bars. 3) Windows containing title bars have a
minimum size allowed by the system, and cannot be made smaller.
4) Menus may form multiple menu bars if the Window is sized too
small for the menu to display on a single line. The
AdjustWindowRect() function does not take this into account.
Example:
procedure TForm1.Button1Click(Sender: TObject);
var
pt : TPoint;
r : TRect;
begin
pt := ClientToScreen(Point(0, 0));
r.Left := pt.x;
r.Top := pt.y;
pt := ClientToScreen(Point(128, 128));
r.Right := pt.x;
r.Bottom := pt.y;
AdjustWindowRectEx(r,
GetWindowLong(Form1.Handle, GWL_STYLE),
Form1.Menu = nil, {if Form1 has a menu}
GetWindowLong(Form1.Handle, GWL_EXSTYLE));
Form1.Top := r.Top;
Form1.Left := r.Left;
Form1.Width := r.Right — r.Left;
Form1.Height := r.Bottom — r.Top;
end;
7/16/98 4:31:28 PM

Last Modified: 01-SEP-99