========================================================================== VSVBX - VideoSoft Custom Control Library ========================================================================== Vendor Information VideoSoft 2625 Alcatraz Avenue, Suite 271 Berkeley, California 94705 Phone (510) 547-7295 FAX (510) 547-1084 Compuserve: 71552,3052 Internet: 71552,3052@compuserve.com Distributor Information Compuserve at the CIS prompt type "go swreg" VSVBX 4.0 product ID 1084 ($51) VSVBX upgrade from previuos versions ID 2215 ($21) ========================================================================== Version History Digit changes indicate new versions. New versions reflect major changes in functionality; they typically require upgrades and new developer's license files (.DEV). Letter changes indicate maintenance releases with minor bug fixes or subtle improvements. Recent versions are listed before older ones. ========================================================================== ---------------------------- 4.01 Apr 1994 ---------------------------- NEW PROPERTY VERSION You can now verify the version of VSVBX in your code. 3D EFFECTS EXTENDED TO 255 CONTROLS The maximum amount of controls to be affected by the elastic has been extended from 30 to 255. RESIZING BUG IN THE ELASTIC Under certain rare circumstances, the Elastic would get confused when resizing children of a minimized form. This has been fixed. SYSTEM COLOR SUPPORT The Elastic and IndexTab did not support system colors directly, the way other controls did. Now they do. LOW-FLICKER ELASTICS The Elastic is smarter about repainting and causes less flicker. UPPER RIGHT CORNER IN 3D BORDERS The 3D borders all missed a pixel in the upper right corner. Not anymore. CLASHES WITH CSFORM Using Crescent's CSForm control and the Elastic could cause GPFs. The Elastic is more careful now and the problem has been reduced. Note, though, that we have no control over what CSForm does. If you encounter problems, call Crescent and tell them about it. ---------------------------- 4.0 Jan 1994 ---------------------------- NEW LOOK FOR THE INDEXTAB After a lot of discussion and many requests from our users, we decided to adopt a better "tab look". With the new look, adjacent tabs no longer overlap, so we added optional "dog-ears" to allow for tab scrolling with the mouse. The new IndexTab also allows hot keys to be used with vertical text (when the Position property is set to Left, Right, or Right Face In). MULTIROW PROPERTY FOR THE INDEXTAB This property allows you to create multi-row tabs like the ones in Microsoft Word and Excel. Set MultiRow to True and choose the number of TabsPerPage you want to show. As you type the Caption, the IndexTab will wrap the tabs automatically. Note that MultiRow only works with TabsPerPage greater than zero. When MultiRow is set to True, scrolling and BackSheets become unnecessary and are automatically disabled. DESIGN-TIME AUTO-SWITCHING FOR THE INDEXTAB The IndexTab now switches child containers at design time. This makes form design much easier. When AutoSwitch is True, double-click on any tab with the RIGHT mouse button to bring up the appropriate child container, just like at runtime. Then you can easily lay out each container. To see all containers, double-click on the blank space next to the last tab or on the current tab itself. All containers will appear side-by-side, arranged according to their tab sequence. To change the tab sequnce, just drag the controls around. If you don't want to use this new feature, set AutoSwitch to False. FRONTABFORECOLOR PROPERTY FOR THE INDEXTAB This new property lets you emphasize the current tab by using a different color for its caption. FOCUS TRACKING FOR THE INDEXTAB The IndexTab now tracks mouse movements. When you push the mouse button, it starts tracking the mouse. As you drag, the current tab follows the mouse, but you don't get a click event or container switch until you release the mouse button. NEW "STRAIGHT" STYLE FOR THE INDEXTAB In addition to the three original tab styles -- slanted, rounded, and chamfered -- you can now use rectangular tabs that look like buttons. Just like those in Windows 4.0. MOUSEOVER PROPERTY FOR THE INDEXTAB You can find which tab you the are moving the mouse over by trapping the MouseMove event and reading the MouseOver property. This is useful if you wish to display context-sensitive help for each tab. BOLDCURRENT PROPERTY FOR THE INDEXTAB When this property is set to TRUE, the IndexTab shows the current tab's caption using a bold font. BORDER PROPERTY FOR THE INDEXTAB This property determines the width of the border around the containers inside the IndexTab. This border is in addition to the bevel automatically provided when one of the 3D styles is used. DOGEARS PROPERTY FOR THE INDEXTAB This property determines whether the IndexTab should display "dog-ears" at the start and end of a tab row to indicate the user can scroll the tabs. If this property is set to TRUE, the dog-ears appear automatically when the tabs spill off the page and you can use the mouse to scroll the tabs. TABPICTURE, TABCOLOR, TABENABLED PROPERTIES FOR THE INDEXTAB These new property arrays allow you to attach a picture (bitmap or icon) to each tab, to control the color of individual tabs, and to enable and disable specific tabs so they cannot be selected with the mouse or keyboard. STYLE PROPERTY FOR THE ELASTIC This new property makes the Elastic look similar to the standard frame control, but retaining its resizing and 3D capabilities. The "Style" property has three settings: 0 - Default: this is the original Elastic Style. 1 - Frame Top: this looks like the standard frame. 2 - Frame Bottom: this looks like the standard frame but with the caption below the Elastc instead of across the top. TAGPOSITION PROPERTY FOR THE ELASTIC This new property allows the TagLabels to be placed either to the left or above each tagged control. In previous versions, the TagLabels always appeared to the left of the tagged controls. Label sizes are stil determined by the TagWidth property. NEW SETTINGS FOR THE ELASTIC'S BEVELINNER AND BEVELOUTER PROPERTIES In addition to the Inset and Raised settings, the Elastic now has "5 - Fillet", "6 - Groove", and "7 - Shadow" 3D effects. Note: The Shadow effect is available for inner bevels only. SHADOWCOLOR PROPERTY FOR THE ELASTIC The "ShadowColor" property allows you to define the color for the shadow created when the "BevelInner" property is set to "7 - Shadow". TABCAPTION BUG IN THE INDEXTAB The index tab would not change the last tab caption properly if the old last tab caption was an empty string. This was fixed. SPLITTER BARS CAN NOW BE USED WITH TAGLABELS The old Elastic did not allow Splitter bars to coexist with TagLabels. That limitation has been removed. QUOTE BUG IN THE AWK The Awk did not handle embedded quotes correctly. Now it does: Only quotes that appear in the beginning of a field are seen as quotes. Embedded quotes are seen as regular characters. FILTERQUOTES PROPERTY FOR THE AWK The "FilterQuotes" property forces the Awk to remove leading and trailing quotes from fields when "MatchQuotes" is set to True. For example, VSAwk1 = "Name 'John McAdam' Age 23" VSAwk1.MatchQuotes = True VSAwk1.FilterQuotes = False ? VSAwk1.F(2) 'John McAdam' VSAwk1.FilterQuotes = True ? VSAwk1.F(2) John McAdam VAL PROPERTY FOR THE AWK This new property gives the Awk a powerful function evaluator. Set the Caption property to a mathematical expression and the "Val" property returns its value. For example, VSAwk1 = "(1+2)*3^2" ? VSAwk1.Val 27 The following operators are supported, according to their priority: Prty Op Description Op Description ---- -- --------------- -- --------------- 6: () subexpressions 5: ^ raise to power 4: * times / divide % modulus \ divide and truncate 3: + plus - minus 2: > greater >= greater or equal < less <= less or equal = equal <> not equal 1: & and | or The following built-in functions are supported (they are case-insensitive): abs, sin, cos, tan, atn, log, exp The Awk evaluator also supports variables. When the expression parser finds a token it cannot interpret, if fires the new Awk event "Variable". This event has three parameters: Variable - Name of the variable that needs to be evaluated Value - Value of the variable Accept - Flag that indicates the variable is valid Your event handler will typically read the variable name from the "Variable" parameter, supply its value through the "Value" parameter, and set the "Accept" flag to indicate the variable is valid. If the variable name is not valid, return without setting the"accept" parameter and Awk will generate a "Bad Token" error. For example, if your program defines variables "x" and "y", your event handler might look like this: Sub VSAwk1_Variable (Variable$, Value!, Accept%) Accept% = True Select Case Variable$ Case "X", "x" Value! = GlobalX! Case "Y", "y" Value! = GlobalY! Case Else Accept% = False ' unrecognized variable End Select End Sub *Note: To keep the code fast and compact, reentrant calls are not allowed. This means you may not use the "Val" property while handling the "Variable" event. If an error occurs while evaluating an expression, the "Error" property is set to one of the codes listed below. *Always* check the "Error" property after using "Val". 6 - Syntax 7 - Bad Token 8 - Unbalanced Brackets 9 - Division by Zero 10 - Argument domain error 11 - Argument singularity 12 - Overflow range error 13 - Partial loss of significance 14 - Total loss of significance 15 - The result is too small to be represented. (This condition is not currently supported.) 16 - Not Reentrant (see *Note above) ---------------------------- 3.0d Nov 1993 ---------------------------- VSVBX LOOKS HARDER FOR LICENSE AND HELP FILES Previous versions looked for the license file in the directory where the VBX was loaded from, and showed the about box if the license file was not found or if the license file was invalid. The new version still looks for license and help files in the directory where the VBX was loaded from. If it doesn't find the files there, it looks in the Windows\System directory and then in the Windows diretory. If it can't find the license file anywhere, it shows the about box. If it finds an invalid license file (e.g., older version), it informs the user. NICER-LOOKING MOUSE POINTERS FOR SPLITTER BARS We finally gave in and made custom mouse pointers for resizing windows with splitter bars. The new pointers look like the ones in the Windows file manager. INDEXTAB ALIGN PROPERTY BUG FIXED When the IndexTab's Align property was set to anything other than "0 - None", VB sometimes complained of errors while loading the form, and created a log file saying that the Width property could not be set. We have never seen this documented anywhere, but apparently the standard Align property must be declared AFTER the standard Left and Width properties. Note that this has to do with the way the VBX itself is written, not with VB programs. We moved the Align property to the proper position (after Left and Width) and the problem disappeared. Unfortunately, this may cause problems when loading projects created with previous versions of VSVBX that 1 - Had IndexTab controls with the Align property set to Align Top or Align Bottom AND 2 - Were saved in binary format or compiled as EXEs. The solution to this is as follows: 1 - Load the old project with the old VBX (3.0c or older). 2 - Save the project in text format. 3 - Quit VB. 4 - Load the new VBX (3.0d or newer). 5 - Restart VB and reload the project. 6 - Save or compile as you wish. We realize this may cause problems to some of our users and wish we could have fixed this problem without affecting older projects, but it really was not possible. PROPORTIONAL SPACING BUG IN THE ELASTIC ** Fixed in 3.0d: Set the Elastic's AutoSizeChildren property to '7 - Proportional', then to '0 - None'. Move the child controls around the Elastic. Set AutoSizeChildren back to Proportional. The controls return to their original position. This has been fixed in 3.0d. ---------------------------- 3.0c Oct 1993 ---------------------------- NEW SETTING FOR INDEXTAB POSITION Due to popular demand, we added the Right Face In tab position. This is the same as the original Right position but with text facing into the form instead of out. INDEXTAB DID NOT FIRE THE CLICK EVENT ** Fixed in 3.0c: The IndexTab did not fire the Click event if you set the CurrTab property to the same value it already had. ELASTIC RESIZING WHEN BORDERWIDTH AND CHILDSPACING = 0 ** Fixed in 3.0c: Sometimes the Elastic failed to resize itself when the BorderWidth and ChildSpacing properties were set to zero. ---------------------------- 3.0b Oct 1993 ---------------------------- ELASTIC RESIZING IN MDI FORMS ** Fixed in 3.0b: The Elastic did not get along with MDI forms. Now it does. BETTER LOOKING 3D FOR THE INDEXTAB The new 3D appearance follows Microsoft's new standard style for IndexTabs. ---------------------------- 3.0a Oct 1993 ---------------------------- INDEXTAB REPAINTING WAS OVER-OPTIMIZED ** Fixed in 3.0a: The IndexTab sometimes skipped a few steps when repainting the screen. This was done to improve speed, but it worked only 99% of the time, and sometimes left parts of the window blank. UNLOADING FORMS DURING INDEXTAB CLICK EVENT ** Fixed in 3.0a: Unloading a form during an IndexTab Click event procedure sometimes caused a GPF. ========================== VERSION 3.0 Sep 1993 ========================== GENERAL IMPROVEMENTS Faster loading forms, smaller VBX, new manual, 20+ new features. INDEXTAB IMPROVEMENTS ** New Properties and Settings: BackSheets, TabCaption, TabsPerPage, TabOutLineColor, Chamfered Style ** Other improvements: Enhanced 3D look, smoother tab scrolling, faster flicker-free redraws, set tab order based on position rather than ZOrder, automatic TrueType font conversion for side tabs. ELASTIC IMPROVEMENTS ** New Properties and Settings: AccessKey, BevelChildren, MaxChildSize, MinChildSize, WordWrap. AutoSizeChildren has three new settings: 'Elastics Horizontally', 'Elastics Vertically', and 'Proportional'. AWK IMPROVEMENTS ** New Properties and Settings: Match Quotes, PosAt, FileMode. The FS property has improved features, and the maximum line length was increased from 255 bytes to 64k. ------------------- 2.2c Jul 1993 ------------------- MISSING PROPERTIES ADDED TO ELASTIC AND INDEXTAB The properties are Hwnd and ContextID. We also added a ShowFocusRect property to the IndexTab. UNEVEN SPACING SCRAMBLING CHILDREN ** Fixed in 2.2c: Shrinking and growing an Elastic with AutoSizeChildren set to Uneven sometimes changed to order of the child controls. ------------------- 2.2a Jul 1993 ------------------- ELASTIC HANDLING GRAPHICAL CONTROLS Reduced flicker and improved speed when stretching graphical controls (Image, Shape, and Label controls). MULTIPLE ACCESS KEYS IN TABS Each tab can have its own access (alt, &) key. ========================== VERSION 2.2 May 1993 ==========================