CoolTrayIcon, ver. 4.4.0


- ver. 4.4.0:
  Time for an update after a pause of over three years:
  * Added support for custom icons in balloon hints (only supported in 
    WinXP SP 2).  
  * Added SetFocus method (supported from IE ver. 5.0).  
  * Added Popup method.  
  * Fixed a bug that made the main form minimize outside the taskbar 
    in case the form's WindowState was set to wsMinimized and the application 
    was initially minimized to the tray. Thanks to Oleg Gusakov.
  * Fixed a bug that caused the CycleInterval property to not change properly.
  * Redefined compiler directives to make CoolTrayIcon compatible with 
    newer Delphi versions.
  * Fixed the CoolService demo, which used way too many CPU resources.

- ver. 4.3.1:
  * Fixed a bug introduced in 4.3.0 that caused forms to disappear when 
    changing their BorderStyle or FormStyle property.

- ver. 4.3.0:
  * Changed the method for hooking the application's message handling.
    This fixes a bug, so that CoolTrayIcon will no longer conflict with
    ThemeManager and possibly other third-party components.
  * Added event OnBalloonHintShow.
  * Added method GetBalloonHintHandle.
  * Fixed the MinimizeAnimation demo to work in D5 and below.
  * Added globe animation made by Werner Pamler to CoolTrayTest demo.
  Big thanks go to Randall Sell, who pointed out a number of bugs:
  * Overloaded methods are not supported in D2 and D3, so the SimpleTimer
    unit now uses two constructors with different names.
  * The main form's Visible property could differ from the value returned
    by IsWindowVisible.
  * In runtime it was possible to remove the runtime icon rather than the
    design preview icon when DesignPreview was true.

- ver. 4.2.0:
  * Added new event, OnMinimizeToTray.
  * Added animation effect demo demonstrating the OnMinimizeToTray event.
  * Changed Hint to a simple AnsiString. This fixes a problem with BCB.
  * The SimpleTimer class was updated to ver. 2. See convert_st_projects.txt 
    if you are using SimpleTimer in your existing projects.
  * Included a chm help file. It contains the same information as various 
    text and html files.

- ver. 4.1.2: Bugfix:
  * Fixed a bug in the SimpleTimer unit.

- ver. 4.1.1: Bugfixes:
  * CTI could cause an infinite loop when switching from a popup window
    (not a child window) to the main form. Thanks to Oliver Häger for
    telling me.
  * BCB 6 didn't like the type ShortString. Added compiler directive to
    change it to AnsiString in BCB. Thanks to Dick Tsai for telling me.

- ver. 4.1.0:
  * New (public) property, Behavior, which determines if the tray icon
    should have classic (Win95) or extended (Win2000) behavior. For
    further explanation, see cooltrayicon.html.
  * Added methods ShowTaskbarIcon and HideTaskbarIcon.
  * Most constants are now private to the unit (moved from interface to
    implementation). This also fixes a name clash conflict experienced 
    by BCB users.
  * The SimpleTimer class was updated.

- ver. 4.0.2: Bugfixes:
  The previous version had some serious bugs, which are hopefully fixed:
  * Less aggressive handling of the WM_DESTROY message. Some users
    experienced their Delphi editor terminated when a project using
    CTI was closed.
  * Saving an icon gave an access violation in some cases.
  * Changed the hint type to a simple string so it can compile in BCB.
  * The unit would not compile in D2 and D3 due to the D4-specific use
    of TCustomImageList and some other details. Thanks to John Kostura
    for helping me find solutions.
  * The dpk files were missing from the 4.0.1 package.

- ver. 4.0.1: Bugfixes:
  * The component could not be used in D4 and below because I used
    the FreeAndNil method. So much for testing.
  * You would get an Access Violation upon termination if the Icon
    property was previously destroyed. Thanks to MDM for pointing it out
    (which BTW he did a long time ago).
  * Possibly I fixed the "NT bug" (the tray icon may disappear in an
    interactive service when you log out, then log back in). I couldn't
    test this, though, so please tell me if you get the error.
    Thanks to Christopher Riley for pointing me towards a solution.

- ver. 4.0.0: First of all a big thanks to Jouni Airaksinen
  (http://www.bluecave.net) who made some major contributions to
  restructuring CoolTrayIcon. The most important are:
  * Introduction of an internal container class, meaning less overhead
    when using multiple instances of CoolTrayIcon
  * Suggestions for improving Click/DblClick events
  * Suggestions for replacing TTimer objects with API methods (I took
    this all the way and created the SimpleTimer class, a more
    low-resource timer than TTimer)
  * Various bug fixes, mostly related to string lengths of hints
  * New separate unit for registering the tray icons
  Other changes include:
  * StartMinimized property is replaced by new OnStartup event; this
    allows you to decide at run-time whether to show the form at startup
    (StartMinimized only worked at design-time)
  * New events: MouseEnter and MouseExit
  * New balloon hint events
  * New method GetTooltipHandle which I got from Eduardo A. Morcillo's
    VB code (http://www.domaindlx.com/e_morcillo)
  * New method GetClientIconPos which actually retrieves the cursor's
    position inside the tray icon (with some caveats)
  * WindowHandle property discarded; don't know why I put it in anyway
  * No more compiler warnings in D6 that AllocateHWnd is deprecated
  * No more need to call the Refresh method
  * More demos, see demos.txt for descriptions
  * Documentation updated

- ver. 3.2.0: The component no longer fires a click event along with a 
  doubleclick event. Thanks to MDM for code suggestions.
  Some people have experienced problems logging off or shutting down
  Windows while CTI was running. This should now be fixed.
  Thanks to Peter T. Roux. A few minor adjustments.

- ver. 3.1.2: Fixed a bug pertaining to C++ Builder ver. 5. A few
  constants were already declared by CB5. These have been renamed.

- ver. 3.1.1: A default icon is assigned to the component when it is 
  created initially. Thanks to Jaro Griscik. Bug-fix: the design
  preview icon was not cleared from the tray upon project exit.

- ver. 3.1.0: You can now use CoolTrayIcon in a service app. as the
  component no longer automatically assumes its owner is a form.
  Some properties and methods don't make sense without a form. See
  the documentation for details.

- ver. 3.0.0: CoolTrayIcon is now distributed together with the
  new TextTrayIcon component. New method: BitmapToIcon which
  renders an icon from a bitmap. Bug fixed: app. was displayed on
  the taskbar even though StartMinimized was true if the main form
  was an MDI form. Updated the documentation.

- ver. 2.5.1: Fixed the bug that required the main form to have
  focus in order to determine keyboard status in the OnMouseDown,
  OnMouseUp, and OnMouseMove events.

- ver. 2.5.0: Added support for "balloon hint". This feature is
  implemented in WinMe, Win2000 and WinXP only. Invoking the balloon
  hint in other Windows versions method will not have any effect.

- ver. 2.4.1: Fixed a bug that sometimes caused a stack overflow
  as a graphic method repeatedly called itself. Thanks to Nihat
  Yorganzi and others. Improved the demo so the "Close to tray"
  option will not prevent Windows from shutting down.

- ver. 2.4.0: Added a little trick suggested by Damien Honeyford:
  When the Explorer crashes, the all too familiar result is that all 
  tray icons disappear. CoolTrayIcon will now intercept the taskbar 
  re-creation message, and automatically re-display the tray icon. 
  This feature will only work with Win98 and above or Internet 
  Explorer 4 and above. Other things: Documentation is now in HTML. 
  Added another icon animation to the demo.

- ver. 2.3.0: Various minor bugs fixed: 1) Calling the ShowMainForm
  and HideMainForm methods before the main form was created would
  crash the app. Fixed thanks to James Legg. 2) The tooltip would
  give trouble if it was 64 chars. Thanks to Toms Baugis and
  Teus de Jong. 3) The popup menu would not close itself auto-
  matically if the StartMinimized property was true. Thanks to
  Ingo Krueger, Chris Witt, and Reister HansJoerg.

- ver. 2.2.2: When there was more than one form visible the taskbar
  icon would not hide when the main form was minimized. Fixed.

- ver. 2.2.1: Fixed a popup menu bug. Also fixed a bug which meant
  D2 and D3 users could not compile the component. Added more icon
  animations in the demo. Thanks to Daniele Gervasoni for the
  "tray graph".

- ver. 2.2.0: IconIndex is now a property, allowing you to specify
  an icon at run-time. The OnCycle event is changed so it returns
  the index to the next icon that will display when cycling.
  Finally, I fixed a bug that caused the taskbar icon not to
  display itself when MinimizeToTray was true. Thanks to Lorenz
  Graf for pointing it out to me.

- ver. 2.1.4: The main form will no longer show itself untimely
  after the form's BorderStyle property is changed. Thanks to
  Thomas Reimann.

- ver. 2.1.3: Fixed a bug that caused the main form not to display
  itself (how embarassing).

- ver. 2.1.2: I *finally* found the bug that would cause some
  compound controls (like controls on notebook pages or tab sheets)
  not to display properly when StartMinimized was true. Incidently,
  this also means that TForm.Position now works.
  Also fixed a minor bug that caused modal forms owned by the
  main form to appear behind the main form when the popup menu
  appeared (thanks to Arash Ramin).

- ver. 2.1.1: Added notification method to properly detect whether
  the associated popup menu and imagelist are deleted. Thanks to
  Hui Jin Ong for pointing it out to me and making suggestions.

- ver. 2.1.0: Added property MinimizeToTray. This was done by
  hooking into the application's message processing.

- ver. 2.0.0: Name is now TCoolTrayIcon. Added icon cycling and
  design preview capabilities. Added method Refresh. Fixed a bug
  that caused some controls to not redraw when starting your app.
  as invisible.

- ver. 1.0.3: Added property Enabled. Also fixed a bug reported by
  David Knaack, which caused a runtime error if you double-clicked
  when no popup menu was assigned to the icon.

- ver. 1.0.2: Added a Handle property, and enabled handling of
  default menu items. (Partially) fixed a bug so the icon will
  update itself when a new icon is assigned.

- ver. 1.0.1: The associated popup menu now behaves as it is
  supposed to. Also fixed that forms using the tray icon didn't
  go in front of other windows when restored. Thanks to Chris Hope
  for telling me.

- ver. 1.0.0: First release. Component was called TTrayIcon at
  the time.



If you have any comments or corrections, I would very much like to
hear them. If you develop some cool tray animations you want to
share, send them to me  :-)

Troels Jakobsen
troels.jakobsen@gmail.com
