Solved

vb6 scrollbar overflow error

Posted on 2010-08-25
8
872 Views
Last Modified: 2012-06-27
I am making modifications to another developer's project that has a form with a scrollbar.  I don't really get the jist of the cde, but on the form resize event, I am getting an overflow error on this line:
                 .Max = iFullFormHeigth - Me.Height

The value of (iFullFormHeigth - Me.Height) is 63435 at this point.

        With VScroll1
            .Height = Me.ScaleHeight - HScroll1.Height
            .Min = 0
            'MsgBox iFullFormHeigth - Me.Height
            .Max = iFullFormHeigth - Me.Height
            .SmallChange = Screen.TwipsPerPixelY * 10
            .LargeChange = Me.ScaleHeight - HScroll1.Height
        End With

Dim iFullFormHeigth As Long 'integer

Dim iFullFormWidth As Long 'integer



Private Sub Form_Resize()



VScroll1.Left = Me.Width - (1.45 * VScroll1.Width)

HScroll1.Top = Me.Height - (2.45 * HScroll1.Height)



Picture1.Left = VScroll1.Left

Picture1.Top = HScroll1.Top



'If the full screen is already showing,

'then disable the scrollbar

VScroll1.Enabled = (iFullFormHeigth - Me.Height) >= 0



'First, make sure we aren't minimized

If Me.ScaleHeight > HScroll1.Height And Me.Width > VScroll1.Width Then

    

    'If there is any more screen to see,

    'modify the scrollbar

    If VScroll1.Enabled Then

        With VScroll1

            .Height = Me.ScaleHeight - HScroll1.Height

            .Min = 0

            .Max = iFullFormHeigth - Me.Height

            .SmallChange = Screen.TwipsPerPixelY * 10

            .LargeChange = Me.ScaleHeight - HScroll1.Height

        End With



    'Otherwise, just resize the scrollbar for neatness

    Else: VScroll1.Height = Me.ScaleHeight - HScroll1.Height

    End If



    HScroll1.Enabled = (iFullFormWidth - Me.Width) >= 0

    If HScroll1.Enabled Then

        With HScroll1

            .Width = Me.ScaleWidth - VScroll1.Width

            .Min = 0

            .Max = iFullFormWidth - Me.Width

            .SmallChange = Screen.TwipsPerPixelX * 10

            .LargeChange = Me.ScaleWidth - VScroll1.Width

        End With



    Else: HScroll1.Width = Me.ScaleWidth - VScroll1.Width

    End If

End If

End Sub

Open in new window

0
Comment
Question by:Delta7428
  • 5
  • 2
8 Comments
 
LVL 42

Expert Comment

by:sedgwick
ID: 33521030
i don't see where you initialize the iFullFormHeigth variable.is ti possible you forgot?
0
 
LVL 42

Assisted Solution

by:sedgwick
sedgwick earned 100 total points
ID: 33521035
where do u initially set iFullFormHeigth?it doesn;t appear in the Form_Resize() function...
0
 
LVL 13

Expert Comment

by:Surone1
ID: 33521055
it's probably trying to set a negative value..
if you uncomment the
MsgBox iFullFormHeigth - Me.Height
it will tell you the value before trying to set it..
0
 

Author Comment

by:Delta7428
ID: 33521098
Surone1, See original post.  I did ucomment the line and check it.  Actually, I added the line to check it.  The value is 63435.

Here is the rest of the code.  iFullFormHeigth is set in the form load event in GetFullSize proc.
Private Sub Form_Load()

    GetFullSize

End Sub



Private Sub GetFullSize()

Dim ctl As Control

Dim fullhtemp As Long

Dim fullvtemp As Long



fullhtemp = 0

fullvtemp = 0

If Me.WindowState = vbMinimized Then Exit Sub

For Each ctl In Me.Controls

        'If ctl.Name <> "timer1" Then

            If ctl.Top + ctl.Height > fullvtemp Then fullvtemp = ctl.Top + ctl.Height

            If ctl.Left + ctl.Width > fullhtemp Then fullhtemp = ctl.Left + ctl.Width

        'End If

Next

iFullFormHeigth = fullvtemp + HScroll1.Height

iFullFormWidth = fullhtemp + VScroll1.Width

End Sub

Open in new window

0
Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

 
LVL 13

Expert Comment

by:Surone1
ID: 33521105
sorry, not paying attention..
i believe the width property is an integer. the value is too high
0
 
LVL 13

Expert Comment

by:Surone1
ID: 33521142
should not be higher than 32767
0
 
LVL 13

Expert Comment

by:Surone1
ID: 33521170
the following sub proves the theory

Sub showverflow()
Dim i As Integer
Do While True
i = i + 1
Loop
End Sub
0
 
LVL 13

Accepted Solution

by:
Surone1 earned 400 total points
ID: 33521263
dim myvar as integer

if  iFullFormHeigth - Me.Height > 32767 then
myvar = 32767
else
myvar =  iFullFormHeigth - Me.Heigh
end if

'MsgBox iFullFormHeigth - Me.Height
 .Max = myvar
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

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…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

747 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

14 Experts available now in Live!

Get 1:1 Help Now