VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



This will Resize your controls automatically when everytime the form resize. it will also prevent t

by Julito Amodia (8 Submissions)
Category: Custom Controls/Forms/Menus
Compatability: VB 6.0
Difficulty: Unknown Difficulty
Originally Published: Wed 17th May 2006
Date Added: Mon 8th February 2021
Rating: (1 Votes)

This will Resize your controls automatically when everytime the form resize. it will also prevent the controls for resizing. this is useful in

API Declarations


'''Put this code on the form_load event
G_P_AdjustFormon
'''Put this code on the form_Resize event
G_P_FormResize

Rate This will Resize your controls automatically when everytime the form resize. it will also prevent t




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
'         If TypeOf .Controls(i) Is vaSpread Then
'         ' .Controls(i).FontSize = .Controls(i).FontSize * SFFont
'         Else
'           .Controls(i).FontSize = .Controls(i).FontSize * SFFont
'         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




Download this snippet    Add to My Saved Code

This will Resize your controls automatically when everytime the form resize. it will also prevent t Comments

No comments have been posted about This will Resize your controls automatically when everytime the form resize. it will also prevent t. Why not be the first to post a comment about This will Resize your controls automatically when everytime the form resize. it will also prevent t.

Post your comment

Subject:
Message:
0/1000 characters