Auto Resize Controls

Posted On 2018-03-18 by JulitoAmodia
Keywords:
Tags: VB6 Miscellaneous 
Views: 39


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 the Author

JulitoAmodia has posted a total of 1 articles.


Comments On This Post

No comments on this post yet!


Do you have a thought relating to this post? You can post your comment here. If you have an unrelated question, you can use the Q&A section to ask it.

Or you can drop a note to the administrators if you're not sure where you should post.


Your IP address is:23.20.165.182

Before you can post, you need to prove you are human. If you log in, this test goes away.




Code Links