devxlogo

How to Automatically Resize Forms

How to Automatically Resize Forms

The ElasticForm subroutine, part of CodeBank’s standard procedurelibrary, automatically repositions and sizes all controls on anSDI form when the user or code resizes the form. To use the routine,simply lay out the form as you normally would in design mode.Then call the subroutine once in the Form_Load event, with theInit parameter set to true, so that it can record the initialpositions of the controls. Call the sub in the Form_Resize event,with Init set to False, to automatically resize and repositionthe controls. The procedure accommodates any number of nestedcontainers, any ScaleMode, and all types of controls. Note, however,that the procedure relies on the Tag property to store positioninformation for each control, and so cannot be used if Tag isbeing used for another purpose (see ElasticFormArray). Also, MDIchild forms are resized by VB before the Form_Load or Form_Initializeevents, so the proportions of each form will be distorted. WithMDI children, you must use ElasticFormArray (available in CodeBank’sstandard library) and specify the optional DesignWidth and DesignHeightparameters:

 Public Sub ElasticForm(frm As Form, _        Init As Integer)On Error Resume NextDim ctl As ObjectIf Init = True Then        For Each ctl In frm.Controls                ctl.Tag = Format$(ctl.Left _                        / frm.ScaleWidth, ".0000") _                        & Format$(ctl.Top / frm.Scale_                        Height, ".0000") & Format$_                        (ctl.Width / frm.ScaleWidth, _                        ".0000") & Format$(ctl._                        Height / frm.ScaleHeight, _                        ".0000")        Next ctlElse        For Each ctl In frm.Controls                ctl.Move Val(Mid$(ctl.Tag, 1, _                        5)) * frm.ScaleWidth, _                        Val(Mid$(ctl.Tag, 6, 5)) * _                        frm.ScaleHeight, Val(Mid$_                        (ctl.Tag, 11, 5)) * frm._                        ScaleWidth, Val(Mid$(ctl.Tag, 16, _                        5)) * frm.ScaleHeight        Next ctlEnd IfEnd Sub
See also  Does It Make Sense to Splurge on a Laptop?
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist