home *** CD-ROM | disk | FTP | other *** search
- Here is a simple way to create the elegant "picture" buttons which grace
- sophisticated programs... the buttons which have a picture or miniature
- icon instead of a caption.
-
- To test and view the demo program: copy the file PICBUTNS.FRM to your normal
- VB workspace. Start VB, and from new project, select ADD FILE, with
- PICBUTNS.FRM as the target. Remove the default FORM1.FRM from the project.
- Your project should now consist of a blank GLOBAL.BAS and PICBUTNS.FRM.
- Run the program. You will see a button with a pile of yellow poker chips,
- which will click properly with the action of the mouse. How its done...
-
- To generate this style of button in VB, at least in this simplistic mode,
- requires three picture boxes. The first is the actual button which will
- be visible to the user. This is the top button on PICBUTNS.FRM. On the
- demo, this is picture1. The lower left picture box, picture2, is
- the "up" picture, and picture3, the "down" picture. These latter
- 2 have their visible properties set to "0" or FALSE, so they are not seen
- at run time. Clicking picture1 at run time generates two events
- in sequence... the mousedown event and the mouseup event. At mousedown,
- the code replaces picture1.picture with picture3.picture (the down picture)
- At mouseup, the picture is again replaced, this time with picture2.picture,
- the up picture. The code you wish to execute belongs after this swap. See
- the comments in the code at the picture1_mouseup event.
-
- The pictures are very easy to make. The two icon files represent the blank
- up and down states of the button. Use iconworks to view them if you wish.
- You don't need to make the buttons icon sized (you can manually bitmap them
- instead with paintbrush) but it is much easier and convenient to do so.
- Heres the easiest method, from the beginning, to make a picture button.
-
- On a blank form, create three picture boxes. Set the autosize property to
- TRUE for all three. Set the VISUAL property to false for the last two. Now
- run iconworks alongside VB, and load the two icons, button1.ico and
- button2.ico in two blank workspaces. In a third icon workspace, create the
- picture you wish to appear on the button, but make it at least 4 pixels
- smaller than a full icon, and leave the background white. Using the EDIT
- tools on iconworks, COPY the picture you have drawn and PASTE it smack in
- the middle of button1.ico (the up button). PASTE it again on button2.ico,
- but move it, relative to the position you pasted it on button1.ico, exactly
- 2 pixels right and 1 pixel down. This generates the downward motion when
- the user clicks your button. Remember when you COPY your picture to limit
- the size of the copy to just your picture, and none of the blank
- surrounding it. Otherwise, you will copy over the necessary greys of the
- buttons and the shadowing will be lost.
-
- You should now have two icons which represent the up and down button states
- on iconworks. All the white and grey shadowing should be intact, and the
- picture you drew will be displaced on the down icon 2 pixels right and 1
- pixel down. Copy the ENTIRE up button icon and paste it into picture1
- and picture2 on your VB form. Copy the entire down button icon and paste
- this one into picture3. Save the icons if you wish.
-
- Examine the code for the picture1_mousedown and picture1_mouseup events, and
- it should be obvious how the coding works. The main drawback to this system
- is the number of controls involved. I wouldn't care to create more than 3
- or 4 picture buttons on a form in this manner, but just one is enough to
- set your project apart from other VB programs.
-
- My name is Kurt Bjorn, and I am a pilot for American Airlines, currently
- living in Evanston. I would love to exchange ideas, especially for
- VISUAL BASIC. This program amazes me with its elegance, power, and
- simplicity. Drop me a message on the AQUILA BBS, in the WINDOWS
- conference, J 6, especially if you have any questions on this technique
- (or maybe you have a better way!) I'd like to hear from you.
-