Solved

Active Resize Question

Posted on 2008-10-24
3
205 Views
Last Modified: 2012-05-05
Experts,

Does anyone use ActiveResize for VB?  It's a tool that automatically resizes a form to fit screen resolution.  I'm finding that the demo version works on some screens but not on others.  Ideas?
0
Comment
Question by:NigelRocks
  • 2
3 Comments
 
LVL 2

Accepted Solution

by:
Adel87 earned 500 total points
Comment Utility
instead of wasting your money on off-the-shelve components you can make your own code or use the code in the following link :

http://www.dreamincode.net/forums/showtopic34776.htm

it will simply resize all the controls of the form with respect to the new size of the form. it's simple to use also, you just add the mudule and call the function from the resize event of your form.

Please let me know if you need further assistance.

Regards,
0
 
LVL 1

Author Comment

by:NigelRocks
Comment Utility
I put all this code in its own module and I get a "division by zero" error on this line:

x_size = frm.height / iHeight


What am I missing?

0
 
LVL 2

Assisted Solution

by:Adel87
Adel87 earned 500 total points
Comment Utility
hi,

it seems you forgot to put the code for the load event of the form, that's why iHeight is not declared.

Please do the following :

'================================================
1- put the following code in the form1_load method
'================================================
Private Sub Form_Load()
    GetLocation Me
    CenterForm Me
    ResizeForm Me
End Sub
'--------------------------------------------------------------------------------------

'================================================
2- put the following code in the form_resize method :
'================================================
Private Sub Form_Resize()
     ResizeControls Me
End Sub
'--------------------------------------------------------------------------------------

'================================================
3- Put the code attached with this post underneath a module
'================================================

'================================================
4- add few components like command buttons and labels with difirent sizes all over the form.
'================================================

'================================================
5- if you need to change the font size also then ,for each componant that needs the font to be change with respect to the form size add the following line in both the Form1_Load and the Form1_Resize events:
'================================================
Label.Font = SetFontSize()
'--------------------------------------------------------------------------------------

Please let me know if you need further assistance.

Regards,
Private List() As Control

Private curr_obj As Object

Private iHeight As Integer

Private iWidth As Integer

Private x_size As Double

Private y_size As Double

'*****************************************************************************************

'                           LICENSE INFORMATION

'*****************************************************************************************

'   FormControl Version 2.0

'   Code module for resizing a form based on screen size, then resizing the

'   controls based on the forms size

'

'   Copyright (C) 2007

'   Richard L. McCutchen

'   Email: richard@psychocoder.net

'   Created: AUG99

'

'   This program is free software: you can redistribute it and/or modify

'   it under the terms of the GNU General Public License as published by

'   the Free Software Foundation, either version 3 of the License, or

'   (at your option) any later version.

'

'   This program is distributed in the hope that it will be useful,

'   but WITHOUT ANY WARRANTY; without even the implied warranty of

'   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

'   GNU General Public License for more details.

'

'   You should have received a copy of the GNU General Public License

'   along with this program.  If not, see <http://www.gnu.org/licenses/>.

'*****************************************************************************************
 

Private Type Control

    Index As Integer

    Name As String

    Left As Integer

    Top As Integer

    width As Integer

    height As Integer

End Type
 

Public Sub ResizeControls(frm As Form)

Dim i As Integer

'   Get ratio of initial form size to current form size

x_size = frm.height / iHeight

y_size = frm.width / iWidth
 

'Loop though all the objects on the form

'Based on the upper bound of the # of controls

For i = 0 To UBound(List)

    'Grad each control individually

    For Each curr_obj In frm

        'Check to make sure its the right control

        If curr_obj.TabIndex = List(i).Index Then

            'Then resize the control

             With curr_obj

                .Left = List(i).Left * y_size

                .width = List(i).width * y_size

                .height = List(i).height * x_size

                .Top = List(i).Top * x_size

             End With

        End If

    'Get the next control

    Next curr_obj

Next i

End Sub
 

Public Function SetFontSize() As Integer

    'Make sure x_size is greater than 0

    If Int(x_size) > 0 Then

    'Set the font size

        SetFontSize = Int(x_size * 8)

    End If

End Function
 

Public Sub GetLocation(frm As Form)

Dim i As Integer

'   Load the current positions of each object into a user defined type array.

'   This information will be used to rescale them in the Resize function.
 

'Loop through each control

For Each curr_obj In frm

'Resize the Array by 1, and preserve

'the original objects in the array

    ReDim Preserve List(i)

    With List(i)

        .Name = curr_obj

        .Index = curr_obj.TabIndex

        .Left = curr_obj.Left

        .Top = curr_obj.Top

        .width = curr_obj.width

        .height = curr_obj.height

    End With

    i = i + 1

Next curr_obj

    

'   This is what the object sizes will be compared to on rescaling.

    iHeight = frm.height

    iWidth = frm.width

End Sub
 

Public Sub CenterForm(frm As Form)

    frm.Move (Screen.width - frm.width) \ 2, (Screen.height - frm.height) \ 2

End Sub
 

Public Sub ResizeForm(frm As Form)

    'Set the forms height

    frm.height = Screen.height / 2

    'Set the forms width

    frm.width = Screen.width / 2

    'Resize all of the controls

    'based on the forms new size

    ResizeControls frm

End Sub

Open in new window

0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
VBA to format 3 78
VBA: retain first and second level based on "." 6 69
Problem to skip loop 6 49
Spell Check in VB6 13 42
Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now