Twilight Zone Software
======================

TCheckTreeView for Delphi 4, ver 1.0 (06/20/99)


I. Installation in Delphi IDE
-----------------------------

Install package included in the archive as usual:
  1. Extract all files from the archive.
  2. Open Delphi 4.
  3. Select Component|Install Packages from IDE menu.
  4. Click Add button.
  5. Select TZCHKTV.BPL, click Open.
  6. Ensure that directory where CHECKTV.PAS is located is
     listed in library path.

Note: source code of TZCHKTV.BPL is availabe on request, see Contacting Us 
section below in this document.


II. Editing Properties at Design-Time
-------------------------------------

When you are in IDE, you can edit properties of each node
in TCheckTreeView.

When TCheckTreeView is selected you can see two properties at the
top of Object Inspector, those props are not saved and used only
at design-time to provide interface of setting actual ones: About 
and Current Node. Actual names of these props are: A0About 
and A0NodeProps, so if you find them at run-time, simply ignore them.
If you click '...' button in About property you will see 
message box with copyright notes and three buttons: 
Yes, No and Cancel. Those buttons switch design interactivity
mode. When design interactivity is turned on, you may select
all nodes in tree view as well, as you may check, collapse and
expand them. Upon selecting a node at design-time, Current Node
property can be used to set currently selected node props. 
Explanation of every prop of node see below in this document.


III. What Is TCheckTreeNode Class?
----------------------------------

This is direct descendant of TTreeNode representing a node
in TCustomTreeView (TTreeView). TCheckTreeNode includes 
additional properties to store checkbox or radioitem states.


IV. TCheckTreeNode Properties
-----------------------------

1. Checked (r/w)
  Indicated whether a node is checked, meaningful only when CheckKind property
  is set to ckCheck, ckGroup, ckRadio.

2. CheckKind (r/w)
  Shows type of the node:
    ckNone: node is simple tree node, i. e. there is no checkbox or radiobutton
      on the left
    ckCheck: node is checkbox
    ckGroup: node is virtual checkbox, i. e. it does not show the check mark, 
      but it is a link in a chain Parent-Children, so that it can be said,
      that is invisible checkbox
    ckRadio: node is radiobutton

3. Enabled (r/w)
  Indicated whether node's state (checked/unchecked) may be changed by the
  user. Programmatically node still can be changed. Also it is changed to
  reflex children if they are enabled

4. CheckState (r/w)
  The same as checked, but provides more wide information, e. g. it can
  show if the node is grayed. Setting this property to cbGrayed if 
  some or all of ReflexChildren or ReflexParent properties are set makes
  no effect, 'cause node calculates its state depending on parent and/or
  children.

5. ReflexParent
  Indicates that when node's state is changed, node automatically causes
  its parent to check its state.

6. ReflexChildren
  Indicates that when node's state is changed, node automatically causes
  children to be checked (if user has checked the node) or unchecked 
  (otherwise).

  ReflexParent and ReflexChildren are meaningful only if CheckKind property
  is set to ckGroup or ckCheck.

7. ItemIndex
  Shows which child item with CheckKind=ckRadio, is checked.


V. TCheckTreeView Properties and Methods
----------------------------------------

1. props Checked, NodeEnabled, CheckKind
  Provide interface to set node's (passed as parameter of prop) appropriate
  property.

2. prop Flattness
    cfAlwaysFlat   - means that checkmarks always look flat
    cfAlways3D     - means than checkmarks look as usual checkboxes or radio
      buttons
    cfHotTrack     - meaningfull only when HotTrack property is set to
      True, means that checkmarks look flat unless mouse pointer passses
      over owning node, then they look 3D, as usual

3. mthd MakeRadioGroup
  Simplified way to make a radiogroup from all same-level nodes (children
  of parameter).

4. evnt OnChecking
  Called when a node is about to be checked directly, i. e. if node's state
  is changed via dependency operation (e. g. when all children have been
  checked, node has to be checked (if ReflexParent of children=True), but
  OnChecking is not called for the node). You can allow or disallow node
  checked state changing.

5. evnt OnChecked
  Called when node's checked state already has been changed.


VI. Legal Stuff
--------------- 

This product is distributed "as is", without warranty, implied or expressed.
While every effort is made to ensure that this product and its documentation
are free of defects, Twilight Zone Software shall not be held responsible
for any loss of profit or any other commercial damage, including, but not
limited to special, incidental, consequential or other damages occasioned
by the use of this product.

You may distribute unmodified source code with no restrictions.
Since you have modified the source code you may not distribute this component
without written approval of Twilight Zone Software.

You may NOT create new Delphi components for distribution outside of
your company, via freeware, shareware or any commercial product offering,
based on TCheckTreeView without the written approval of Twilight Zone Software.

Twilight Zone Software reserves the right to modify or remove any function,
procedure or property in future releases of the component.
We are not responsible for, nor can we provide technical support for,
your use of any un-documented function, procedure or property.
You assume full responsibility for supporting your resulting code and
component as well as the results of your using any undocumented function,
procedure or property.


VII. Contacting Us
------------------

Latest information on this and other components may be found at
http://now.at/twilightzone.

For technical support and questions: tzsoftru@crosswinds.net

