Delphi 3.0 components for the Microsoft's new Common Controls:

       Calendar
       Progress Bar (new properties)
       IP Address Edit
       Flat Scroll Bars
       Pager
       Drag List Box
       ComboBoxEx

To use these components of run the demo
comctl32.dll version 4.71 or higher is required.
This version comes with MS Internet Explorer 4.0,
Windows 98 or NT 5.0.


**********************************************************************

       Dmitry Streblechenko
       Department of Physics and Astronomy
       Arizona State University
       Box 1504
       Tempe, AZ 85287-1504, USA

       dmitrys@asu.edu

       download the source code from
       http://www.shareit.com/programs/100754.htm
       or
       send a check or money order for US $20
       to the address above;    

       As future updates become available, you will get
       them for free.


**********************************************************************

TMonthCalendar:

 function GetMinReqRect:TRect; -  the minimum size required to display a full month
                                  in a calendar control.

 property SelStart:TDateTime; - read/write; lower limit of the date range currently
                                  selected by the user.

 property SelEnd  :TDateTime; - read/write; upper limit of the date range currently
                                  selected by the user. SelEnd is equal to SelStart if
                                  coMultiSelect is not in the Options or MaxSelection
                                  is 1.

 property FirstMonth:TDateTime; - read only; first displayed month.

 property LastMonth :TDateTime; - read only; last displayed month.

 property MonthRange:integer; - read only; number of currently displayed months.

 property Today:TDateTime; - read/write; date displayed as "today" for a calendar
                               control.
                               If you assign any value different than default,
                               control will not automatically update the
                               "today" selection when the time passes midnight for the
                               current day and will not automatically update its display
                               based on local changes.

 property FirstDayOfWeek:integer; - read/write; returns first day of the week.
                                    if FirstDayOfWeek is set to anything other than
                                    LOCALE_IFIRSTDAYOFWEEK, the control will not
                                    automatically update first-day-of-the-week
                                    changes based on the locale changes.

 property MinRange:TDateTime; - read/write; minimum allowable range of dates.
 property MaxRange:TDateTime; - read/write; maximum allowable range of dates.
                                  if MinRange (MaxRange) is 0, no corresponding
                                  limit is set.

published

 property Options:TMonthCalendarOptions; - read/write; options for the month calendar:
                                           coMultiSelect - The month calendar will allow
                                             the user to select a range of dates within the
                                             control. By default, the maximum range is one week.
                                           coWeekNumbers -  The month calendar control will
                                             display week numbers (1-52) to the left of each
                                             row of days.
                                           coNoTodayCircle - The month calendar control will
                                             not circle the "today" date.
                                           coNoToday - The month calendar control will not
                                             display the "today" date at the bottom of the control.
          TMonthCalendarOption = (coMultiSelect, coWeekNumbers, coNoTodayCircle, coNoToday);
          TMonthCalendarOptions = set of TMonthCalendarOption;

 property MaxSelectionCount:integer; - read/write; Maximum date range that can be selected
                                       in a month calendar control.

 property ScrollDelta:integer; - read/write; number of months that the control moves its
                                 display when user clicks a scroll button.

 property OnGetDayState:TGetDayStateProc; - read/write;
                   TGetDayStateProc=procedure(Year, Month : integer; var Days : integer) of object;
                   Use this event handler to set some (or all) days displayed in bold.
                   integer Days is treated as an array of bits [0..31], e.g. setting
                   Days:=integer(1) shl (15-1);
                   will set 15th day to bold.

 property OnSelChange:TNotifyEvent; - read/write; sent by a month calendar control
                                      when the currently selected date or range of
                                      dates changes.

 property OnSelect:TNotifyEvent; - read/write; sent by a month calendar control
                                   when the user makes an explicit date selection
                                   within a month calendar control.

**********************************************************************

TProgressBarEx

  All old TProgressBar properties apply, new properties are:

  property Smooth:boolean; - read/write; smooth fill if TRUE, block fill if FALSE;

  property Vertical:boolean; - read/write; Vertical/Horizontal progress bar;

  property ColorBar:TColor; - read/write; color of the filled blocks

  property Color; - read/write; background color of the progress bar.

**********************************************************************

TIPEdit - all TWinControl properties aplly, new methods/properties are:

   procedure SetFocus(aField:integer); - sets focus to the field aField.
                                       Example: to set focus to 0 field,
                                       SetFocus(0);

   procedure SetRange(aField, Min, Max : byte); - sets any range between 0 and 255
                                                for the field aField.

   property Fields[Index:integer]:byte; - read/write; access fields as an array,
                                          0 <= Index <=3;

   property Field0:byte;
   property Field1:byte;
   property Field2:byte;
   property Field3:byte; - read/write; access editor fields as separate properties.

   property Font; - read/write; font used in the editor.

   property Blank:boolean; - read/write; setting Blank to TRUE clears all fields
                             in the IP editor.

   property OnFieldChange:TFieldChangeEvent;
            TFieldChangeEvent = procedure (Sender :TObject; Field :integer) of object;
                           An event fired up when an editor is changed.

**********************************************************************

TFlatControlScrollBar - works only with the TScrollingWinControl descendants,
                        that is only TScrollBox and TForm :(
                        Does anybody know how to make it work with, say,
                        TMemo or TRichEdit? Let me know if you do.

    property Mode:TFlatScrollBarMode; - read/write; visual apprearance of a
                                        scroll bar.
             TFlatScrollBarMode = (fsEncarta,fsFlat,fsRegular);

    property Color:TColor; - read/write; background color of the scroll bar.

    property Buddy:TScrollingWinControl; set this property to the control whose
                                         scroll bar look you want to change.

**********************************************************************

TPageScroller - a container very much like Delphi's TScrollBox, only looks
                better :)

   property ClientWidth:integer;
   property ClientHeight:integer; - read/write; scroll size of the pager.
                                    Unlike TScrollBox, TPageScroller can only
                                    be either horizontal or vertical, you cannot
                                    have both.
                                    If ClientWidth (ClientHeight) is smaller
                                    than the current Width (Height), no scroll buttons
                                    are visible.

   property ButtonSize:integer; - read/write; width (if Kind=pkHorizontal)
                                  or height (if Kind=pkVertical) in pixels of
                                  the scroll buttons.

   property Position:integer; - read only; scroll position of the pager. I would
                                love to make this property read/write, but it looks
                                like there is a bug in the control: pager scrolls
                                unpredictably when one tries to set the position.

   property ScrollDelta:integer; - read/write; number of pixels pager scrolls when
                                   a user clicks on one of the scroll buttons.

   property Color:TColor; - read/write; background color of the pager.

   property ColorBtn:TColor; - read/write; color of the scroll buttons.

   property Kind:TPageScrollerKind; - read/write; determines whether the pager
                                      scrolls horizontally or vertically.
                            TPageScrollerKind=(pkVertical, pkHorizontal);

   property AutoScroll:boolean; - read/write; if TRUE, holding mouse button down
                                  over one of the scroll buttons will continously
                                  scroll the pager.

   property OnScroll:TNotifyEvent; - read/write; event fired up when pager scrolls.

**********************************************************************

TDragListBox  - same as TListBox, but supports drag & drop of its items.

    property DragItem:integer; - read only; the item currently being dragged,
                                 -1 if no dragging is taking place.

    property AutoScroll:boolean; - read/write; if TRUE, list box will scroll when
                                   user drags an item outside of the list box.

    property AutoArrange:boolean; - read/write; if TRUE, list box will automatically
                                    move the dragged item to its new position. If you
                                    do not want the default behavior, set AutoArrange
                                    to false and do your own processing in the
                                    OnItemDragDropped event (see below).

    property OnItemDragBegin : TOnDragBeginEvent; - read/write;
             TOnDragBeginEvent = procedure (Sender:TObject; Item:integer; var AllowDrag: boolean) of object;
             Event handler is called when user starts dragging one of the items.
             Set AllowDrag to false to disallow dragging the item.

    property OnItemDragItem  : TOnDragItemEvent; - read/write;
             TOnDragItemEvent  = procedure (Sender:TObject; ItemOver:integer; var AllowDrop: boolean) of object;
             Event handler is called when user drags DragItem (see above) over ItemOver.
             Set AllowDrop to false to prohibit dropping the item.

    property OnItemDragCancel: TOnDragCancelEvent; - read/write;
             TOnDragCancelEvent = procedure(Sender:TObject; ItemOver:integer) of object;
             Signals that the user has canceled a drag operation by clicking the right
             mouse button or pressing the ESC key.

    property OnItemDragDropped: TOnDragDroppedEvent; - read/write;
             TOnDragDroppedEvent = procedure(Sender:TObject; ItemOver:integer) of object;
             Signals that the user has completed a drag operation by releasing the
             left mouse button over the item ItemOver.

**********************************************************************

TComboBoxEx - same as TComboBox, but has an associated image list (see Images below),
              drawn to the left of each item.

   property Style: TComboBoxExStylen;
            TComboBoxExStyle = (csDropDown, csSimple, csDropDownList);

   property Images:TImageList; - read/write; list of images to be displayed next
                                 to the combo box items.

   property Items:TComboItems; - read/write; list of combo box items, similar
                                 to TList, but with some additional properies:

            TComboItems:

            constructor Create(AOwner: TComboBoxEx); - creates a TComboItems instance.

            function Add: TComboItem; - creates a new combo item and adds
                     it to the combo box. Call Add to add a new combo item to the end of the combo.
                     Add returns the newly created TComboItem object.
                     To create an item and insert it into the beginning or middle of the combo,
                     use the Insert method instead.

            procedure AddItem(aCaption:string; aImageIndex,
                  aSelectedIndex, aIndent:integer); - adds a TComboItem to the combo box
                  with the specified Caption, ImageIndex, SelectedIndex
                  and Indent.

            procedure Assign(Source: TPersistent); - Assign copies
                      the list of combo items from another TComboItems object.

            procedure Clear; - clears the contents of the combo box.

            procedure Delete(Index: Integer); deletes a TComboItem with index
                      Index from the combo box.

            function IndexOf(Value: TComboItem): Integer; - returns index of a
                     ComboItem.

            function Insert(Index: Integer): TComboItem; -
                     creates a new combo item and adds
                     it to the combo box. Call Add to add a new combo item to the end of the combo.
                     Insert returns the newly created TComboItem object.

            procedure PopulateCombo; - clears the combo box items and populates
                      it from its internal list.

            property Count: Integer; - read only; number of items in the combo box.

            property Handle: HWND; - read only; handle of the combo box.

            property Item[Index: Integer]: TComboItem; - read/write;
                      indexed array of all combo items managed by the TComboItems object.

            property Owner: TComboBoxEx; - read only; TComboBoxEx owner.


                     TComboItem - an object representing a TComboBoxEx item.

                     property Caption: string; - read/write
                              Item's caption.

                     property Data: Pointer; - read/write;
                              specifies any application-specific data
                              associated with the combo item.

                     property Index: Integer;  - read only;
                              the position of the combo item in the
                              TComboItems collection.

                     property ImageIndex: Integer; - read/write;
                              determines which image is displayed as
                              the icon on the left of the item.

                     property SelectedIndex: Integer; - read/write;
                              determines which image is displayed as
                              the icon on the left of the item when it
                              is selected.

                     property Indent:integer; - read/write;
                              specifies the amount of indentation
                              from the left side of the combo box
                              border when it is dropped down.

                     property Owner:TComboItems; - read only;
                              specifies the TComboItems object that owns the combo item.

                     property ComboBox:TComboBoxEx; - read only;
                              specifies the TComboBoxzEx object that owns the combo item.

