This file contains the most up-to-date information about changes to
the current and previous Envelop releases. Each release has its own
section, with the most recent at the top of the file. Envelop releases
are made approximately one per month, or more frequently as needed.

Release 1.1

        CHANGES SINCE PREVIOUS RELEASE:

        - Improved memory performance, including fixing a serious leak that under Win95
          was most noticeable when interacting with the help file.

        - Added startup dialog and options to allow easy configuration of Envelop's startup
          behavior (make automatic new project, browse to open a project, no project, etc.).
          The "out-of-the-box" behavior is still to make an automatic new project, but the user
          can now change this using the Options|Startup dialog.

        - Improved the DataControl configuration wizard:
           o don't have drag/drop set the object's DataSource.
           o have Add button set the DataSource
           o clear controls list before population
           o use full names when populating controls list

        - Multi-select support has been added to ListBox, FileListBox, and IndentedList.

        - Added support for: For Each x {In | CopiedFrom | EmbeddedIn}...Next x
          This language feature allows easy iteration of objects in a group, objects
          embedded in a host object, and objects copied from a prototype object.

        - Options|Window Layouts now saves visibility of Property, Method, and Debug windows.

        - Envelop's project and module file dialogs now retain the last directory visited,
          still without changing Envelop's current directory.

        - Added Center method on Form for centering Form in the middle of screen.

        - Added [Set]ItemText{Style|Color} methods to IndentedList. Allows color,
          bold, italic, and bold-italic in list item text.

        - Improved error reporting under Win95.

        - When the debugger is not present, or is not trapping system exceptions, the error
          box now also displays the object and method name responsible for the error.

        - Added event locale button on Method Editor for easy specification/navigation
          of event-handling methods located on an embedded object or its container.

        - Method editor now creates initial get/set methods for Procedural Properties.

        - Added a vertical sash to the Property Editor's list of properties, so the user
          can adjust the relative widths of the property name and value columns.

        - Added TextStyle and TextColor properties to PropertyEditor.

        - The Preload event is now supported simply by adding a Preload method to
          any object. Preload events are sent as soon as the object's module is loaded.

        - Under Win95, the OpenDialog and SaveAsDialog objects now use the Explorer-
          style common dialogs.

        - For Win95, Envelop now goes into taskbar properly when minimized.

        - Form.Caption is now kept in sync with object name on renames, when the caption
          is the same as the old object name.

        - New forms now take their initial position from Form, and Form is
          included in default layouts so new forms are in a nice initial place.

        - Upload Wizards are now shipped with the release and have been improved
          to allow you to retrieve the entire contents of a directory.

        - Fixed a bug with Text object's ParagraphDelimiterExpr property.

        - Fixed a bug where our gadget icons did not look right when user interface
          color scheme was changed.

        - Fixed problem with CreateDataSource method, list of data
          sources is now accurate.

        - Fixed bugs in processing of "Connect" string,
          also fixes other parsing related bugs. Affects ODBC object.

        - Fix problems with mouse capture not being released under Win95.

        - Fixed errors with line number reporting for exceptions.

        - Added GetSysColor and constants to User32.

        - Added SearchPath declare to Kernel32.

        - Published FullPathName and ShortPathName properties on Directory and File objects.

        - Added RunProgramGetStatus to SystemTools object.

        - Support for enhanced metafiles in printing and XferData Pictures.

        - Support for HintText event on button gadgets.

        - Improved the NewProjectForm with a resize method and auto-selection
          of the .EXE file to match the .EPJ file dir/name.

        - Fixed bugs involving setting certain properties within an object's
          Setup method.

        - Fixed a small bug in Name getting that caused the File object 
          properties Path & Name & Extension to not give the correct full path
          name back if the name part is a long name with multiple dots (.) in it.


        ==============================================================================

        Release 1.0.3

        CHANGES SINCE PREVIOUS RELEASE:

        - Fixed a bug that caused a program error when closing projects with
          a certain common pattern of interdependencies.

        - Fixed reporting of line numbers when an error occurs in a method
          invoked from a Begin Code..End Code section of a text module.

        - Samples Browser now properly advances to partially-matched search string.

        - A couple of small fixes to the Wizard implementation objects.

        - The InstallButton has been revised to support a more robust component
          installation model.

        - The object operations: Copy, Abstract, and Save To Text now tell which
          object is being operated on.

        - The HostObject method was modified to not cause a program error when
          invoked with Nothing as an argument.

        - The IsPreload method now correctly returns True/False instead of 1/0.


        ==============================================================================

        Release 1.0.2

        CHANGES SINCE PREVIOUS RELEASE:

        - Envelop now searches directories in the following order for modules
          when no explicit path information is given with the module load request:
            1) The directory the application was loaded from.
            2) Current directory.
            3) 32-bit system directory (GetSystemDirectory).
            4) 16-bit system directory (no API to get this).
            5) Windows directory (GetWindowsDirectory).
            6) Directories given in PATH.
            7) Directories given in ENVELOP_PATH (if defined).
          As you add modules to projects, Envelop adds the directory containing
          the module to the ENVELOP_PATH (if it is not there already). In general,
          this makes it possible to find modules without explicit path information,
          and makes it easier to reorganize your projects by moving or renaming the
          directories that contain them. If the ONLY way to load the proper module
          is to keep explicit path information, then the full path to the module
          will be stored in the Envelop project file (.EPJ file). You can edit this
          file with any text editor if you must move the project or the module to a
          different location.

        - Envelop .EXE files are now written with NO explicit path information
          with regard to module locations. This makes it easier to install an
          Envelop application in a location different from where it was developed.
          It also means that for an application to load properly, all its modules
          must be findable via the standard module search sequence (see above).

        - Support has been implemented for the following standard screen resolutions:
          1024x768, 800x600, and 640x480. You can also create your own layouts and
          save them, using the "Options|Window Layouts..." menu item from the Envelop
          main form. The screen layout support is implemented in a generic way that
          you can use in your own applications by using the following objects:
          ScreenLayoutSet, ScreenLayoutConfigForm, ScreenLayout, and WindowLayoutItem
          (all in module "tools"). These objects are not yet documented.

        - The following methods were implemented (mainly to support the screen
          layout implementation):
            o Screen.EnumWindows
            o ObjectTools.EnumObjectCopies
            o ObjectTools.EnumObjectEmbeds
            o ObjectTools.FindObjectFromWindow
          These methods are not yet documented; see the code that implements the
          screen layout support for examples of how to use them.

        - The objects HashStringString and HashStringObject were added. These
          objects are similar to the HashDictionary object (which is used to
          implement Envelop's context-sensitive help). Hash tables are an
          efficient way to search for an item using a "hash-function" over
          a string to quickly reduce the search to a small subset of the items
          in the table. The three different kinds of tables are all indexed
          by a string, but each stores a different kind of item as the value
          associated with the key string:
            o HashDictionary:   key=string, value=long
            o HashStringString: key=string, value=string
            o HashStringObject: key=string, value=object

        - The management of message loops by modal forms and the debugger was
          improved to avoid inteference between them that could put the system
          into a confused state.

        - Prior to version 1.0.2, if a modal form was going to both hide and
          return a specific modal result, the sequence of function calls had
          to be "Hide" followed by "ModalResult(result)". Now either order of
          these function calls results in the proper behavior, i.e. the form is
          hidden and the result given to ModalResult is returned from ShowModal.

        - The following new samples were added:
           o bootcamp\basic\dbconect
           o bootcamp\advanced\dbsample
           o arsenal\parts\grid

        - Bugs were fixed in drawing filled shapes in certain Drawable controls,
          in the object list and hierarchy controls, in deleting the top-visible
          property from the Property Editor, in the Call Stack trace window, and
          in moving objects between modules.

        - Much more documentation has been added, including an expanded tour of the
          main windows in the Envelop environment, and more documentation of the
          samples provided with Envelop.


        ==============================================================================

        Release 1.0.1

        CHANGES SINCE PREVIOUS RELEASE:

        - The Envelop setup program now makes every attempt possible to get the
          Envelop program directory into the user's path. This helps avoid trouble
          due to a problem with OLE under Windows NT that causes an error during
          startup of Envelop. It also makes it easier to run Envelop applications
          created during tutorials, without having to further modify the user's
          environment.

        - The Finger and Help-Finger are now more careful about ignoring windows
          from other programs, which previously caused occasional errors.

        - Many improvements have been made to the samples (bootcamp and arsenal)
          and the Envelop Help file.

        - Fixes were put in to keep the Vbx and GL controls from causing program
          exceptions when used under Windows95.

        - The Ole control sample had a problem under Windows95 that has been fixed.

        - The handling has been improved for when the DLL for an Object can't be found.

        - Loading Help files from samples under Windows95 has been fixed.

        - Providing no arguments to a method that takes arguments is now handled correctly.


        ==============================================================================

        Release 1.0

        CHANGES SINCE PREVIOUS RELEASE:

        - Envelop now supports managing multiple object modules using a Project
          metaphor. Projects can be either application projects which are targeted
          toward developing a standalone EXE, or component library projects which
          are targeted toward developing a set of re-usable objects. On startup a
          new application project is automatically created with its main form ready
          for editing.

        - Unloading of modules required by other modules is now restricted. A module
          "B" requires module "A" when "B" contains objects that were copied from some
          object in "A". Object references between modules do not by themselves
          restrict unloading modules, but if a module "C" contains an object with a
          reference to some object in module "D", and "D" is unloaded, the reference
          in "C" becomes an empty reference (is set to "Nothing").

        - When an object is destroyed, all embedded objects of that type are now removed,
          the old method was to leave a "null" object in the embedded object's place.

        - Context sensitive help is now in place.  The 'F1' key is recognized by all
          object editors (e.g. Method Editor, Property Editor, Object Viewer), and in 
          various other places.  The Help icon now acts like the Finger icon, to select
          a specific object interactively to get help on.

        - Embedding controls from the PropertyEditor onto the "edited" form is no longer
          a problem.

        - Event DblClick is now declared on the Ole control.

        - When Envelop starts up, the main window now has focus.

        - Thumb dragging a Scrollbar into a negative value is no longer a problem.

        - New HashDictionary object available, that associates a string to a number

        - File type is checked on FileName specified for a resource file in Bitmap,
          to avoid alarming (but harmless) system error message.

        - All problems relating to Text object and the first line of text, and
          end-of-line problems have been fixed.

        - Dynasets with DelimitedAscii or FixedAscii databases now behave properly
          when FirstLineAsFieldNames is True, under the Update method.

