VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



Elastic Resize and Reposition Control

by Ronald Gladhill (1 Submission)
Category: OLE/COM/DCOM/Active-X
Compatability: Visual Basic 3.0
Difficulty: Advanced
Date Added: Wed 3rd February 2021
Rating: (3 Votes)

This OCX will resize and reposition all of the controls on a Form when you resize the form or change resolutions.This Control is based on Elastic Class by Mikhail Shmukler. This newer version is a very little bit faster than before, and also will not resize status bars if they are present. It also prevents a form from being resized smaller than 700 twips.
Installable compiled version 1.2 can be had here https://www.angelfire.com/band/AMP/files/elastic.zip

Assumes
Add Control to a Form. Call Init() routine in Form.Load Event with no passed parameters (example: "Elastic1.Init")

Rate Elastic Resize and Reposition Control

'http://www.angelfire.com/band/AMP/files/elastic.zip
' ****************************************************************************
' * Original Class Programmers Name : Mikhail Shmukler
' * Web Site : www.geocities.com/ResearchTriangle/6311/
' * E-Mail : [email protected]
' * Date : 13/10/98
' * Time : 10:24
' * Module Name : class_Elastic
' * Module Filename : Elastic.cls
' ****************************************************************************
' * Comments :
' * This class can change size and location of controls On your form
' * 1. Resize form
' * 2. Change screen resolution
' * Assumes:1. Add Elastic.cls
' * 2. Add declaration 'Private El as New class_Elastic'
' * 3. Insert string like 'El.init Me' (formload event)
' * 4. Insert string like 'El.FormResize Me' (Resize event)
' * 5. Press 'F5' and resize form ....
' ****************************************************************************
' ****************************************************************************
' * OCX conversion Programming By : Ronald Gladhill
' * E-Mail : [email protected]
' * Date : June 27, 1999
' * OCX FileName : Elastic.ocx
' * OCA FileName : Elastic.oca
' ****************************************************************************
' * COMMENTS:
' * This OCX will resize and reposition the controls on a form when you
' * Resize the form or change screen resolutions.
' * INSTRUCTIONS:
' * 1. Add the control to your form
' * 2. Call Init() routine in Form.Load event (example: "Elastic1.Init").
'*****************************************************************************
Option Explicit
Private WithEvents objParent As Form
Private nFormHeight As Long
Private nFormWidth As Long
Private nNumOfControls As Integer
Private nTop() As Long
Private nLeft() As Long
Private nHeight() As Long
Private nWidth() As Long
Private bFirstTime As Boolean
Public Sub Init()
Dim I As Integer
 Set objParent = UserControl.Parent
 
 With objParent
 nFormHeight = .ScaleHeight
 nFormWidth = .ScaleWidth
 
 nNumOfControls = .Controls.Count - 1
 bFirstTime = True
 ReDim nTop(nNumOfControls)
 ReDim nLeft(nNumOfControls)
 ReDim nHeight(nNumOfControls)
 ReDim nWidth(nNumOfControls)
 
 On Error Resume Next
 For I = 0 To nNumOfControls
 Select Case TypeName(.Controls(I))
 Case "Line"
 nTop(I) = .Controls(I).Y1
 nLeft(I) = .Controls(I).X1
 nHeight(I) = .Controls(I).Y2
 nWidth(I) = .Controls(I).X2
 Case "StatusBar"
 'do nothing. Leave it alone
 Case Else
 nTop(I) = .Controls(I).Top
 nLeft(I) = .Controls(I).Left
 nHeight(I) = .Controls(I).Height
 nWidth(I) = .Controls(I).Width
 End Select
 Next I
 End With
 
End Sub
Private Sub objParent_Resize()
On Error Resume Next ' for comboboxes, timers and other nonsizable controls
Dim I As Integer
Dim nCaptionSize As Integer
Dim dRatioX As Double
Dim dRatioY As Double
Dim nSaveRedraw As Long
 With objParent
 nSaveRedraw = .AutoRedraw
 
 .AutoRedraw = True
 
 If .Height <= 700 Then
 .Height = 700
 End If
 If .Width <= 700 Then
 .Width = 700
 End If
 
 
 dRatioY = 1# * nFormHeight / .ScaleHeight
 dRatioX = 1# * nFormWidth / .ScaleWidth
 
 For I = 0 To nNumOfControls
 Select Case TypeName(.Controls(I))
 Case "Line"
 .Controls(I).Y1 = Fix(nTop(I) / dRatioY)
 .Controls(I).X1 = Fix(nLeft(I) / dRatioX)
 .Controls(I).Y2 = Fix(nHeight(I) / dRatioY)
 .Controls(I).X2 = Fix(nWidth(I) / dRatioX)
 Case "StatusBar"
 'Do nothing
 Case Else
 .Controls(I).Top = Fix(nTop(I) / dRatioY)
 .Controls(I).Left = Fix(nLeft(I) / dRatioX)
 .Controls(I).Height = Fix(nHeight(I) / dRatioY)
 .Controls(I).Width = Fix(nWidth(I) / dRatioX)
 End Select
 Next I
 .AutoRedraw = nSaveRedraw
 End With
End Sub

Download this snippet    Add to My Saved Code

Elastic Resize and Reposition Control Comments

No comments have been posted about Elastic Resize and Reposition Control. Why not be the first to post a comment about Elastic Resize and Reposition Control.

Post your comment

Subject:
Message:
0/1000 characters