home *** CD-ROM | disk | FTP | other *** search
-
- > Program: SCROLL-1 - Visual Basic Demo Code
-
- > Written By: Paul T. Dawson, P.O. Box 682, Chincoteague, VA, 23336
-
- > Summary: VB 2.0 or 3.0 sample code that demonstrates "form scrolling".
- No VBX controls required. No API calls required. No cost (free!).
-
- > Requirements: To run the SCROLL-1.EXE file - Windows 3.x and VBRUN200.DLL.
- To use the sample code - Visual Basic 2.0 or higher.
-
- > Design Goals:
-
- 1. Make a resizable form, with scroll bars to move around a large area.
- 2. Use the minimum amount of code.
- 3. Use default values wherever possible.
- 4. Add lots of comments!
-
- > File List:
-
- SCROLL-1.TXT - This File (no margins or page breaks).
- SCROLL-1.MAK - Visual Basic Project.
- SCROLL-1.FRM - Visual Basic Form.
- SCROLL-1.FRX - Visual Basic Graphics (just one little icon).
- SCROLL-1.EXE - Finished EXE file.
-
- > Design Summary:
-
- This program uses one standard resizable form, and a "scrolling" picture
- box for the "container" for all of the controls. There are two scroll bars
- on the form that let the user scroll around the picture box. The program
- moves the scroll bars to their new locations every time the main form is
- resized. Then the user can scroll anywhere in the picture box.
-
- The scrolling picture box can be many times larger than the screen, and
- any control can be placed anywhere on it.
-
- > Details About Objects:
-
- 1. frmMain:
- The main form has a ScaleMode of 3 (pixel).
- Everything else on the form is default.
-
- 2. hsb1 / vsb1:
- The two scroll bars are in temporary locations on the form.
- They will be automatically moved to the edges when you click cmdStart.
- The values of SmallChange and LargeChange are 10 and 50. These values
- are not critical, and they can be changed. Everything else is default.
-
- 3. picCorner:
- This is the little grey box that goes into the lower right corner.
- The BorderStyle is 1, and the BackColor is light grey. You can change
- the BackColor to something else, if you want to see exactly where
- picCorner lands!
-
- 4. picBig:
- This is the big scrolling picture box. In this demo, it starts out
- relatively small. Then cmdStart resizes it to be larger than the form.
-
- The picBig AutoRedraw property is set to False, which is the default.
- If you set the picBig AutoRedraw to True, then it will be easier to
- print and draw graphics directly on picBig. However, AutoRedraw=True
- uses a LOT of memory, so it's best to leave it False!
-
- With AutoRedraw=False, I have successfully tested this up to 16,383 by
- 16,383 pixels, the equivalent of 873 standard VGA screens. Above that
- number, which is (2^14)-1, things start to get flakey. The picture box
- will not display properly, most likely because of some internal VB
- restriction! On my machine, VB says 16,383 pixels is 170 inches, or just
- over 14 feet. So you can have a scrolling picture box that covers 200
- actual square feet. That should be sufficient!
-
- The picBig ScaleMode is set to 3 (pixel) - this is important for this
- demo program, and it's just a lot more convenient than "Twips". You can
- always use Twips in other programs, if you really want to!
-
- After putting the scroll bars and the picture boxes on the form, it's
- important to select the picBig box and hit "Edit - Send to Back", so it
- won't ever cover the scroll bars or the picCorner box.
-
- The picBig BackColor is cyan - this isn't critical.
-
- 5. lblDownLeft / lblDownRight / lblUpLeft / lblUpRight:
- The four labels on the picBig control are just samples, to show how all
- controls in a "container" keep the same location in the container, even
- if the container moves around, or part of it is hidden.
-
- 6. cmdStart:
- When you click this, everything starts to happen! This button was added
- for the convenience of people without VB who just want to try the EXE
- file. It just makes things more interesting to see all of the controls
- before they are resized.
-
- 7. cmdExit(0 to 7):
- These are some extra non-critical controls that I added to picBig, to
- make the scrolling more visible. For a "real" program, these would all
- be replaced with "real" controls that actually did something. Actually,
- in this program, all of these buttons do something - end the program!
-
- > Miscellaneous Notes:
-
- 1. The horizontal scroll bar can be any height, and the vertical one can
- be any width. Try changing these, and you'll see that the code adjusts
- EVERYTHING to match!
-
- 2. Remember, any type of control can be placed onto the picBig control!!!
-
- 3. In writing this program, I found that the first EASY part was getting
- the scroll bars to jump to the edges after every form resize. The second
- EASY part was using the scroll bars to move the big picture box around.
- The completely unexpected HARD part was taking care of problems when
- just one scroll bar is visible!?!
-
- It's easy to place things when both scroll bars are either visible or
- invisible. However, when just one is visible, things get complicated!
-
- For example, if the entire width of picBig is visible, then the
- horizontal scroll bar can be turned off. Well, when you remove that from
- the bottom of the form, right away you have to check if the entire
- height of picBig is visible!
-
- The opposite is when the entire height is visible - then you turn off
- the vertical scroll bar, and you have to check if that makes the entire
- width of picBig visible!
-
- In either case, you have to erase the picCorner box, and then adjust the
- scroll bar again to fill in that space - whew!
-
- The solution that I finally used was to set up three flags, for the one
- corner box and the two scroll bars. The Form_Resize event will call the
- FixScrollBars sub, where these flags are all set to False, and then with
- some repetitive lines (all 16 of them), none/some/all of these flags are
- set to True.
-
- Then all three controls are put in the right places, and turned on or
- off depending on what the flags say!
-
- This system will always work properly. While testing this program, I put
- a loop around those lines, so instead of checking once, it checked 1000
- times. The total time required was 18 seconds, or .018 second for just
- one "normal" check. That's fast enough (tested on a slow 386 even)!
-
- 4. In the FixScrollBars sub, there are several "+1" and "+2" variations in
- the sizes of the scroll bars. These are necessary to make everything
- line up perfectly. I used "ZoomIn" to look closely at each combination,
- and make sure everything was exact!
-
- 5. For VB beginners, here's how to put new controls INTO a container:
-
- First, select the container (usually a picture box or frame). Then,
- while it is selected, move over to the toolbox and click on the control
- you want. Move the mouse pointer back over the container, and THEN hold
- down the button, drag, and release. The new control should be inside the
- container now. To make sure, select it and try to drag it off the
- container. If you can't, then the operation was successful!
-
- Having a control IN a container is completely different than having a
- control ON TOP of a container. If you create a control and then drag it
- on top of a picture box, it will NOT be "in" that container. If you move
- the picture box, the control will NOT move with it!
-
- To move an existing control INTO a container, here's what to do: Select
- the control, and hit "ALT E" and "T". This will cut the control, which
- means it will disappear from the form. Then select the container, and
- while it is selected, hit "CTRL V" and the control will be pasted into
- the container.
-
- 6. Please experiment on non-critical projects first!
-
- /**** <End Of This File> - <10-29-93> - <P.T.D.> ****/