Solved

SsVertical Sxroll bar for a form

Posted on 2004-08-05
8
288 Views
Last Modified: 2010-05-02
I would like to minimize the number of forms. Can I put a vertical scroll bar for the whole form. I tried to use the scroll bar, but I think I did not apply it correctly.

Gonzal13(Joe)
0
Comment
Question by:gonzal13
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 4
8 Comments
 
LVL 18

Expert Comment

by:JR2003
ID: 11730048
Have you tried using a Tab control instead?
These are very useful if you want to fit a lot on one form.
The best one to use is the SSTab control.
0
 
LVL 13

Author Comment

by:gonzal13
ID: 11730808
Here are some more Details: I have for example a list of lbl boxes with their associated txt boxs. I then through a msgbox have the commands tosave the data and then read the data. Latar the files will be open for access to calculations. I was hoping for something like MS Windows with its vertical scroll bars. Of the three books that I have none explain how to add data beyond the maximum size of the template. Templates take memory.

gonzal13(joe)
0
 
LVL 18

Expert Comment

by:JR2003
ID: 11731581
Here's a first cut that works:

You need to place a vertical scrollbar on a form
Place a frame control on the form
Place a textbox INSIDE the frame so the frame contains the textbox
Set the index property of the textbox to 0 (zero)

Paste the following code into your form:

Option Explicit

Private bLoaded As Boolean
Private Sub Form_Load()
   
    With Form1
        .WindowState = vbMaximized
    End With
   
End Sub

Private Sub Form_Resize()

    With VScroll1
        .Max = 100
        .Min = 0
        .Top = 0
        .Left = Me.ScaleWidth - .Width
        .Height = Me.ScaleHeight
    End With
    With Frame1
        .BorderStyle = 0
        .Top = 0
        .Height = Me.ScaleHeight * 2
        .Width = VScroll1.Left
    End With
    If Not bLoaded Then
        Text1(0).Top = 20
        Dim i As Long
        For i = 1 To 100
            Load Text1(i)
            With Text1(i)
                .Visible = True
                .Text = "Text Box " & i
            End With
            With Text1(i - 1)
                Text1(i).Top = .Top + .Height + 50
                If .Top + .Height + 100 > Screen.Height * 2 Then
                    Exit For
                End If
            End With
        Next i
    End If
    bLoaded = True
End Sub

Private Sub VScroll1_Change()

    With Frame1
        .Top = -VScroll1.Value * .Height / (2 * VScroll1.Max)
    End With

End Sub
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 13

Author Comment

by:gonzal13
ID: 11737178
JR2003

Your reply is more than I expected. I did not realize that there would be any easy way to accomplish my goal.

I increased the points for the work that you did. I will test it out by cutting and pasting to avoid any typos.

Thanks again. Great work.
0
 
LVL 13

Author Comment

by:gonzal13
ID: 11737534
Jr2003:

I basically did a cut an past action.

I ran it and got an error message 'object required'

Private Sub Form_Load()
   
    With Form1
        .WindowState = vbMaximized  'OBJECT REQUIRED
    End With
   
End Sub


0
 
LVL 18

Expert Comment

by:JR2003
ID: 11738205
Your form must be called form1.
It's probably called something different so just change this line to:

    Me.WindowState = vbMaximized  'OBJECT REQUIRED
0
 
LVL 18

Accepted Solution

by:
JR2003 earned 100 total points
ID: 11738277
Sorry, my mistake the form load should just read:

Private Sub Form_Load()  

        Me.WindowState = vbMaximized
   
End Sub


All that function does is to maximize the form to illustrate how to scroll.

The the code works is all you controls are placed on a frame control so the frame contains the control. The frame controls is oversized to a size bigger than the actual screen size. This is your scrollable area. The scrollbar then just changes the value of the top of the frame.
0
 
LVL 13

Author Comment

by:gonzal13
ID: 11741095
Jr2003:

Well thank yiou very much. You are very explicit in your programming and do not assume that the questioner actually knows allot about VB6.

gonzal13(joe)
0

Featured Post

Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

Question has a verified solution.

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

I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
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 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…
Suggested Courses
Course of the Month8 days, 20 hours left to enroll

617 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