Classic Component Set for Delphi
Classic Software

Please refer to CSCCS.DOC for installation instructions.
Please refer to CSCCSFAQ.DOC for answers to Frequently Asked Questions.

===========================================================================
Version 2.16 Changes: (6-Jan-99)
===========================================================================

TcsChameleonTabControl.AlignScrollBtns now makes the scroll buttons visible
by setting the Visible property rather than calling Show which caused
pages of page controls to disappear when the control was used in
conjunction with a splitter which was hidden immediately after adding a new
page (I think there were many factors contributing to the actual cause
of this problem -- all I know is that using Visible instead of Show
fixes it!).


===========================================================================
Version 2.15 Changes: (11-Dec-98)
===========================================================================

Chameleon Tab Controls: Added new properties:

  HotTrack (to enable/disable hot-tracking of mouse cursor over tabs)
  TabHints (to enable/disable individual hints for each tab)
  TextColorHotTrack (caption color to use for hot-tracking)

Changed CSNoteBk and CSTCBase units so the design-time cursor resource is
only loaded in design mode. [Changed in order to prevent MemProof reporting
a Win32 error because LoadCursor was attempting to load a non-existent
resource at run-time.]

Added $J+ to compiler directives in CSTCBase, CSNoteBk and CSGrid units so
they will compile even if user has set Assignable Typed Constants off in
their project's Compile options.


===========================================================================
Version 2.10 Changes: (26-Jul-98)
===========================================================================

Changes made for compatibility with Delphi 4; addition of new
conditional compiler directives (VER120) and interface types for
component/property editors.  Also included package source files for
Delphi 3 (csccs30.dpk) and Delphi 4 (csccs40.dpk).


===========================================================================
Version 2.03 Changes: (29-May-98)
===========================================================================

Chameleon Tab Controls: Further change made to CSTCRgn unit so that regions
are released properly when running on Windows NT 4.

FAQ file expanded (Q.8. How to remove border around control).

TcsRankListBox: Added OnMoveItem event.  This event occurs after an item
is moved.  The old and new index positions are passed as parameters.

TcsNotebook: Fixed problem with tabs not being redrawn properly (bold
missing, border not correct) if only the capitalisation of an existing
tab's caption was changed, e.g. "One" changed to "one".

TcsGrid: Fixed problem with list of selected rows (accessed via Selected
property) not being updated correctly when using single row selection mode
(both ExtendedSelect and MultiSelect are set to False).

TcsFormPanel: New FormInDLL property.  This property can be used in
Delphi 3 only; it cannot be set to True in Delphi 1/2.  When True it
indicates that the subform being used on the panel was created within a
DLL.  If you use subforms created in a DLL and don't set FormInDLL to True
the subform will not be shown correctly.  [Thanks to Nick Costanzo for
discovering that TWinControl.ParentWindow could be used to change the
parent of non-modal forms created in a DLL.]

TcsFormPanel: Now automatically changes Position property of subform if it
has been set to a non default value (poDesigned) to prevent incorrect
positioning within the panel.


===========================================================================
Version 2.02 Changes: (10-Jan-98)
===========================================================================

Chameleon Tab Controls: Fixed problem with incorrect testing of region
handles; this caused incomplete painting of tabs and unreliable selection
of tabs when running Windows NT 4.


===========================================================================
Version 2.01 Changes: (5-Jan-98)
===========================================================================

FAQ file expanded (Q.7. Converting TPageControl to TcsPageControl).

Changed csccs.doc - section 4.4 - Delphi 3; added instructions for
situation where the "Delphi User's Components" package has not been
previously  installed.

Changed csccs.doc - section 2 - para. 3; permission to use with an
executable created by C++ Builder added.

Changed TcsNotebook.TabPageVisible so it works when the current page/tab
is hidden.

Changed csccs.doc - section 4.5 - CCS help file integration for Delphi 3;
now includes instruction to add CSCCS.HLP entry to WINHELP.INI.


===========================================================================
Version 2.00 Changes: (28-Nov-97)
===========================================================================

New TcsTabControl16 component.
New TcsTabControl component.
New TcsPageControl component.


===========================================================================
Version 1.40 Changes:
===========================================================================

CSNoteBk unit: Checks added to prevent problems when using very small
TabHeight or TabWidth values (some users set to -1 to totally hide tabs).

CSNoteBk unit: Two minor code changes to prevent BoundsChecker reporting
false errors when an empty string was passed to StrPCopy.


===========================================================================
Version 1.39 Changes:
===========================================================================

Removed unused variable reference for TextRgn from CSNOTEBK unit.


===========================================================================
Version 1.38 Changes:
===========================================================================

TcsNotebook changed so that tab captions are shown when the control is
printed.

TcsComboBox and TcsDBComboBox changed so that the list item matching their
current text value is selected when exiting/destroying the control.
ItemIndex is now correctly initialised to -1, not 0.


===========================================================================
Version 1.37 Changes:
===========================================================================

Changes made to help file (CSCCS.HLP) and installation instructions
(CSCCS.DOC) for integration with Delphi Help.


===========================================================================
Version 1.36 Changes:
===========================================================================

TcsDBDateEdit changed so it now works with fields of type TDateTimeField,
instead of just TDateField as done previously.


===========================================================================
Version 1.35 Changes:
===========================================================================

Changes made to CSDBDtEd (to prevent future Y2000 problems):
Default Epoch value is now set to the year of the current system date
minus 90, i.e. dates with no century will be mapped to the range from
<Current Year - 90> to <Current Year + 9>, unless you explicitly assign a
different value to Epoch.
Automatic addition of appropriate epoch century has been changed so it
works as expected when the year of the current system date is >= 2000.


===========================================================================
Version 1.34 Changes:
===========================================================================

Compatibility with Delphi 3.


===========================================================================
Version 1.33 Changes:
===========================================================================

TcsSculptButton: Fixed problem with GetObject call when used on Windows NT
systems with 256 colors.


===========================================================================
Version 1.32 Changes:
===========================================================================

CSHRTime.pas: Added typecasts to allow compile without errors when the
{$T} (Typed @ Operator) compiler directive is on.


===========================================================================
Version 1.31 Changes:
===========================================================================

TcsInterrupt: Fixed problem with not being able to re-enable the timer
  after the first timer event had fired when using OneShot mode.


===========================================================================
Version 1.30 Changes:
===========================================================================

TcsSculptButton: Changed so it would handle palettes on 256 color systems.

TcsNotebook: Additional changes so that disabled tabs/bitmaps are displayed
  properly when using palette colors (on 256 color systems).

TcsNotebook: Added PageIndexDefault property so that you can specify
  which page should initially be displayed.

TcsNotebook: Added OnGetPalette event which you can use at run-time for
  256 color (palettized) systems.  Set the Handle parameter to the handle
  of a palette you have created or already exists (e.g. of a TImage on the
  form).  You then need to set the high-order byte of the Color property
  as $01 (to indicate you want to use a color from the palette) and the
  low-order byte equal to the index of the color (0..255) in the palette.
  For example, to use the 48th color (0x30), set Color to $01000030.

TcsNotebook: No longer attempts to protect against "incorrect" use of
  SetFocus by developers in (for example) their OnExit code.  This
  protection was sometimes preventing (programmatic) changes to PageIndex
  at run-time.  CanFocus should be used before any call to
  SetFocus to make sure the control is actually visible and enabled.

TcsInterrupt: New Delphi 2 only component which can be used to generate
  interrupt/timer events without going through the message queue.
  It is a sibling class to TcsHiResTimer and both classes have the
  (new) ancestor of TcsCustomTimer.

TcsDBDateEdit: Fixed problem which occurred when tabbing through the
  control but not actually editing the date (dataset not in edit or
  insert mode).

TcsFormPanel: Added OnAfterFormChanged and OnBeforeFormChanged events.

TcsNotebook: The csInheritable ComponentStyle is now excluded in the
  Delphi 2 version to prevent subsequent problems when the component
  is inappropriately used on a form which has descendants.


===========================================================================
Version 1.25 Changes:
===========================================================================

Fixed TcsNotebook problem which occurred when accelerator keys
corresponding to tabs of a TcsNotebook were used when the TcsNotebook
component was on an inactive page of a TNotebook (the standard Delphi
component).


===========================================================================
Version 1.24 Changes:
===========================================================================

Added OnPaintBackground event which can be used to give the appearance
that the area outside the tabs is transparent when the notebook is placed
on top of an image control. (Only works when ParentColor is False or
UseUnselectedTabColor is True.)  Note that the background referred to
is the notebook background and not the background of each tab, i.e.
you can't use this event to paint each tab a different colour.


===========================================================================
Version 1.23 Changes:
===========================================================================

Fixed TcsRankListBox problem which occurred when attempting to drag an
item in a Delphi 2 application with range checking enabled.


===========================================================================
Version 1.22 Changes:
===========================================================================

Fixed TcsNotebook problem which caused the form's ActiveControl to be set
to the notebook whenever the notebook's tabs were clicked in design-mode.

Fixed TcsNotebook problem which prevented changing of the
ActivePage/PageIndex properties within the form's OnShow or OnActivate event
handlers unless the form's ActiveControl was temporarily set to nil.

Fixed TcsNotebook problem ("Cannot focus a disabled/invisible window")
which occurred when clicking on tabs in design-mode when the notebook's
Visible property was False.



===========================================================================
Version 1.21 Changes:
===========================================================================

Changed CSNoteBk.pas, CSFrmPnl.pas, CSGrid.pas and CSDBDtEd.pas so they
compile with no Hints/Warnings under Delphi 2.


===========================================================================
Version 1.20 Changes:
===========================================================================

TcsEZForm/TcsEZKeys
-------------------
New class and component.


TcsDBDateEdit
-------------
New component.


TcsNotebook
-----------
Changed display of tab captions so that '&&' can be used to indicate
that a single '&' is to be displayed.

Fixed problem with incorrect tab text placement when using Delphi 2 build
of TcsNotebook on Win32s systems.

Fixed problem which occurred when using the Large Fonts display setting
under Windows 95.

Fixed problem where the Enabled property was being changed when the
component was loaded at design-time.


TcsRankListBox
--------------
Added ModifierKey property.


===========================================================================
Version 1.10 Changes:
===========================================================================

TcsStringTable (used by TcsGrid)
--------------------------------

Fixed problem with OnChange event not firing when columns where deleted.

TcsSculptButton
---------------

New component.

TcsFormPanel
------------

Changed Resize method to prevent problems occurring if called when the
component is being destroyed.

Resize method is now used by SetForm method, duplicated code removed.

Fixed problem (which only occurred under Delphi 2) with the previous form
not being hidden correctly within SetFormName.

TcsNotebook
-----------

Corrected problem which occurred when there were invisible pages and you
changed the BitmapAlignment, SidewaysText, TabFont, TextAlignment or
UnselectedColor properties.

Clicking on a tab at design-time can now be used to change pages.
A "hand" cursor now appears when positioned over the tabs at design-time.

Added new public method TabAtPos(X, Y: Integer) which returns the index
of the tab at the specified location or -1 if no tab found.

Changed TabRect from private method to protected method to allow use
by descendant classes.

Corrected the Next/Previous Page commands on the design-time right-click
menu so that you are now able to skip over invisible pages to get to the
next/previous visible page.

Corrected problem which occurred when the active page was made invisible
at design-time.

Added Move method to TcsPageAccess so that pages can be moved at run-time,
e.g. by using csNotebook1.Pages.Move(0, 2); { make 0th page the 2nd page }.

TcsGrid
-------

Changed so that when new rows/columns are added or inserted when the
goRowSizing/goColSizing options are in effect the next-to-last row/column
will now retain its previous size.


===========================================================================
Version 1.05 Changes:
===========================================================================

TcsHiResTimer
-------------

16-bit version changed so that the required DLL (CSTIME16.DLL) is
imported dynamically; this allows the component library to be rebuilt
or applications containing the component to still be run when the DLL is
not found.
Now compatible with Delphi 2 (32-bit).  Note that no DLL is required
when using the component with Delphi 2.

TcsNotebook
-----------

Fixed several instances where objects in internal lists were not being
freed correctly.

TcsFormPanel
------------

Changed so that a case-insensitive comparison is used when comparing
FormName against the list of auto-created forms.


===========================================================================
Version 1.04 Changes:
===========================================================================

32-bit compatibility
--------------------

All components except TcsAutoDefaults and TcsHiResTimer are now compatible
with the 32-bit version of Delphi 2.  Refer to CSCCS.WRI for a list of the
files which differ between the 16 and 32-bit versions.


TcsNotebook
-----------

1.  Dynamic creation of a TcsNotebook in a form's OnFormCreate event
    handler is now possible.

2.  Pages now have a PageVisible (Boolean) property.  Pages can be made
    invisible, for example, to completely hide a certain tab if the current
    user does not have security clearance to access that page.  You can
    change the visibility of tabs at design-time from within the Pages
    property editor.

3.  Page changing (via mouse-click, accelerator key or programmatically)
    will now only occur if the OnExit event handlers for the active control
    doesn't prevent the focus to be changed to the notebook, e.g. no page
    change (or tab click event) will occur when a control contains invalid
    data and its OnExit handler is resetting focus back to itself so that
    its value can be corrected.

4.  A new Bitmap property has been added to TcsNotebook.  Bitmaps must now
    be assigned to tabs at design-time using this new property instead of
    within the Pages property editor (using the standard Picture Editor).
    This new property allows access to the bitmap for the currently
    selected page so that any 3rd party Picture Editor you have installed
    will be used to select the bitmap.

5.  Bitmaps are now displayed 'transparently', i.e. their background colour
    is replaced with the appropriate background colour of the tab.  Note
    that the background (transparent) colour of a bitmap is considered to
    be the colour of the first pixel on the last row of the bitmap.

6.  Bitmaps can now contain multiple glyphs.  New NumGlyphs properties have
    been added to TcsNotebook and TcsPage.  The TcsNotebook.NumGlyphs
    property allows access to the NumGlyphs property for the currently
    selected page.  NumGlyphs can be 1..3.  The first glyph is used when
    the tab is Selected, the second when the tab is Disabled and the third
    when the tab is Unselected (but not disabled).  If only one glyph is
    present then it is used for all three states (and modified as
    necessary).  Each page has its own NumGlyph property.

7.  A new TextAlignment of taInvisible has been added, this allows
    caption-less tabs, e.g. when you only want the glyph to be displayed.

8.  A new BitmapAlignment of baInvisible has been added.  This allows you
    to (temporarily) hide the glyphs by changing this one property without
    having to clear and the later re-assign the bitmap for each page.

9.  TcsNotebook now respects any focus changes made in the OnPageChange
    event handler, e.g. when you want to set focus to a specific control on
    the newly selected page.

10. New TcsNotebook methods TabNumGlyphs[Index: Integer]: Integer and
    TabPageVisible[Index: Integer]: Boolean added to allow programmatic
    access to the page's new NumGlyphs and PageVisible properties
    respectively.

11. The margin between the sides of the tab and the area used to display
    the tab's text and glyph has been increased by 1.

12. Incorrect typecast of FRowIdentities.Items[] corrected (one instance
    only; not causing any known problems).


===========================================================================
Version 1.03 Changes:
===========================================================================

TcsNotebook
-----------

Various changes made to TcsNotebook and supporting files so that
specific notebook pages can be enabled/disabled.
Added PageEnabled property to TcsPage.

Changed TcsNotebook.HasLoaded from public property to private property.
Changed TcsNotebook.InvalidateTab from public method to private method.
Changed TcsNotebook.Reconfigure from public method to private method.
Changed TcsNotebook.UpdateTabCaption from public method to private method.

Fixed the error which occurred if bitmaps were changed while the
notebook was being loaded (sequence of events that caused this not
determined).

Fixed the error which occurred if certain controls were used on the
TcsNotebook's pages and the current page was also being changed in
the form's OnCreate event handler.

Fixed the error which occurred if the Show method of a control on a
TcsNotebook page was used before the notebook had been initialised/shown,
e.g. in the form's OnCreate event method.

===========================================================================
Version 1.02 Changes:
===========================================================================

TcsNotebook
-----------

Removed BitmapName property from TcsPage.
Changed Bitmap property in TcsPage so that it is now read-write and
published.  Bitmaps are now assigned at design-time using the
Picture Editor dialog box.

NOTE: Because the BitmapName property is no longer valid you will
      (if using bitmaps on tabs) need to:

        a) Reload existing forms which contain TcsNotebook components.
        b) Choose Ignore or Ignore All when you get the "Error Reading
           Form" dialog box saying the TcsPage.BitmapName property does
           not exist.
        c) Re-assign the required bitmap to each tab by selecting the
           appropriate bitmap file.
        d) Change or remove any source code references to the
           BitmapName property.

      If you need to determine which bitmaps you previously assigned,
      you can open the form file in ASCII mode in the source code
      editor (before reloading it) to check the old BitmapName
      property values.

Added UnselectedTabColor property.
Added UseUnselectedTabColor property.

Corrected behaviour of SidewaysText property when the component
is first loaded.  Previously, if SidewaysText had been specified
as False and TabOrientation was toLeft or toRight, SidewaysText
would be initialised to True when the form was reloaded.

SidewaysText property is no longer reset to True when changing
TabOrientation from toLeft to toRight or vice versa.

Corrected behaviour of Enabled property for each page. Previously,
each page was always Enabled (even if not the current page), which
may have caused problems if relying on only the current page being
Enabled.

===========================================================================
Version 1.01 Changes:
===========================================================================

TcsNotebook
-----------
Corrected 'List index out of bounds' error which occurred if the
last tab was the current tab and it was deleted.

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