Solved

vb6 scrollbar overflow error

Posted on 2010-08-25
8
876 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
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

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…
The debugging module of the VB 6 IDE can be accessed by way of the Debug menu item. That menu item can normally be found in the IDE's main menu line as shown in this picture.   There is also a companion Debug Toolbar that looks like the followin…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…

910 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

25 Experts available now in Live!

Get 1:1 Help Now