==========================================================================
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"
                Product ID 1084
        Public Software Library
                1-800-242-4775
                FAX 1-713-524-6398
                Product ID 10941
                American Express/MC/VISA/Discover

==========================================================================
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.0 Feb 1994
----------------------------

NEW LOOK FOR THE INDEXTAB

      The new style looks like the tabs used in Word for Windows and Excel.  
      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).
      
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.
      
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.
      
      You can find which tab you the are moving the mouse over by trapping
      the MouseMove event and reading the CurrTab 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.
      Obs: 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.
      
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
      
      *Obs: 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 - Not Reentrant (see *Obs. 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
==========================
      
