{---------------------------------------------------------------------------------------

    The purpose of this component is to allow applications to easily
    incorporate a Windows 95 type list box with sizeable headers into
    a 16-bit application.

    This component is 100% VCL with no links to a common controls library.

    It's use is very similar to a standard list box.  The header created in the listbox
    is sized by the right mouse button at design time, or filling the SectionWidth
    properties with the size you want at runtime.

    If you need a bitmap to be displayed, you must load one into the component under
    the index you wish to use.  Next, when you add your item to the listbox, the first
    character MUST be the index of the bitmap you want displayed.  Every section of your
    item you add to the list box must also be terminated with the appropriate column
    seperator (which defaults to a '|' character).  If you want the bitmap to be masked
    with the outside edge invisible, set the BitmapMaskColor property to the mask color.
    If you have any problems, just look at the example packaged with the component.
 
    This version is limited to 7 columns maximum.

    Since the format for this listbox requires a number [0..9] as the first character
    for indexing bitmaps, you will need a way to ignore the bitmap if you just want text.
    To do this, you should enter a '~' as the first character of each item in your list,
    to prevent bitmaps from being displayed.

    There are 10 avaliable bitmaps per listbox, and they must all use the same background
    mask if you want masking to work properly.

    Your Bitmaps may be any size! (16-color or 256 color) Try to use 16 color Bitmaps,
    as 256 color bitmaps slow the list drawing process considerably.  If you would like
    a large bitmap, make sure you specify the size in the ItemHeight property.  If you want
    different size bitmaps in the SAME listbox, then intercept the OnMeasureItem message,
    and set the index of each item's bitmap accordingly.  Following is a piece of sample
    code that should work:

	procedure TForm1.MultiList1MeasureItem(Control: TWinControl; Index: Integer;
	  var Height: Integer);
	begin
	  with Control as TMultiList do
	  begin
	    if ListBitmap0 <> nil then
	      if ListBitmap0.Height > Height then Height := ListBitmap0.Height;
	  end;
	end;

    If you would like to dynamically change the Headers, or sizes, you may write to the
    HeaderSections property, with each header item on a seperate line.

    You may also change the header font size and type by writing to the HeaderFont property.
    NOTE: If you make your font too big, it may not fit in the height of the default header.
    If you need to change this, you would set the HeaderHeight property to the number of
    pixels you would like it.

    You can override the default windows highlight color of the listbox by setting the
    HighlightColor property.

    The only Method incorporated that isn't in a "standard" listbox, is ItemParent.
    This function will return the parent item (1st column item) of any valid index
    of 'Items' you pass into it.  The example program also shows how to do this!

    To install this component, simply Click on Install Components from the Options menu
    in Delphi, and select files of type (*.dcu).  Select the MultiList.dcu and click OK.
    Make sure the MultiList.dcr file is in the same directory as the MultiList.dcu file.

This component is being distributed as FREEWARE.  You may however register the component.
All registered owners are entitled to complete documentation and HelpFile with *.KWF, plus
full VCL source code, and maintenance releases as they occur.  Registration is $25 US.

Please send to:

Jim Wood
3652 S Newcombe Way
Lakewood, CO 80235

Comments & Questions to: jwood@cfer.com

Thank you!
---------------------------------------------------------------------------------------}
                              {Copyright  1996 by Jim Wood}

