Is there any way to stop the user resizing the form?
Currently I am using:
When form size changed….
MainForm.Height := 761;
MainForm.Width := 777;
But this looks horrible as it flickers as the user tries to change the form size.
delphiformsresize
Is there any way to stop the user resizing the form?
Currently I am using:
When form size changed….
MainForm.Height := 761;
MainForm.Width := 777;
But this looks horrible as it flickers as the user tries to change the form size.
Best Answer
Fixing the size is easy, you have two options:
Delphi forms have a
BorderStyle
property and aBorderIcons
property. If you setBorderStyle
tobsDialog
, andBorderIcons
tobiSystemMenu
only, user can not resize the form.You can specify value to
Constraints
property. If you write the same number toMinWidth
andMaxWidth
, the width will be fixed.Preventing move is more tricky. I can come up with only these solutions now:
Set
BorderStyle
tobsNone
. You will need to draw the form caption yourself, if needed.Write a message handler to
WM_NCHITTEST
, call inherited first, then check theMessage.Result
forHTCAPTION
. If it isHTCAPTION
, set it toHTCLIENT
instead. This way, you fool Windows to think the user didn't click on caption, so he will not be able to drag. Please try if the user can still move the window opening the system menu, and choosing Move. If so, you have to hide the system menu too (BorderIcons
).Answer found here.