TdfsExtProgressBar v2.06

Description:
  A progress bar control that enables access to the new style types and large
  range values provided by the updated progress bar control.  The updated
  progress bar is provided in the COMCTL32.DLL file that comes with Microsoft's
  new internet software.


Installation:
  Delphi 1:
    * This component is not compatible with Delphi 1.

  Delphi 2, C++Builder 1:
    * Select the 'Component | Install' menu item.
    * In the Install Components dialog, click the Add button.
    * In the Add Module dialog, enter the full path name of the component's
      registration unit (the unit that ends with 'Reg.pas', i.e.
      'BrowseDrReg.pas') and click OK.
    * In the Add Module dialog, click OK.
    * The component library will be rebuilt and a new tab named 'DFS' will be
      available on the Component Palette.

  Delphi 3, 4, 5, C++Builder 3 & 4:
    * Do one of the following:
      + Create a new package by selecting File | New and choosing Package from
        the New tab in the dialog.
      + Open an existing package file.  I suggest you do this if you already 
        have a package that you like to use for small, third party components.
        I specifically have a package named "3rdParty.dpk" that I use for 
        small components that come from other people.  Or, if you are using
        several of my components, you might create a "DFS.dpk" package and 
        use it for all of my DFS components.
    * In the resulting package window, click the Add button.
    * In the Add dialog, on the Add Unit tab, enter the full path name of the 
      component's registration unit (the unit that ends with 'Reg.pas', i.e. 
      'BrowseDrReg.pas') and click OK.
    * You may want to add the other source files (*.pas) to the package as 
      well in the same manner as you did the registration unit.  While this is
      not required, not doing it will cause compiler warnings when the package
      is compiled.  The component will function fine either way, but I 
      personally find the warnings very irritating and am not happy until 
      every compiler warning and hint is gone.
    * If this package is new, or it has never been installed, click the 
      Install button in the package window.  If this package is already 
      installed in Delphi, click the Compile button.

  C++Builder 5 and up:
    * Perform the "Delphi 3 and up, C++Builder 3 and up" steps above, except
      for the last step (Compile or Install).
    * Select the package the component has been added to, and choose 
      Project | Edit Option Source to open the package options in the editor.
    * In the entry for PFLAGS, add the "-LUvcl50" option.  For example:
        <PFLAGS value="-$YD -$W -$O -v -JPHNE -M -LUvcl50"/>
    * Perform the final step from above, Compile or Install.
    * For Borland's official word on this situation, open the C++Builder help
      file and search the index for "dsgnintf.dcu" and see the "Compiling
      packages with DsgnIntf" section.

  Delphi 6 and up:
    * Perform the "Delphi 3, 4, 5, C++Builder 3 & 4" steps above, except
      for the last step (Compile or Install).
    * Add the DesignIDE package to the Requires list of the package into which
      the component is being installed.
    * Perform the final step from above, Compile or Install.
    * This is necessary because of changes to the design-time support units
      introduced in Delphi 6.  For complete information, see the Del6New.hlp
      file in your Delphi 6 Help directory.  In the index, search for
      "upgrade issues" and in the resulting list of topics, select the
      "DsgnIntf renamed and related changes" topic.


Redistributing COMCTL32.DLL:
  Microsoft used to have a really nasty redistribution policy about
  COMCTL32.DLL:  To redistribute it, you have to distribute Internet Explorer
  with your app.  Well, they've finally unpuckered a little bit (probably
  because enough people griped long and loud enough (like Ron Burk in his
  Windows Developer's Journal editorials and mail responses, THANKS RON!).
  Anyhoo, here are links where you can find official redistribution information:

  http://www.microsoft.com/permission/copyrgt/cop-soft.htm#Freq
    This page lists general Microsoft copyright info, and address the
    COMCTL32.DLL issue in particular.  Of greatest note is item #3 which grants
    permission to redistrubute a self-extracting archive provided by MS which
    contains the DLL.

  http://www.microsoft.com/msdn/downloads/files/40Comupd.htm
    This page includes a link to the most current version (v4.72 as of this
    writing) of COMCTL32.DLL in a self-extracting archive, and it even gives
    directions on how to call it from your setup program so that it is "quiet",
    that is it doesn't pop up a dialog over your installl program if you don't
    want it to.

  http://www.microsoft.com/msdn/downloads/files/40Comupd.exe
    This is the link to the most current redistributable package.  About 500k,
    sheesh, but at least it's better than 20 or 30 meg that was required before.

  Many thanks to Arentjan Banck <ajbanck@davilex.nl> for passing these links
  along to me.


Notes:
  * For the full documentation on all the new progress bar stuff as implemented
    in the latest COMCTL32.DLL, have a look at Microsoft's documentation at:
    http://www.microsoft.com/msdn/sdk/inetsdk/help/itt/CommCtls/ProgBar/ProgBar.htm
    Also, you can find information on all the updates to COMCTL32.DLL at:
    http://www.microsoft.com/msdn/sdk/inetsdk/help/itt/CommCtls/CommCtls.htm#book_cc
  * This component demonstrates two useful techniques of component writing: how to
    completely override a property from the ancestor class and how to add new
    window styles to an existing window component.
  * The Min, Max, and Position properties have been completely replaced from the
    ones provided in TProgressBar.  This is because the new version allows for
    32-bit values to be used instead of 16-bit.  This only applies if you are
    NOT using it with Delphi 4.  D4 has it right.
  * The new progress bar provides two new properties not available in
    TProgressBar:

      Color:          The background color of the progress bar.
      SelectionColor: The color of the filled area of the progress bar.

    Additionally, if you are not using Delphi 4, there are two other properties
    that are not normally available:

      Smooth:     Causes the filled area to to be completely solid instead of
                  the normal, blocked style.
     Orientation: Either pbHorizontal or pbVertical, it allows the bar to be
                  oriented vertically or horizontally.

  * The component also demonstrates something not seen very often, a "real world"
    use (i.e. not assembler) for the XOR boolean operator.  See the
    SetExtendedStyles method.  :)


Known Issues:
  * The Width property is getting trashed on form load when Align is not alNone
    and Orientation is pbVertical.  When Loaded gets called, Width is
    equal to Height, even though the form file has a valid Width value.  I am
    at a complete loss to explain this.  The best I can tell you to do is
    manually reset the Width property in your form's OnShow event.
  * The documentation for the new COMCTL32.DLL lists a PBM_SETBKCOLOR message
    very similar to PBM_SETBARCOLOR.  But, unlike PBM_SETBARCOLOR, I can't get
    PBM_SETBKCOLOR to work.  It's supposed to change the background (unused
    portion) color of the progress bar.  I have instead implemented it via the
    WM_ERASEBKCOLOR message.  The code for PBM_SETBKCOLOR is all in place for
    the Color property, and I can't find anything wrong with it, so my only
    guess is that it isn't working in COMCTL32.DLL or something in the VCL is
    stomping on it.  If you want to have a try and see if works for you, enable
    the DFS_TRY_BKCOLOR define that's near the top of ExtProgressBar.pas.  If
    you have more luck than me, please let me know.


Revision History:
  2.06:   + Updated for Delphi 6 compatibility.  See updated install directions
            above.
  2.05:   + Updated for C++Builder 5 compatibility.
  2.04:   + It's *really* D5 compatible now.  Small change between the D5 eval
            version and the real, shipping D5 version broke it.
  2.03:   + TExtProgressBar classname changed to TdfsExtProgressBar.
          + Updated for Delphi 5 compatibility.
  2.02:   + Updated for C++Builder 4 compatibility.
  2.01:   + Added ExtProgressBarReg unit.  All IDE specific code (i.e.
            registering the component, property editors, etc.) are contained in
            this unit.  This was done for two primary reasons:  1) Using the
            component in a Delphi or C++Builder expert would register the
            component as well.  2) Reduce code size in some cases -- usually
            the smart linker removes this sort of stuff since the app never
            references it, but now it's for certain since it isn't even in the
            unit.  This change means that you need to install the component
            using the new "registration" unit instead of the unit containing
            the component.
  2.00:  + Rewrite for Delphi 4.  Delphi 4 provides the most important parts of
           this component, namely 32-bit values for the ranges and the
           horizontal and smooth styles.  However, it does not implement
           everything, such as the ability to change the colors.  So, I have
           rewritten it such that the properties match the ones in Delphi 4 so
           that maintaining/migrating will be easier.  Notably, there is no
           longer an ExtendedStyles property.  Instead, there are Orientation
           and Smooth properties.
  1.13:  + Added Version property.
  1.12:  + Renamed Color property to SelectionColor.  Color is used throughout
           the VCL to mean the background color, so I changed it for consitency.
         + Added new Color property to control the background color.  I never
           could get the COMCTL way of doing this (PBM_SETBKCOLOR message) to
           work, so I've just implemented it the old way (WM_ERASEBKGND message).
  1.11:  + Wouldn't compile under C++Builder 1.
  1.10:  + Added new property: Color.  Sets the color of the bar.  This feature
           was introduced in COMCTL32.DLL v4.71.
         + Fixed problem with C++Builder 3 run-time packages.
  1.02:  + Updated for new DFS.INC file, component tab name, history/comments
           file.
  1.01:  + Wouldn't compile under Delphi 3.
  1.00:  + Initial release.

