You are currently offline, waiting for your internet to reconnect

How To Scroll a Form When VB Forms Are Limited to Screen Size

This article was previously published under Q109741
SUMMARY
A Visual Basic form cannot be sized larger than the screen. This articleexplains how to scroll the contents of a form to enlarge the usable area ofa form.

The sample program below works by scrolling a picture box control which islarger than the form and contains attached controls. When the picture boxscrolls, all the attached controls scroll together.
MORE INFORMATION

Step-by-Step Example

NOTE: This technique will not work on any version of Windows NT if any ofthe Visual Basic lightweight controls (for example, Label Control) arechildren of the scrolling control and positioned outside of the screen'sviewing area. This is due to the way that Windows NT handles drawing tononlogical areas of the screen. To work around the problem, do not uselightweight controls as children of the scrolling control.
  1. Start a new project in Visual Basic. Form1 is created by default.
  2. Add a horizontal scroll bar control and a vertical scroll bar control to Form1. (The size doesn't matter because the program automatically sizes the scroll bars in the Form Resize event code.)
  3. Add a picture box control to Form1. Draw a text box control inside the upper-left corner of the picture box such that when the picture box moves, the text box moves with it.

    Select the Text1 box and press the F4 key to display the Properties window. Set the Text1 Index property to 0, which is required at design time to make an array of text controls.

    You can also enhance this sample program by placing more controls into the picture box. When the picture box scrolls, all the controls scroll.
  4. Add the following code to the Form Load event:
          Sub Form_Load()         ' Make the picture box bigger than the form:         Picture1.Move 0, 0, 1.4 * ScaleWidth, 1.2 * ScaleHeight         ' Position and size the first TextBox:         Text1(0).Move 0, 0, Picture1.Width / 2, Picture1.Height / 20         ' Place some sample controls in the picture box:         Dim i As Integer         For i = 1 To 20            Load Text1(i)            Text1(i).Visible = True            Text1(i).Left = i * Picture1.Height / 20            Text1(i).Top = Text1(i).Left         Next      End Sub
  5. Add the following code to the Form Resize event:
          Sub Form_Resize ()         ' Position the scroll bars:         hscroll1.Left = 0         vscroll1.Top = 0         If Picture1.Width > scalewidth Then            hscroll1.Top = ScaleHeight - hscroll1.Height         Else            hscroll1.Top = ScaleHeight         End If         If Picture1.Height > hscroll1.Top Then            vscroll1.Left = scalewidth - vscroll1.Width            If Picture1.Width > vscroll1.Left Then               hscroll1.Top = ScaleHeight - hscroll1.Height            End If         Else            vscroll1.Left = scalewidth         End If         hscroll1.Width = scalewidth         If hscroll1.Top > 0 then vscroll1.Height=hscroll1.Top         ' Set the scroll bar ranges         hscroll1.Max = Picture1.Width - vscroll1.Left         vscroll1.Max = Picture1.Height - hscroll1.Top         hscroll1.SmallChange = Abs(hscroll1.Max \ 16) + 1         hscroll1.LargeChange = Abs(hscroll1.Max \ 4) + 1         vscroll1.SmallChange = Abs(vscroll1.Max \ 16) + 1         vscroll1.LargeChange = Abs(vscroll1.Max \ 4) + 1         hscroll1.ZOrder 0         vscroll1.ZOrder 0      End Sub
  6. Add the following code to the HScroll1 Change event:
          Sub HScroll1_Change ()         Picture1.Left = -HScroll1.Value      End Sub
  7. Add the following code to the VScroll1 Change event:
          Sub VScroll1_Change ()         Picture1.Top = -VScroll1.Value      End Sub
  8. Start the program (or press the F5 key). Click the scroll bars to scroll the form. Close the form to end the program.
3.00 4.00 vb416
Properties

Article ID: 109741 - Last Review: 07/13/2004 14:55:00 - Revision: 2.1

  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 4.0 Standard Edition
  • kbhowto KB109741
Feedback