Search Tools Links Login

Auto Resize Controls


This will Resize your controls automatically when every time the form is resized. It can also prevent the controls for resizing. You can also use this for custom controls.

Put this code on the form_load event:

G_P_AdjustFormon

Put this code on the form_Resize event

G_P_FormResize

Finally, place this code in a module:

Option Explicit

Public Xtwips As Integer, Ytwips As Integer
Public Xpixels As Integer, Ypixels As Integer

Type FRMSIZE
   Height As Long
   Width As Long
End Type

Public RePosForm As Boolean
Public DoResize As Boolean
Dim MyForm As FRMSIZE
Dim DesignX As Integer
Dim DesignY As Integer
Dim ScaleFactorX As Single, ScaleFactorY As Single

Sub Resize_For_Resolution(ByVal SFX As Single, ByVal SFY As Single, MyForm As Form)
   Dim i As Integer
   Dim SFFont As Single
   SFFont = (SFX + SFY) / 2.2
   On Error Resume Next
   With MyForm
      For i = 0 To .Count - 1
         If TypeOf .Controls(i) Is DataGrid Then
            .Controls(i).Left = .Controls(i).Left * SFX
            .Controls(i).Top = .Controls(i).Top * SFY
            .Controls(i).Width = .Controls(i).Width * SFX
         ElseIf TypeOf .Controls(i) Is Label Then
            .Controls(i).Move .Controls(i).Left * SFX, _
            .Controls(i).Top * SFY, _
            .Controls(i).Width * SFX, _
            .Controls(i).Height
         ElseIf TypeOf .Controls(i) Is CommandButton Then
            .Controls(i).Move .Controls(i).Left * SFX, _
            .Controls(i).Top * SFY, _
            .Controls(i).Width * SFX, _
            .Controls(i).Height
         Else
            .Controls(i).Move .Controls(i).Left * SFX, _
            .Controls(i).Top * SFY, _
            .Controls(i).Width * SFX, _
            .Controls(i).Height * SFY
         End If
      Next i
      If RePosForm Then
         .Move .Left * SFX, .Top * SFY, .Width * SFX, .Height * SFY
      End If
   End With
End Sub

Public Sub G_P_FormResize(TheForm As Form)

   Dim ScaleFactorX As Single, ScaleFactorY As Single

   If Not DoResize Then
      DoResize = True
      Exit Sub
   End If

   RePosForm = False
   ScaleFactorX = TheForm.Width / MyForm.Width
   ScaleFactorY = TheForm.Height / MyForm.Height
   Resize_For_Resolution ScaleFactorX, ScaleFactorY, TheForm
   MyForm.Height = TheForm.Height
   MyForm.Width = TheForm.Width

End Sub

Public Sub G_P_AdjustForm(TheForm As Form, Optional DX As Integer = 640, Optional DY As Integer = 480)

   Dim Res As String ' Returns resolution of system

   ' Put the design time resolution in here
   ' provide DX , DY as design time resolution of form
   ' i.e. the resulution of Programmers Machine

   DesignX = DX
   DesignY = DY
   RePosForm = True
   DoResize = False
   Xtwips = Screen.TwipsPerPixelX
   Ytwips = Screen.TwipsPerPixelY
   Ypixels = Screen.Height / Ytwips
   Xpixels = Screen.Width / Xtwips
   ScaleFactorX = (Xpixels / DesignX)
   ScaleFactorY = (Ypixels / DesignY)
   TheForm.ScaleMode = 1
   Resize_For_Resolution ScaleFactorX, ScaleFactorY, TheForm
   Res = Str$(Xpixels) + " by " + Str$(Ypixels)
   'Debug.Print Res
   MyForm.Height = TheForm.Height
   MyForm.Width = TheForm.Width

End Sub

 

About this post

Posted: 2018-03-18
By: JulitoAmodia
Viewed: 422 times

Categories

Visual Basic 6

Attachments

No attachments for this post


Loading Comments ...

Comments

No comments have been added for this post.

You must be logged in to make a comment.