README.TXT File
README file for VideoSoft vsVBX, Version 5.0
(C) Copyright VideoSoft, 1991-1995

--------------------------------------------------------------------
This document describes the release notes for version 5.0 of the 
VideoSoft vsVBX custom controls.

NOTE: VideoSoft improves its manuals at the time of reprinting, 
so some of the information in this file may already be included in
your manuals. We suggest you print this document and attach it to
the manual.

VideoSoft
2625 Alcatraz Avenue, Suite 271
Berkeley, California 94705
Phone (510) 704-8200
FAX   (510) 843-0174

Internet:                74774,420@compuserve.com
Compuserve Tech Support: at the CIS prompt type "go videosoft"
Compuserve Orders:       at the CIS prompt type "go swreg"
                         vsView product ID 3244  ($99 + s&h)
                         vsVBX  product ID 1084  ($45 + s&h)

==========================================================================
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.
==========================================================================
----------------------------
5.0b April, 1995
----------------------------
        * Accelerator keys not triggering on IndexTab (fixed)


----------------------------
5.0a January 24, 1994
----------------------------

        * Improved Awk handling of binary files (no truncation of lines)
        * Fixed 3D font effects on Elastic's frame styles
        * Remove VBAPI 2.0 for Appstudio Compatibility
        * Made Elastic's "Captioned Button" Template set TabStop and ShowFocus rect to TRUE.
        * Lots of little changes to Elastic buttons: they now
             recognize Space/Return keys and no autorepeat
             have focus rect around caption, not client area (when there's a caption)
             spring back up instantly after being clicked
             ignore right-clicks (just like command buttons)
             have a ShowOutline property to make them behave closer to standard buttons
        *  Accelerated bitmap rendering by using DDBs when possible
        *  Fixed fatal error when unloading after button click w/mnemonic (elastic&tab)

----------------------------
5.00 
----------------------------

NEW VBX Level 1.0 API compatibility 

NEW Licensing Scheme  

   Now there is only one license file VSVBX.LIC.  The banner will not
   popup on projects created when the .LIC is present in your system.
   You don't have to distribute license files anymore.
        

ELASTIC:
=======

NEW PICTURE PROPERTY

   At last! The Elastic now supports pictures.  Bitmaps, icons, and
   metafiles can be placed directly in an elastic. Picture position
   is controlled by the new PicturePos property.  Metafiles always
   fill up to occupy the whole elastic.  Icons cannot be stretched.


NEW PICTUREPOS PROPERTY

   Positions or streches the picture within the Elastic


NEW QUICKPAINT PROPERTY

   This new mode draws the elastic to a memory device context and then 
   updates the screen using BitBlt.  This option uses more memory, but
   repaints often appear much faster and flicker free, especially if
   you change tag labels dynamically. This is similar to the Picture 
   control's AutoRedraw property.


NEW TAGSPLIT PROPERTY

   Set this property to true and the Elastic will truncate tag labels
   at the pipe character ('|').  You can use the remaining portion of
   the tag for other purposes.  For example:
     Elastic.TagSplit = true
     Elastic.TagWidth = 300
     ctrl.Tag = "Ctrl1|OtherStuff"
   This would cause "Ctrl1" to be used as a tag label.


NEW TAGPOS SETTINGS

   In addition to placing tags above or to the left of controls, you
   can now place them below or to the right.


NEW BEVELCHILDREN SETTINGS

   In addition to the previous settings, you can now choose to bevel
   only graphical, only elastics, or only graphical and elastic
   controls.


NEW STYLE SETTINGS --> BUTTONS

   Set the Elastic style to "Command Button" or "Radio Button".  The
   difference between the two is that the radio button is a toggle.
   Buttons can have pictures and captions with accelerator keys.  The
   state of a radio button can be set or retrieved using the 
   new "ButtonState" property.  


NEW CORNERCOLOR PROPERTY

   Allow you to create buttons with rounded corners by setting
   the new "CornerColor" property to the color of the Elastic's
   parent.


NEW FREEDESIGN PROPERTY

   This design time property temporarily disables all Elastic Alignment.
   This is useful if you want to move elastics around the form without
   having them realigning automatically on you.


NEW TEMPLATES PROPERTY

   This property automatically sets a number of other properties at once
   so you can configure Elastics with one click.  Templates are defined
   to create Elastics for many functions, including toolbars, data entry,
   status lines, and buttons.


NEW FORECOLORDISABLED PROPERTY


INDEXTAB:
--------

NEW DYNAMIC DIALOG METHAPOR
   
   Set the TabHeight to 1.  Allow to create switching containers without
   a the tabs.


INDEXTAB IS NOW PALETTE-AWARE WHEN DISPLAYING PICTURES
   
   You can display 255 color pictures on it


NEW CAPTIONSYLE PROPERTY 
   
   It supports 3D fonts


NEW TABHEIGHT PROPERTY
   
   Set your own height for the tabs.


NEW GETTAB PROPERTY
   
   Given a control it will tell you what tab the control belongs to.


NEW TABSTYLES SETTINGS

   There is a new tab style, "CutCorners", that looks pretty neat.


NEW MULTIROWOFFSET PROPERTY

   You can now control the offset between multiple tab sheets when
   MultiRow is set to true.


NEW PRECLICK EVENT

   This allows you to save information on a tab sheet before the user
   switches to a different sheet.


NEW TEMPLATES PROPERTY

   This property automatically sets a number of other properties at once
   so you can configure the tabs with one click.  Templates are defined
   to emulate the tab look used by several applications.


IMPROVED BOLDCURRENT PROPERTY

   The BoldCurrent logic has been improved.  It used to create a pseudo
   bold effect by drawing the current caption twice, offset by one pixel.
   The advantage of this approach over using a bold font is that you
   can emphasize the current tab even when the regular font is already 
   bold.  The disadvantage is that some fonts don't look very good when
   drawn this way.  Now the tab checks the standard font.  If it is not
   bold, then it creates a true bold font and uses that for drawing the 
   current tab.
   

IMPROVED TABPICTURES PROPERTY

   Metafiles are now supported.


AWK:
---

NEW ARRAY VARIABLES

   Awk now accepts the following characters as part of the variable name:
   "{}[],.".  This allows you to use array and structure-like variables
   in your expressions. Note that you still can't evaluate expressions 
   while handling the "Variable" event.
   
NEW FUNCTIONS SUPPORTED

  More functions in the Awk expression evaluator. Now you can use
   SQRT, INT, FRAC, CEIL, and FLOOR.
   

----------------------------
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
==========================
      
