home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 August / VPR9708A.ISO / D3TRIAL / INSTALL / DATA.Z / COMCTRLS.INT < prev    next >
Text File  |  1997-03-21  |  53KB  |  1,579 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Visual Component Library                 }
  5. {                                                       }
  6. {       Copyright (c) 1996,97 Borland International     }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit ComCtrls;
  11.  
  12. {$R-}
  13.  
  14. interface
  15.  
  16. uses Messages, Windows, SysUtils, CommCtrl, Classes, Controls, Forms,
  17.   Menus, Graphics, StdCtrls, RichEdit, ToolWin;
  18.  
  19. type
  20.   TTabChangingEvent = procedure(Sender: TObject;
  21.     var AllowChange: Boolean) of object;
  22.  
  23.   TTabPosition = (tpTop, tpBottom);
  24.  
  25.   TCustomTabControl = class(TWinControl)
  26.   protected
  27.     procedure AlignControls(AControl: TControl; var Rect: TRect); override;
  28.     function CanChange: Boolean; dynamic;
  29.     procedure Change; dynamic;
  30.     procedure CreateParams(var Params: TCreateParams); override;
  31.     procedure CreateWnd; override;
  32.     procedure DestroyWnd; override;
  33.     property DisplayRect: TRect;
  34.     property HotTrack: Boolean default False;
  35.     property MultiLine: Boolean default False;
  36.     property ScrollOpposite: Boolean default False;
  37.     property TabHeight: Smallint default 0;
  38.     property TabIndex: Integer default -1;
  39.     property TabPosition: TTabPosition default tpTop;
  40.     property Tabs: TStrings;
  41.     property TabWidth: Smallint default 0;
  42.     property OnChange: TNotifyEvent;
  43.     property OnChanging: TTabChangingEvent;
  44.   public
  45.     constructor Create(AOwner: TComponent); override;
  46.     destructor Destroy; override;
  47.     property TabStop default True;
  48.   end;
  49.  
  50.   TTabControl = class(TCustomTabControl)
  51.   public
  52.     property DisplayRect;
  53.   published
  54.     property Align;
  55.     property DragCursor;
  56.     property DragMode;
  57.     property Enabled;
  58.     property Font;
  59.     property HotTrack;
  60.     property MultiLine;
  61.     property ParentFont;
  62.     property ParentShowHint;
  63.     property PopupMenu;
  64.     property ScrollOpposite;
  65.     property ShowHint;
  66.     property TabHeight;
  67.     property TabIndex;
  68.     property TabOrder;
  69.     property TabPosition;
  70.     property Tabs;
  71.     property TabStop;
  72.     property TabWidth;
  73.     property Visible;
  74.     property OnChange;
  75.     property OnChanging;
  76.     property OnDragDrop;
  77.     property OnDragOver;
  78.     property OnEndDrag;
  79.     property OnEnter;
  80.     property OnExit;
  81.     property OnMouseDown;
  82.     property OnMouseMove;
  83.     property OnMouseUp;
  84.     property OnStartDrag;
  85.   end;
  86.  
  87.   TPageControl = class;
  88.  
  89.   TTabSheet = class(TWinControl)
  90.   protected
  91.     procedure CreateParams(var Params: TCreateParams); override;
  92.     procedure ReadState(Reader: TReader); override;
  93.   public
  94.     constructor Create(AOwner: TComponent); override;
  95.     destructor Destroy; override;
  96.     property PageControl: TPageControl;
  97.     property TabIndex: Integer;
  98.   published
  99.     property Caption;
  100.     property Enabled;
  101.     property Font;
  102.     property Height stored False;
  103.     property Left stored False;
  104.     property PageIndex: Integer;
  105.     property ParentFont;
  106.     property ParentShowHint;
  107.     property PopupMenu;
  108.     property ShowHint;
  109.     property TabVisible: Boolean default True;
  110.     property Top stored False;
  111.     property Visible stored False;
  112.     property Width stored False;
  113.     property OnDragDrop;
  114.     property OnDragOver;
  115.     property OnEnter;
  116.     property OnExit;
  117.     property OnMouseDown;
  118.     property OnMouseMove;
  119.     property OnMouseUp;
  120.   end;
  121.  
  122.   TPageControl = class(TCustomTabControl)
  123.   protected
  124.     procedure Change; override;
  125.     procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
  126.     procedure SetChildOrder(Child: TComponent; Order: Integer); override;
  127.     procedure ShowControl(AControl: TControl); override;
  128.   public
  129.     constructor Create(AOwner: TComponent); override;
  130.     destructor Destroy; override;
  131.     function FindNextPage(CurPage: TTabSheet;
  132.       GoForward, CheckTabVisible: Boolean): TTabSheet;
  133.     procedure SelectNextPage(GoForward: Boolean);
  134.     property PageCount: Integer;
  135.     property Pages[Index: Integer]: TTabSheet;
  136.   published
  137.     property ActivePage: TTabSheet;
  138.     property Align;
  139.     property DragCursor;
  140.     property DragMode;
  141.     property Enabled;
  142.     property Font;
  143.     property HotTrack;
  144.     property MultiLine;
  145.     property ParentFont;
  146.     property ParentShowHint;
  147.     property PopupMenu;
  148.     property ScrollOpposite;
  149.     property ShowHint;
  150.     property TabHeight;
  151.     property TabOrder;
  152.     property TabPosition;
  153.     property TabStop;
  154.     property TabWidth;
  155.     property Visible;
  156.     property OnChange;
  157.     property OnChanging;
  158.     property OnDragDrop;
  159.     property OnDragOver;
  160.     property OnEndDrag;
  161.     property OnEnter;
  162.     property OnExit;
  163.     property OnMouseDown;
  164.     property OnMouseMove;
  165.     property OnMouseUp;
  166.     property OnStartDrag;
  167.   end;
  168.  
  169.   TStatusBar = class;
  170.  
  171.   TStatusPanelStyle = (psText, psOwnerDraw);
  172.   TStatusPanelBevel = (pbNone, pbLowered, pbRaised);
  173.  
  174.   TStatusPanel = class(TCollectionItem)
  175.   public
  176.     constructor Create(Collection: TCollection); override;
  177.     procedure Assign(Source: TPersistent); override;
  178.   published
  179.     property Alignment: TAlignment default taLeftJustify;
  180.     property Bevel: TStatusPanelBevel default pbLowered;
  181.     property Style: TStatusPanelStyle default psText;
  182.     property Text: string;
  183.     property Width: Integer;
  184.   end;
  185.  
  186.   TStatusPanels = class(TCollection)
  187.   protected
  188.     function GetOwner: TPersistent; override;
  189.     procedure Update(Item: TCollectionItem); override;
  190.   public
  191.     constructor Create(StatusBar: TStatusBar);
  192.     function Add: TStatusPanel;
  193.     property Items[Index: Integer]: TStatusPanel; default;
  194.   end;
  195.  
  196.   TDrawPanelEvent = procedure(StatusBar: TStatusBar; Panel: TStatusPanel;
  197.     const Rect: TRect) of object;
  198.  
  199.   TStatusBar = class(TWinControl)
  200.   protected
  201.     procedure CreateParams(var Params: TCreateParams); override;
  202.     procedure CreateWnd; override;
  203.     procedure DrawPanel(Panel: TStatusPanel; const Rect: TRect); dynamic;
  204.     procedure Resize; dynamic;
  205.   public
  206.     constructor Create(AOwner: TComponent); override;
  207.     destructor Destroy; override;
  208.     property Canvas: TCanvas;
  209.   published
  210.     property Align default alBottom;
  211.     property DragCursor;
  212.     property DragMode;
  213.     property Enabled;
  214.     property Font;
  215.     property Panels: TStatusPanels;
  216.     property ParentFont;
  217.     property ParentShowHint;
  218.     property PopupMenu;
  219.     property ShowHint;
  220.     property SimplePanel: Boolean;
  221.     property SimpleText: string;
  222.     property SizeGrip: Boolean default True;
  223.     property Visible;
  224.     property OnClick;
  225.     property OnDblClick;
  226.     property OnDragDrop;
  227.     property OnDragOver;
  228.     property OnEndDrag;
  229.     property OnMouseDown;
  230.     property OnMouseMove;
  231.     property OnMouseUp;
  232.     property OnDrawPanel: TDrawPanelEvent;
  233.     property OnResize: TNotifyEvent;
  234.     property OnStartDrag;
  235.   end;
  236.  
  237.   THeaderControl = class;
  238.  
  239.   THeaderSectionStyle = (hsText, hsOwnerDraw);
  240.  
  241.   THeaderSection = class(TCollectionItem)
  242.   protected
  243.     function GetDisplayName: string; override;
  244.   public
  245.     constructor Create(Collection: TCollection); override;
  246.     procedure Assign(Source: TPersistent); override;
  247.     property Left: Integer;
  248.     property Right: Integer;
  249.   published
  250.     property Alignment: TAlignment default taLeftJustify;
  251.     property AllowClick: Boolean default True;
  252.     property MaxWidth: Integer default 10000;
  253.     property MinWidth: Integer default 0;
  254.     property Style: THeaderSectionStyle default hsText;
  255.     property Text: string;
  256.     property Width: Integer;
  257.   end;
  258.  
  259.   THeaderSections = class(TCollection)
  260.   protected
  261.     function GetOwner: TPersistent; override;
  262.     procedure Update(Item: TCollectionItem); override;
  263.   public
  264.     constructor Create(HeaderControl: THeaderControl);
  265.     function Add: THeaderSection;
  266.     property Items[Index: Integer]: THeaderSection; default;
  267.   end;
  268.  
  269.   TSectionTrackState = (tsTrackBegin, tsTrackMove, tsTrackEnd);
  270.  
  271.   TDrawSectionEvent = procedure(HeaderControl: THeaderControl;
  272.     Section: THeaderSection; const Rect: TRect; Pressed: Boolean) of object;
  273.   TSectionNotifyEvent = procedure(HeaderControl: THeaderControl;
  274.     Section: THeaderSection) of object;
  275.   TSectionTrackEvent = procedure(HeaderControl: THeaderControl;
  276.     Section: THeaderSection; Width: Integer;
  277.     State: TSectionTrackState) of object;
  278.  
  279.   THeaderControl = class(TWinControl)
  280.   protected
  281.     procedure CreateParams(var Params: TCreateParams); override;
  282.     procedure CreateWnd; override;
  283.     procedure DrawSection(Section: THeaderSection; const Rect: TRect;
  284.       Pressed: Boolean); dynamic;
  285.     procedure Resize; dynamic;
  286.     procedure SectionClick(Section: THeaderSection); dynamic;
  287.     procedure SectionResize(Section: THeaderSection); dynamic;
  288.     procedure SectionTrack(Section: THeaderSection; Width: Integer;
  289.       State: TSectionTrackState); dynamic;
  290.   public
  291.     constructor Create(AOwner: TComponent); override;
  292.     destructor Destroy; override;
  293.     property Canvas: TCanvas;
  294.   published
  295.     property Align default alTop;
  296.     property DragCursor;
  297.     property DragMode;
  298.     property Enabled;
  299.     property Font;
  300.     property HotTrack: Boolean default False;
  301.     property Sections: THeaderSections;
  302.     property ShowHint;
  303.     property ParentFont;
  304.     property ParentShowHint;
  305.     property PopupMenu;
  306.     property Visible;
  307.     property OnDragDrop;
  308.     property OnDragOver;
  309.     property OnEndDrag;
  310.     property OnMouseDown;
  311.     property OnMouseMove;
  312.     property OnMouseUp;
  313.     property OnDrawSection: TDrawSectionEvent;
  314.     property OnResize: TNotifyEvent;
  315.     property OnSectionClick: TSectionNotifyEvent;
  316.     property OnSectionResize: TSectionNotifyEvent;
  317.     property OnSectionTrack: TSectionTrackEvent;
  318.     property OnStartDrag;
  319.   end;
  320.  
  321. { TTreeNode }
  322.  
  323.   TCustomTreeView = class;
  324.   TTreeNodes = class;
  325.  
  326.   TNodeState = (nsCut, nsDropHilited, nsFocused, nsSelected, nsExpanded);
  327.   TNodeAttachMode = (naAdd, naAddFirst, naAddChild, naAddChildFirst, naInsert);
  328.   TAddMode = (taAddFirst, taAdd, taInsert);
  329.  
  330.   PNodeInfo = ^TNodeInfo;
  331.   TNodeInfo = packed record
  332.     ImageIndex: Integer;
  333.     SelectedIndex: Integer;
  334.     StateIndex: Integer;
  335.     OverlayIndex: Integer;
  336.     Data: Pointer;
  337.     Count: Integer;
  338.     Text: string[255];
  339.   end;
  340.  
  341.   TTreeNode = class(TPersistent)
  342.   public
  343.     constructor Create(AOwner: TTreeNodes);
  344.     destructor Destroy; override;
  345.     function AlphaSort: Boolean;
  346.     procedure Assign(Source: TPersistent); override;
  347.     procedure Collapse(Recurse: Boolean);
  348.     function CustomSort(SortProc: TTVCompare; Data: Longint): Boolean;
  349.     procedure Delete;
  350.     procedure DeleteChildren;
  351.     function DisplayRect(TextOnly: Boolean): TRect;
  352.     function EditText: Boolean;
  353.     procedure EndEdit(Cancel: Boolean);
  354.     procedure Expand(Recurse: Boolean);
  355.     function GetFirstChild: TTreeNode;
  356.     function GetHandle: HWND;
  357.     function GetLastChild: TTreeNode;
  358.     function GetNext: TTreeNode;
  359.     function GetNextChild(Value: TTreeNode): TTreeNode;
  360.     function GetNextSibling: TTreeNode;
  361.     function GetNextVisible: TTreeNode;
  362.     function GetPrev: TTreeNode;
  363.     function GetPrevChild(Value: TTreeNode): TTreeNode;
  364.     function GetPrevSibling: TTreeNode;
  365.     function GetPrevVisible: TTreeNode;
  366.     function HasAsParent(Value: TTreeNode): Boolean;
  367.     function IndexOf(Value: TTreeNode): Integer;
  368.     procedure MakeVisible;
  369.     procedure MoveTo(Destination: TTreeNode; Mode: TNodeAttachMode); virtual;
  370.     property AbsoluteIndex: Integer;
  371.     property Count: Integer;
  372.     property Cut: Boolean;
  373.     property Data: Pointer;
  374.     property Deleting: Boolean;
  375.     property Focused: Boolean;
  376.     property DropTarget: Boolean;
  377.     property Selected: Boolean;
  378.     property Expanded: Boolean;
  379.     property Handle: HWND;
  380.     property HasChildren: Boolean;
  381.     property ImageIndex: Integer;
  382.     property Index: Integer;
  383.     property IsVisible: Boolean;
  384.     property Item[Index: Integer]: TTreeNode; default;
  385.     property ItemId: HTreeItem;
  386.     property Level: Integer;
  387.     property OverlayIndex: Integer;
  388.     property Owner: TTreeNodes;
  389.     property Parent: TTreeNode;
  390.     property SelectedIndex: Integer;
  391.     property StateIndex: Integer;
  392.     property Text: string;
  393.     property TreeView: TCustomTreeView;
  394.   end;
  395.  
  396. { TTreeNodes }
  397.  
  398.   TTreeNodes = class(TPersistent)
  399.   protected
  400.     function AddItem(Parent, Target: HTreeItem; const Item: TTVItem;
  401.       AddMode: TAddMode): HTreeItem;
  402.     function InternalAddObject(Node: TTreeNode; const S: string;
  403.       Ptr: Pointer; AddMode: TAddMode): TTreeNode;
  404.     procedure DefineProperties(Filer: TFiler); override;
  405.     function CreateItem(Node: TTreeNode): TTVItem;
  406.     function GetCount: Integer;
  407.     procedure SetItem(Index: Integer; Value: TTreeNode);
  408.     procedure SetUpdateState(Updating: Boolean);
  409.   public
  410.     constructor Create(AOwner: TCustomTreeView);
  411.     destructor Destroy; override;
  412.     function AddChildFirst(Node: TTreeNode; const S: string): TTreeNode;
  413.     function AddChild(Node: TTreeNode; const S: string): TTreeNode;
  414.     function AddChildObjectFirst(Node: TTreeNode; const S: string;
  415.       Ptr: Pointer): TTreeNode;
  416.     function AddChildObject(Node: TTreeNode; const S: string;
  417.       Ptr: Pointer): TTreeNode;
  418.     function AddFirst(Node: TTreeNode; const S: string): TTreeNode;
  419.     function Add(Node: TTreeNode; const S: string): TTreeNode;
  420.     function AddObjectFirst(Node: TTreeNode; const S: string;
  421.       Ptr: Pointer): TTreeNode;
  422.     function AddObject(Node: TTreeNode; const S: string;
  423.       Ptr: Pointer): TTreeNode;
  424.     procedure Assign(Source: TPersistent); override;
  425.     procedure BeginUpdate;
  426.     procedure Clear;
  427.     procedure Delete(Node: TTreeNode);
  428.     procedure EndUpdate;
  429.     function GetFirstNode: TTreeNode;
  430.     function GetNode(ItemId: HTreeItem): TTreeNode;
  431.     function Insert(Node: TTreeNode; const S: string): TTreeNode;
  432.     function InsertObject(Node: TTreeNode; const S: string;
  433.       Ptr: Pointer): TTreeNode;
  434.     property Count: Integer;
  435.     property Handle: HWND;
  436.     property Item[Index: Integer]: TTreeNode; default;
  437.     property Owner: TCustomTreeView;
  438.   end;
  439.  
  440. { TCustomTreeView }
  441.  
  442.   THitTest = (htAbove, htBelow, htNowhere, htOnItem, htOnButton,
  443.     htOnIcon, htOnIndent, htOnLabel, htOnRight,
  444.     htOnStateIcon, htToLeft, htToRight);
  445.   THitTests = set of THitTest;
  446.   ETreeViewError = class(Exception);
  447.  
  448.   TTVChangingEvent = procedure(Sender: TObject; Node: TTreeNode;
  449.     var AllowChange: Boolean) of object;
  450.   TTVChangedEvent = procedure(Sender: TObject; Node: TTreeNode) of object;
  451.   TTVEditingEvent = procedure(Sender: TObject; Node: TTreeNode;
  452.     var AllowEdit: Boolean) of object;
  453.   TTVEditedEvent = procedure(Sender: TObject; Node: TTreeNode; var S: string) of object;
  454.   TTVExpandingEvent = procedure(Sender: TObject; Node: TTreeNode;
  455.     var AllowExpansion: Boolean) of object;
  456.   TTVCollapsingEvent = procedure(Sender: TObject; Node: TTreeNode;
  457.     var AllowCollapse: Boolean) of object;
  458.   TTVExpandedEvent = procedure(Sender: TObject; Node: TTreeNode) of object;
  459.   TTVCompareEvent = procedure(Sender: TObject; Node1, Node2: TTreeNode;
  460.     Data: Integer; var Compare: Integer) of object;
  461.  
  462.   TSortType = (stNone, stData, stText, stBoth);
  463.  
  464.   TCustomTreeView = class(TWinControl)
  465.   protected
  466.     function CanEdit(Node: TTreeNode): Boolean; dynamic;
  467.     function CanChange(Node: TTreeNode): Boolean; dynamic;
  468.     function CanCollapse(Node: TTreeNode): Boolean; dynamic;
  469.     function CanExpand(Node: TTreeNode): Boolean; dynamic;
  470.     procedure Change(Node: TTreeNode); dynamic;
  471.     procedure Collapse(Node: TTreeNode); dynamic;
  472.     function CreateNode: TTreeNode; virtual;
  473.     procedure CreateParams(var Params: TCreateParams); override;
  474.     procedure CreateWnd; override;
  475.     procedure DestroyWnd; override;
  476.     procedure DoEndDrag(Target: TObject; X, Y: Integer); override;
  477.     procedure DoStartDrag(var DragObject: TDragObject); override;
  478.     procedure Edit(const Item: TTVItem); dynamic;
  479.     procedure Expand(Node: TTreeNode); dynamic;
  480.     function GetDragImages: TCustomImageList; override;
  481.     procedure Loaded; override;
  482.     procedure Notification(AComponent: TComponent;
  483.       Operation: TOperation); override;
  484.     procedure SetDragMode(Value: TDragMode); override;
  485.     procedure WndProc(var Message: TMessage); override;
  486.     property OnEditing: TTVEditingEvent;
  487.     property OnEdited: TTVEditedEvent;
  488.     property OnExpanding: TTVExpandingEvent;
  489.     property OnExpanded: TTVExpandedEvent;
  490.     property OnCollapsing: TTVCollapsingEvent;
  491.     property OnCollapsed: TTVExpandedEvent;
  492.     property OnChanging: TTVChangingEvent;
  493.     property OnChange: TTVChangedEvent;
  494.     property OnCompare: TTVCompareEvent;
  495.     property OnDeletion: TTVExpandedEvent;
  496.     property OnGetImageIndex: TTVExpandedEvent;
  497.     property OnGetSelectedIndex: TTVExpandedEvent;
  498.     property ShowButtons: Boolean default True;
  499.     property BorderStyle: TBorderStyle default bsSingle;
  500.     property ShowLines: Boolean default True;
  501.     property ShowRoot: Boolean default True;
  502.     property ReadOnly: Boolean default False;
  503.     property RightClickSelect: Boolean default False;
  504.     property Indent: Integer;
  505.     property Items: TTreeNodes;
  506.     property SortType: TSortType default stNone;
  507.     property HideSelection: Boolean default True;
  508.     property Images: TImageList;
  509.     property StateImages: TImageList;
  510.   public
  511.     constructor Create(AOwner: TComponent); override;
  512.     destructor Destroy; override;
  513.     function AlphaSort: Boolean;
  514.     function CustomSort(SortProc: TTVCompare; Data: Longint): Boolean;
  515.     procedure FullCollapse;
  516.     procedure FullExpand;
  517.     function GetHitTestInfoAt(X, Y: Integer): THitTests;
  518.     function GetNodeAt(X, Y: Integer): TTreeNode;
  519.     function IsEditing: Boolean;
  520.     procedure LoadFromFile(const FileName: string);
  521.     procedure LoadFromStream(Stream: TStream);
  522.     procedure SaveToFile(const FileName: string);
  523.     procedure SaveToStream(Stream: TStream);
  524.     property DropTarget: TTreeNode;
  525.     property Selected: TTreeNode;
  526.     property TopItem: TTreeNode;
  527.   end;
  528.  
  529.   TTreeView = class(TCustomTreeView)
  530.   published
  531.     property ShowButtons;
  532.     property BorderStyle;
  533.     property DragCursor;
  534.     property ShowLines;
  535.     property ShowRoot;
  536.     property ReadOnly;
  537.     property RightClickSelect;
  538.     property DragMode;
  539.     property HideSelection;
  540.     property Indent;
  541.     property Items;
  542.     property OnEditing;
  543.     property OnEdited;
  544.     property OnExpanding;
  545.     property OnExpanded;
  546.     property OnCollapsing;
  547.     property OnCompare;
  548.     property OnCollapsed;
  549.     property OnChanging;
  550.     property OnChange;
  551.     property OnDeletion;
  552.     property OnGetImageIndex;
  553.     property OnGetSelectedIndex;
  554.     property Align;
  555.     property Enabled;
  556.     property Font;
  557.     property Color;
  558.     property ParentColor default False;
  559.     property ParentCtl3D;
  560.     property Ctl3D;
  561.     property SortType;
  562.     property TabOrder;
  563.     property TabStop default True;
  564.     property Visible;
  565.     property OnClick;
  566.     property OnEnter;
  567.     property OnExit;
  568.     property OnDragDrop;
  569.     property OnDragOver;
  570.     property OnStartDrag;
  571.     property OnEndDrag;
  572.     property OnMouseDown;
  573.     property OnMouseMove;
  574.     property OnMouseUp;
  575.     property OnDblClick;
  576.     property OnKeyDown;
  577.     property OnKeyPress;
  578.     property OnKeyUp;
  579.     property PopupMenu;
  580.     property ParentFont;
  581.     property ParentShowHint;
  582.     property ShowHint;
  583.     property Images;
  584.     property StateImages;
  585.   end;
  586.  
  587. { TTrackBar }
  588.  
  589.   TTrackBarOrientation = (trHorizontal, trVertical);
  590.   TTickMark = (tmBottomRight, tmTopLeft, tmBoth);
  591.   TTickStyle = (tsNone, tsAuto, tsManual);
  592.  
  593.   TTrackBar = class(TWinControl)
  594.   protected
  595.     procedure CreateParams(var Params: TCreateParams); override;
  596.     procedure CreateWnd; override;
  597.     procedure DestroyWnd; override;
  598.   public
  599.     constructor Create(AOwner: TComponent); override;
  600.     procedure SetTick(Value: Integer);
  601.   published
  602.     property Ctl3D;
  603.     property DragCursor;
  604.     property DragMode;
  605.     property Enabled;
  606.     property LineSize: Integer default 1;
  607.     property Max: Integer default 10;
  608.     property Min: Integer default 0;
  609.     property Orientation: TTrackBarOrientation;
  610.     property ParentCtl3D;
  611.     property ParentShowHint;
  612.     property PageSize: Integer default 2;
  613.     property PopupMenu;
  614.     property Frequency: Integer;
  615.     property Position: Integer;
  616.     property SelEnd: Integer;
  617.     property SelStart: Integer;
  618.     property ShowHint;
  619.     property TabOrder;
  620.     property TabStop default True;
  621.     property TickMarks: TTickMark;
  622.     property TickStyle: TTickStyle;
  623.     property Visible;
  624.     property OnChange: TNotifyEvent;
  625.     property OnDragDrop;
  626.     property OnDragOver;
  627.     property OnEndDrag;
  628.     property OnEnter;
  629.     property OnExit;
  630.     property OnKeyDown;
  631.     property OnKeyPress;
  632.     property OnKeyUp;
  633.     property OnStartDrag;
  634.   end;
  635.  
  636. { TProgressBar }
  637.  
  638.   TProgressRange = Integer; // for backward compatibility
  639.  
  640.   TProgressBar = class(TWinControl)
  641.   protected
  642.     procedure CreateParams(var Params: TCreateParams); override;
  643.     procedure CreateWnd; override;
  644.   public
  645.     constructor Create(AOwner: TComponent); override;
  646.     procedure StepIt;
  647.     procedure StepBy(Delta: Integer);
  648.   published
  649.     property Align;
  650.     property DragCursor;
  651.     property DragMode;
  652.     property Enabled;
  653.     property Hint;
  654.     property Min: Integer;
  655.     property Max: Integer;
  656.     property ParentShowHint;
  657.     property PopupMenu;
  658.     property Position: Integer default 0;
  659.     property Step: Integer default 10;
  660.     property ShowHint;
  661.     property TabOrder;
  662.     property TabStop;
  663.     property Visible;
  664.     property OnDragDrop;
  665.     property OnDragOver;
  666.     property OnEndDrag;
  667.     property OnEnter;
  668.     property OnExit;
  669.     property OnMouseDown;
  670.     property OnMouseMove;
  671.     property OnMouseUp;
  672.     property OnStartDrag;
  673.   end;
  674.  
  675. { TTextAttributes }
  676.  
  677.   TCustomRichEdit = class;
  678.  
  679.   TAttributeType = (atSelected, atDefaultText);
  680.   TConsistentAttribute = (caBold, caColor, caFace, caItalic,
  681.     caSize, caStrikeOut, caUnderline, caProtected);
  682.   TConsistentAttributes = set of TConsistentAttribute;
  683.  
  684.   TTextAttributes = class(TPersistent)
  685.   protected
  686.     procedure InitFormat(var Format: TCharFormat);
  687.     procedure AssignTo(Dest: TPersistent); override;
  688.   public
  689.     constructor Create(AOwner: TCustomRichEdit; AttributeType: TAttributeType);
  690.     procedure Assign(Source: TPersistent); override;
  691.     property Charset: TFontCharset;
  692.     property Color: TColor;
  693.     property ConsistentAttributes: TConsistentAttributes;
  694.     property Name: TFontName;
  695.     property Pitch: TFontPitch;
  696.     property Protected: Boolean;
  697.     property Size: Integer;
  698.     property Style: TFontStyles;
  699.     property Height: Integer;
  700.   end;
  701.  
  702. { TParaAttributes }
  703.  
  704.   TNumberingStyle = (nsNone, nsBullet);
  705.  
  706.   TParaAttributes = class(TPersistent)
  707.   public
  708.     constructor Create(AOwner: TCustomRichEdit);
  709.     procedure Assign(Source: TPersistent); override;
  710.     property Alignment: TAlignment;
  711.     property FirstIndent: Longint;
  712.     property LeftIndent: Longint;
  713.     property Numbering: TNumberingStyle;
  714.     property RightIndent: Longint;
  715.     property Tab[Index: Byte]: Longint;
  716.     property TabCount: Integer;
  717.   end;
  718.  
  719. { TCustomRichEdit }
  720.  
  721.   TRichEditResizeEvent = procedure(Sender: TObject; Rect: TRect) of object;
  722.   TRichEditProtectChange = procedure(Sender: TObject;
  723.     StartPos, EndPos: Integer; var AllowChange: Boolean) of object;
  724.   TRichEditSaveClipboard = procedure(Sender: TObject;
  725.     NumObjects, NumChars: Integer; var SaveClipboard: Boolean) of object;
  726.   TSearchType = (stWholeWord, stMatchCase);
  727.   TSearchTypes = set of TSearchType;
  728.  
  729.   TConversion = class(TObject)
  730.   public
  731.     function ConvertReadStream(Stream: TStream; Buffer: PChar; BufSize: Integer): Integer; virtual;
  732.     function ConvertWriteStream(Stream: TStream; Buffer: PChar; BufSize: Integer): Integer; virtual;
  733.   end;
  734.  
  735.   TConversionClass = class of TConversion;
  736.  
  737.   PConversionFormat = ^TConversionFormat;
  738.   TConversionFormat = record
  739.     ConversionClass: TConversionClass;
  740.     Extension: string;
  741.     Next: PConversionFormat;
  742.   end;
  743.  
  744.   PRichEditStreamInfo = ^TRichEditStreamInfo;
  745.   TRichEditStreamInfo = record
  746.     Converter: TConversion;
  747.     Stream: TStream;
  748.   end;
  749.  
  750.   TCustomRichEdit = class(TCustomMemo)
  751.   protected
  752.     procedure CreateParams(var Params: TCreateParams); override;
  753.     procedure CreateWnd; override;
  754.     procedure DestroyWnd; override;
  755.     procedure RequestSize(const Rect: TRect); virtual;
  756.     procedure SelectionChange; dynamic;
  757.     procedure DoSetMaxLength(Value: Integer); override;
  758.     function GetSelLength: Integer; override;
  759.     function GetSelStart: Integer; override;
  760.     function GetSelText: string; override;
  761.     procedure SetSelLength(Value: Integer); override;
  762.     procedure SetSelStart(Value: Integer); override;
  763.     property HideSelection: Boolean default True;
  764.     property HideScrollBars: Boolean default True;
  765.     property Lines: TStrings;
  766.     property OnSaveClipboard: TRichEditSaveClipboard;
  767.     property OnSelectionChange: TNotifyEvent;
  768.     property OnProtectChange: TRichEditProtectChange;
  769.     property OnResizeRequest: TRichEditResizeEvent;
  770.     property PlainText: Boolean default False;
  771.   public
  772.     constructor Create(AOwner: TComponent); override;
  773.     destructor Destroy; override;
  774.     procedure Clear; override;
  775.     function FindText(const SearchStr: string;
  776.       StartPos, Length: Integer; Options: TSearchTypes): Integer;
  777.     function GetSelTextBuf(Buffer: PChar; BufSize: Integer): Integer; override;
  778.     procedure Print(const Caption: string);
  779.     class procedure RegisterConversionFormat(const AExtension: string;
  780.       AConversionClass: TConversionClass);
  781.     property DefaultConverter: TConversionClass;
  782.     property DefAttributes: TTextAttributes;
  783.     property SelAttributes: TTextAttributes;
  784.     property PageRect: TRect;
  785.     property Paragraph: TParaAttributes;
  786.   end;
  787.  
  788.   TRichEdit = class(TCustomRichEdit)
  789.   published
  790.     property Align;
  791.     property Alignment;
  792.     property BorderStyle;
  793.     property Color;
  794.     property Ctl3D;
  795.     property DragCursor;
  796.     property DragMode;
  797.     property Enabled;
  798.     property Font;
  799.     property HideSelection;
  800.     property HideScrollBars;
  801.     property ImeMode;
  802.     property ImeName;
  803.     property Lines;
  804.     property MaxLength;
  805.     property ParentColor;
  806.     property ParentCtl3D;
  807.     property ParentFont;
  808.     property ParentShowHint;
  809.     property PlainText;
  810.     property PopupMenu;
  811.     property ReadOnly;
  812.     property ScrollBars;
  813.     property ShowHint;
  814.     property TabOrder;
  815.     property TabStop default True;
  816.     property Visible;
  817.     property WantTabs;
  818.     property WantReturns;
  819.     property WordWrap;
  820.     property OnChange;
  821.     property OnDragDrop;
  822.     property OnDragOver;
  823.     property OnEndDrag;
  824.     property OnEnter;
  825.     property OnExit;
  826.     property OnKeyDown;
  827.     property OnKeyPress;
  828.     property OnKeyUp;
  829.     property OnMouseDown;
  830.     property OnMouseMove;
  831.     property OnMouseUp;
  832.     property OnResizeRequest;
  833.     property OnSelectionChange;
  834.     property OnStartDrag;
  835.     property OnProtectChange;
  836.     property OnSaveClipboard;
  837.   end;
  838.  
  839. { TUpDown }
  840.  
  841.   TUDAlignButton = (udLeft, udRight);
  842.   TUDOrientation = (udHorizontal, udVertical);
  843.   TUDBtnType = (btNext, btPrev);
  844.   TUDClickEvent = procedure (Sender: TObject; Button: TUDBtnType) of object;
  845.   TUDChangingEvent = procedure (Sender: TObject; var AllowChange: Boolean) of object;
  846.  
  847.   TCustomUpDown = class(TWinControl)
  848.   protected
  849.     function CanChange: Boolean;
  850.     procedure CreateParams(var Params: TCreateParams); override;
  851.     procedure CreateWnd; override;
  852.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  853.     procedure Click(Button: TUDBtnType); dynamic;
  854.     property AlignButton: TUDAlignButton default udRight;
  855.     property ArrowKeys: Boolean default True;
  856.     property Associate: TWinControl;
  857.     property Min: SmallInt;
  858.     property Max: SmallInt default 100;
  859.     property Increment: Integer default 1;
  860.     property Orientation: TUDOrientation default udVertical;
  861.     property Position: SmallInt;
  862.     property Thousands: Boolean default True;
  863.     property Wrap: Boolean;
  864.     property OnChanging: TUDChangingEvent;
  865.     property OnClick: TUDClickEvent;
  866.   public
  867.     constructor Create(AOwner: TComponent); override;
  868.   end;
  869.  
  870.   TUpDown = class(TCustomUpDown)
  871.   published
  872.     property AlignButton;
  873.     property Associate;
  874.     property ArrowKeys;
  875.     property Enabled;
  876.     property Hint;
  877.     property Min;
  878.     property Max;
  879.     property Increment;
  880.     property Orientation;
  881.     property ParentShowHint;
  882.     property PopupMenu;
  883.     property Position;
  884.     property ShowHint;
  885.     property TabOrder;
  886.     property TabStop;
  887.     property Thousands;
  888.     property Visible;
  889.     property Wrap;
  890.     property OnChanging;
  891.     property OnClick;
  892.     property OnEnter;
  893.     property OnExit;
  894.     property OnMouseDown;
  895.     property OnMouseMove;
  896.     property OnMouseUp;
  897.   end;
  898.  
  899. { THotKey }
  900.  
  901.   THKModifier = (hkShift, hkCtrl, hkAlt, hkExt);
  902.   THKModifiers = set of THKModifier;
  903.   THKInvalidKey = (hcNone, hcShift, hcCtrl, hcAlt, hcShiftCtrl,
  904.     hcShiftAlt, hcCtrlAlt, hcShiftCtrlAlt);
  905.   THKInvalidKeys = set of THKInvalidKey;
  906.  
  907.   TCustomHotKey = class(TWinControl)
  908.   protected
  909.     procedure CreateParams(var Params: TCreateParams); override;
  910.     procedure CreateWnd; override;
  911.     property AutoSize: Boolean default True;
  912.     property InvalidKeys: THKInvalidKeys;
  913.     property Modifiers: THKModifiers;
  914.     property HotKey: TShortCut;
  915.     property TabStop default True;
  916.   public
  917.     constructor Create(AOwner: TComponent); override;
  918.   end;
  919.  
  920.   THotKey = class(TCustomHotKey)
  921.   published
  922.     property AutoSize;
  923.     property Enabled;
  924.     property Hint;
  925.     property HotKey;
  926.     property InvalidKeys;
  927.     property Modifiers;
  928.     property ParentShowHint;
  929.     property PopupMenu;
  930.     property ShowHint;
  931.     property TabOrder;
  932.     property TabStop;
  933.     property Visible;
  934.     property OnEnter;
  935.     property OnExit;
  936.     property OnMouseDown;
  937.     property OnMouseMove;
  938.     property OnMouseUp;
  939.   end;
  940.  
  941. const
  942.   ColumnHeaderWidth = LVSCW_AUTOSIZE_USEHEADER;
  943.   ColumnTextWidth = LVSCW_AUTOSIZE;
  944.  
  945. type
  946.   TListColumns = class;
  947.   TListItems = class;
  948.   TCustomListView = class;
  949.   TWidth = ColumnHeaderWidth..MaxInt;
  950.  
  951.   TListColumn = class(TCollectionItem)
  952.   protected
  953.     procedure DefineProperties(Filer: TFiler); override;
  954.     function GetDisplayName: string; override;
  955.   public
  956.     constructor Create(Collection: TCollection); override;
  957.     destructor Destroy; override;
  958.     procedure Assign(Source: TPersistent); override;
  959.     property WidthType: TWidth;
  960.   published
  961.     property Alignment: TAlignment default taLeftJustify;
  962.     property Caption: string;
  963.     property Width: TWidth default 50;
  964.   end;
  965.  
  966.   TListColumns = class(TCollection)
  967.   protected
  968.     function GetOwner: TPersistent; override;
  969.     procedure Update(Item: TCollectionItem); override;
  970.   public
  971.     constructor Create(AOwner: TCustomListView);
  972.     function Add: TListColumn;
  973.     property Owner: TCustomListView;
  974.     property Items[Index: Integer]: TListColumn; default;
  975.   end;
  976.  
  977.   TDisplayCode = (drBounds, drIcon, drLabel, drSelectBounds);
  978.  
  979.   { TListItem }
  980.  
  981.   TListItem = class(TPersistent)
  982.   protected
  983.     procedure Assign(Source: TPersistent); override;
  984.   public
  985.     constructor Create(AOwner: TListItems);
  986.     destructor Destroy; override;
  987.     procedure CancelEdit;
  988.     procedure Delete;
  989.     function DisplayRect(Code: TDisplayCode): TRect;
  990.     function EditCaption: Boolean;
  991.     function GetPosition: TPoint;
  992.     procedure MakeVisible(PartialOK: Boolean);
  993.     procedure Update;
  994.     procedure SetPosition(const Value: TPoint);
  995.     property Caption: string;
  996.     property Checked: Boolean;
  997.     property Cut: Boolean index 0;
  998.     property Data: Pointer;
  999.     property DropTarget: Boolean index 1;
  1000.     property Focused: Boolean index 2;
  1001.     property Handle: HWND;
  1002.     property ImageIndex: Integer index 0;
  1003.     property Index: Integer;
  1004.     property Left: Integer;
  1005.     property ListView: TCustomListView;
  1006.     property Owner: TListItems;
  1007.     property OverlayIndex: Integer index 1;
  1008.     property Selected: Boolean index 3;
  1009.     property StateIndex: Integer index 2;
  1010.     property SubItems: TStrings;
  1011.     property Top: Integer;
  1012.   end;
  1013.  
  1014. { TListItems }
  1015.  
  1016.   TListItems = class(TPersistent)
  1017.   protected
  1018.     procedure DefineProperties(Filer: TFiler); override;
  1019.     function CreateItem(Index: Integer; ListItem: TListItem): TLVItem;
  1020.     function GetCount: Integer;
  1021.     function GetHandle: HWND;
  1022.     function GetItem(Index: Integer): TListItem;
  1023.     procedure SetItem(Index: Integer; Value: TListItem);
  1024.     procedure SetUpdateState(Updating: Boolean);
  1025.   public
  1026.     constructor Create(AOwner: TCustomListView);
  1027.     destructor Destroy; override;
  1028.     function Add: TListItem;
  1029.     procedure Assign(Source: TPersistent); override;
  1030.     procedure BeginUpdate;
  1031.     procedure Clear;
  1032.     procedure Delete(Index: Integer);
  1033.     procedure EndUpdate;
  1034.     function IndexOf(Value: TListItem): Integer;
  1035.     function Insert(Index: Integer): TListItem;
  1036.     property Count: Integer;
  1037.     property Handle: HWND;
  1038.     property Item[Index: Integer]: TListItem; default;
  1039.     property Owner: TCustomListView;
  1040.   end;
  1041.  
  1042. { TIconOptions }
  1043.  
  1044.   TIconArrangement = (iaTop, iaLeft);
  1045.  
  1046.   TIconOptions = class(TPersistent)
  1047.   public
  1048.     constructor Create(AOwner: TCustomListView);
  1049.   published
  1050.     property Arrangement: TIconArrangement default iaTop;
  1051.     property AutoArrange: Boolean default False;
  1052.     property WrapText: Boolean default True;
  1053.   end;
  1054.  
  1055.   TListArrangement = (arAlignBottom, arAlignLeft, arAlignRight,
  1056.     arAlignTop, arDefault, arSnapToGrid);
  1057.   TViewStyle = (vsIcon, vsSmallIcon, vsList, vsReport);
  1058.   TItemState = (isNone, isCut, isDropHilited, isFocused, isSelected);
  1059.   TItemStates = set of TItemState;
  1060.   TItemChange = (ctText, ctImage, ctState);
  1061.   TLVDeletedEvent = procedure(Sender: TObject; Item: TListItem) of object;
  1062.   TLVEditingEvent = procedure(Sender: TObject; Item: TListItem;
  1063.     var AllowEdit: Boolean) of object;
  1064.   TLVEditedEvent = procedure(Sender: TObject; Item: TListItem; var S: string) of object;
  1065.   TLVChangeEvent = procedure(Sender: TObject; Item: TListItem;
  1066.     Change: TItemChange) of object;
  1067.   TLVChangingEvent = procedure(Sender: TObject; Item: TListItem;
  1068.     Change: TItemChange; var AllowChange: Boolean) of object;
  1069.   TLVColumnClickEvent = procedure(Sender: TObject; Column: TListColumn) of object;
  1070.   TLVCompareEvent = procedure(Sender: TObject; Item1, Item2: TListItem;
  1071.     Data: Integer; var Compare: Integer) of object;
  1072.   TSearchDirection = (sdLeft, sdRight, sdAbove, sdBelow, sdAll);
  1073.  
  1074. { TCustomListView }
  1075.  
  1076.   TCustomListView = class(TWinControl)
  1077.   protected
  1078.     function CanChange(Item: TListItem; Change: Integer): Boolean; dynamic;
  1079.     function CanEdit(Item: TListItem): Boolean; dynamic;
  1080.     procedure Change(Item: TListItem; Change: Integer); dynamic;
  1081.     procedure ColClick(Column: TListColumn); dynamic;
  1082.     function ColumnsShowing: Boolean;
  1083.     function CreateListItem: TListItem; virtual;
  1084.     procedure CreateParams(var Params: TCreateParams); override;
  1085.     procedure CreateWnd; override;
  1086.     procedure Delete(Item: TListItem); dynamic;
  1087.     procedure DestroyWnd; override;
  1088.     procedure DoEndDrag(Target: TObject; X, Y: Integer); override;
  1089.     procedure DoStartDrag(var DragObject: TDragObject); override;
  1090.     procedure Edit(const Item: TLVItem); dynamic;
  1091.     function GetDragImages: TCustomImageList; override;
  1092.     function GetItemIndex(Value: TListItem): Integer;
  1093.     procedure InsertItem(Item: TListItem); dynamic;
  1094.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  1095.     procedure UpdateColumn(Index: Integer);
  1096.     procedure UpdateColumns;
  1097.     procedure WndProc(var Message: TMessage); override;
  1098.     property BorderStyle: TBorderStyle default bsSingle;
  1099.     property Columns: TListColumns;
  1100.     property ColumnClick: Boolean default True;
  1101.     property ReadOnly: Boolean;
  1102.     property HideSelection: Boolean default True;
  1103.     property IconOptions: TIconOptions;
  1104.     property Items: TListItems;
  1105.     property AllocBy: Integer default 0;
  1106.     property LargeImages: TImageList;
  1107.     property MultiSelect: Boolean default False;
  1108.     property OnChange: TLVChangeEvent;
  1109.     property OnChanging: TLVChangingEvent;
  1110.     property OnColumnClick: TLVColumnClickEvent;
  1111.     property OnCompare: TLVCompareEvent;
  1112.     property OnDeletion: TLVDeletedEvent;
  1113.     property OnEdited: TLVEditedEvent;
  1114.     property OnEditing: TLVEditingEvent;
  1115.     property OnInsert: TLVDeletedEvent;
  1116.     property ShowColumnHeaders: Boolean default True;
  1117.     property SmallImages: TImageList;
  1118.     property SortType: TSortType default stNone;
  1119.     property StateImages: TImageList;
  1120.     property ViewStyle: TViewStyle default vsIcon;
  1121.   public
  1122.     constructor Create(AOwner: TComponent); override;
  1123.     destructor Destroy; override;
  1124.     function AlphaSort: Boolean;
  1125.     procedure Arrange(Code: TListArrangement);
  1126.     function FindCaption(StartIndex: Integer; Value: string;
  1127.       Partial, Inclusive, Wrap: Boolean): TListItem;
  1128.     function FindData(StartIndex: Integer; Value: Pointer;
  1129.       Inclusive, Wrap: Boolean): TListItem;
  1130.     function GetItemAt(X, Y: Integer): TListItem;
  1131.     function GetNearestItem(Point: TPoint;
  1132.       Direction: TSearchDirection): TListItem;
  1133.     function GetNextItem(StartItem: TListItem;
  1134.       Direction: TSearchDirection; States: TItemStates): TListItem;
  1135.     function GetSearchString: string;
  1136.     function IsEditing: Boolean;
  1137.     procedure Scroll(DX, DY: Integer);
  1138.     property Checkboxes: Boolean default False;
  1139.     property Column[Index: Integer]: TListColumn;
  1140.     property DropTarget: TListItem;
  1141.     property GridLines: Boolean default False;
  1142.     property HotTrack: Boolean default False;
  1143.     property ItemFocused: TListItem;
  1144.     property RowSelect: Boolean default False;
  1145.     property SelCount: Integer;
  1146.     property Selected: TListItem;
  1147.     function CustomSort(SortProc: TLVCompare; lParam: Longint): Boolean;
  1148.     function StringWidth(S: string): Integer;
  1149.     procedure UpdateItems(FirstIndex, LastIndex: Integer);
  1150.     property TopItem: TListItem;
  1151.     property ViewOrigin: TPoint;
  1152.     property VisibleRowCount: Integer;
  1153.     property BoundingRect: TRect;
  1154.   end;
  1155.  
  1156. { TListView }
  1157.  
  1158.   TListView = class(TCustomListView)
  1159.   published
  1160.     property Align;
  1161.     property BorderStyle;
  1162.     property Color;
  1163.     property ColumnClick;
  1164.     property OnClick;
  1165.     property OnDblClick;
  1166.     property Columns;
  1167.     property Ctl3D;
  1168.     property DragMode;
  1169.     property ReadOnly default False;
  1170.     property Enabled;
  1171.     property Font;
  1172.     property GridLines;
  1173.     property HideSelection;
  1174.     property HotTrack;
  1175.     property IconOptions;
  1176.     property Items;
  1177.     property Checkboxes;
  1178.     property AllocBy;
  1179.     property MultiSelect;
  1180.     property RowSelect;
  1181.     property OnChange;
  1182.     property OnChanging;
  1183.     property OnColumnClick;
  1184.     property OnCompare;
  1185.     property OnDeletion;
  1186.     property OnEdited;
  1187.     property OnEditing;
  1188.     property OnEnter;
  1189.     property OnExit;
  1190.     property OnInsert;
  1191.     property OnDragDrop;
  1192.     property OnDragOver;
  1193.     property DragCursor;
  1194.     property OnStartDrag;
  1195.     property OnEndDrag;
  1196.     property OnMouseDown;
  1197.     property OnMouseMove;
  1198.     property OnMouseUp;
  1199.     property ParentColor default False;
  1200.     property ParentFont;
  1201.     property ParentShowHint;
  1202.     property ShowHint;
  1203.     property PopupMenu;
  1204.     property ShowColumnHeaders;
  1205.     property SortType;
  1206.     property TabOrder;
  1207.     property TabStop default True;
  1208.     property ViewStyle;
  1209.     property Visible;
  1210.     property OnKeyDown;
  1211.     property OnKeyPress;
  1212.     property OnKeyUp;
  1213.     property LargeImages;
  1214.     property SmallImages;
  1215.     property StateImages;
  1216.   end;
  1217.  
  1218. { TAnimate }
  1219.  
  1220.   TCommonAVI = (aviNone, aviFindFolder, aviFindFile, aviFindComputer, aviCopyFiles,
  1221.     aviCopyFile, aviRecycleFile, aviEmptyRecycle, aviDeleteFile);
  1222.  
  1223.   TAnimate = class(TWinControl)
  1224.   protected
  1225.     procedure CreateParams(var Params: TCreateParams); override;
  1226.     procedure CreateWnd; override;
  1227.     procedure DestroyWnd; override;
  1228.     procedure DoOpen; virtual;
  1229.     procedure DoClose; virtual;
  1230.     procedure DoStart; virtual;
  1231.     procedure DoStop; virtual;
  1232.     procedure Loaded; override;
  1233.   public
  1234.     constructor Create(AOwner: TComponent); override;
  1235.     property FrameCount: Integer;
  1236.     property FrameHeight: Integer;
  1237.     property FrameWidth: Integer;
  1238.     property Open: Boolean;
  1239.     procedure Play(FromFrame, ToFrame: Word; Count: Integer);
  1240.     procedure Reset;
  1241.     procedure Seek(Frame: Smallint);
  1242.     procedure Stop;
  1243.     property ResHandle: THandle;
  1244.     property ResId: Integer;
  1245.     property ResName: string;
  1246.   published
  1247.     property Active: Boolean;
  1248.     property AutoSize: Boolean default True;
  1249.     property Align;
  1250.     property Center: Boolean default True;
  1251.     property Color;
  1252.     property CommonAVI: TCommonAVI default aviNone;
  1253.     property FileName: string;
  1254.     property ParentColor;
  1255.     property ParentShowHint;
  1256.     property Repetitions: Integer default 0;
  1257.     property ShowHint;
  1258.     property StartFrame: Smallint default 1;
  1259.     property StopFrame: Smallint default 0;
  1260.     property Timers: Boolean default False;
  1261.     property Transparent: Boolean default True;
  1262.     property Visible;
  1263.     property OnOpen: TNotifyEvent;
  1264.     property OnClose: TNotifyEvent;
  1265.     property OnStart: TNotifyEvent;
  1266.     property OnStop: TNotifyEvent;
  1267.   end;
  1268.  
  1269. { TToolBar }
  1270.  
  1271. const
  1272.   CN_REQUESTALIGN = WM_USER + $1000;
  1273.  
  1274. type
  1275.   TToolButtonStyle = (tbsButton, tbsCheck, tbsDropDown, tbsSeparator, tbsDivider);
  1276.  
  1277.   TToolButtonState = (tbsChecked, tbsPressed, tbsEnabled, tbsHidden,
  1278.     tbsIndeterminate, tbsWrap);
  1279.  
  1280.   TToolBar = class;
  1281.  
  1282.   TToolButton = class(TGraphicControl)
  1283.   protected
  1284.     FToolBar: TToolBar;
  1285.     procedure BeginUpdate; virtual;
  1286.     procedure EndUpdate; virtual;
  1287.     procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
  1288.     procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
  1289.     procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
  1290.       X, Y: Integer); override;
  1291.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  1292.     procedure Paint; override;
  1293.     procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
  1294.     procedure SetToolBar(AToolBar: TToolBar);
  1295.     procedure UpdateControl; virtual;
  1296.     property Index: Integer;
  1297.   public
  1298.     constructor Create(AOwner: TComponent); override;
  1299.     procedure Click; override;
  1300.   published
  1301.     property AllowAllUp: Boolean default False;
  1302.     property Caption;
  1303.     property Down: Boolean default False;
  1304.     property DragCursor;
  1305.     property DragMode;
  1306.     property DropdownMenu: TPopupMenu;
  1307.     property Enabled;
  1308.     property Grouped: Boolean default False;
  1309.     property ImageIndex: Integer;
  1310.     property Indeterminate: Boolean default False;
  1311.     property ParentShowHint;
  1312.     property PopupMenu;
  1313.     property Wrap: Boolean default False;
  1314.     property ShowHint;
  1315.     property Style: TToolButtonStyle default tbsButton;
  1316.     property Visible;
  1317.     property OnClick;
  1318.     property OnDragDrop;
  1319.     property OnDragOver;
  1320.     property OnEndDrag;
  1321.     property OnMouseDown;
  1322.     property OnMouseMove;
  1323.     property OnMouseUp;
  1324.     property OnStartDrag;
  1325.   end;
  1326.  
  1327.   TToolBar = class(TToolWindow)
  1328.   protected
  1329.     procedure AlignControls(AControl: TControl; var Rect: TRect); override;
  1330.     procedure CreateParams(var Params: TCreateParams); override;
  1331.     procedure CreateWnd; override;
  1332.     procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
  1333.     procedure Loaded; override;
  1334.     procedure Notification(AComponent: TComponent;
  1335.       Operation: TOperation); override;
  1336.     procedure RepositionButton(Index: Integer);
  1337.     procedure RepositionButtons(Index: Integer);
  1338.     procedure Resize; dynamic;
  1339.     procedure WndProc(var Message: TMessage); override;
  1340.   public
  1341.     constructor Create(AOwner: TComponent); override;
  1342.     destructor Destroy; override;
  1343.     property ButtonCount: Integer;
  1344.     property Buttons[Index: Integer]: TToolButton;
  1345.     property RowCount: Integer;
  1346.   published
  1347.     property Align default alTop;
  1348.     property AutoSize: Boolean default False;
  1349.     property BorderWidth;
  1350.     property ButtonHeight: Integer default 22;
  1351.     property ButtonWidth: Integer default 23;
  1352.     property Color;
  1353.     property Ctl3D;
  1354.     property DisabledImages: TImageList;
  1355.     property DragCursor;
  1356.     property DragMode;
  1357.     property EdgeBorders default [ebTop];
  1358.     property EdgeInner;
  1359.     property EdgeOuter;
  1360.     property Enabled;
  1361.     property Flat: Boolean default False;
  1362.     property Font;
  1363.     property Height default 32;
  1364.     property HotImages: TImageList;
  1365.     property Images: TImageList;
  1366.     property Indent: Integer default 0;
  1367.     property List: Boolean default False;
  1368.     property ParentColor;
  1369.     property ParentFont;
  1370.     property ParentShowHint;
  1371.     property PopupMenu;
  1372.     property ShowCaptions: Boolean default False;
  1373.     property ShowHint;
  1374.     property TabOrder;
  1375.     property TabStop;
  1376.     property Visible;
  1377.     property Wrapable: Boolean default True;
  1378.     property OnClick;
  1379.     property OnDblClick;
  1380.     property OnDragDrop;
  1381.     property OnDragOver;
  1382.     property OnEndDrag;
  1383.     property OnEnter;
  1384.     property OnExit;
  1385.     property OnMouseDown;
  1386.     property OnMouseMove;
  1387.     property OnMouseUp;
  1388.     property OnResize: TNotifyEvent;
  1389.     property OnStartDrag;
  1390.  
  1391.   end;
  1392.  
  1393. { TCoolBar }
  1394.  
  1395. const
  1396.   CN_BANDCHANGE = WM_USER + $1000;
  1397.  
  1398. type
  1399.   TCoolBar = class;
  1400.  
  1401.   TCoolBand = class(TCollectionItem)
  1402.   protected
  1403.     function GetDisplayName: string; override;
  1404.     procedure ParentColorChanged; dynamic;
  1405.     procedure ParentBitmapChanged; dynamic;
  1406.   public
  1407.     constructor Create(Collection: TCollection); override;
  1408.     destructor Destroy; override;
  1409.     procedure Assign(Source: TPersistent); override;
  1410.     property BorderStyle: TBorderStyle default bsSingle;
  1411.     property Height: Integer;
  1412.   published
  1413.     property Bitmap: TBitmap;
  1414.     property Break: Boolean default True;
  1415.     property Color: TColor default clBtnFace;
  1416.     property Control: TWinControl;
  1417.     property FixedBackground: Boolean default True;
  1418.     property FixedSize: Boolean default False;
  1419.     property HorizontalOnly: Boolean default False;
  1420.     property ImageIndex: Integer;
  1421.     property MinHeight: Integer default 25;
  1422.     property MinWidth: Integer default 0;
  1423.     property ParentColor: Boolean default True;
  1424.     property ParentBitmap: Boolean default True;
  1425.     property Text: string;
  1426.     property Visible: Boolean default True;
  1427.     property Width: Integer;
  1428.   end;
  1429.  
  1430.   TCoolBands = class(TCollection)
  1431.   protected
  1432.     function GetOwner: TPersistent; override;
  1433.     procedure Update(Item: TCollectionItem); override;
  1434.     function FindBand(AControl: TControl): TCoolBand;
  1435.     function HaveGraphic: Boolean;
  1436.   public
  1437.     constructor Create(CoolBar: TCoolBar);
  1438.     function Add: TCoolBand;
  1439.     property CoolBar: TCoolBar;
  1440.     property Items[Index: Integer]: TCoolBand; default;
  1441.   end;
  1442.  
  1443.   TCoolBar = class(TToolWindow)
  1444.   protected
  1445.     procedure AlignControls(AControl: TControl; var Rect: TRect); override;
  1446.     procedure Change; dynamic;
  1447.     procedure CreateParams(var Params: TCreateParams); override;
  1448.     procedure CreateWnd; override;
  1449.     function GetPalette: HPALETTE; override;
  1450.     procedure Loaded; override;
  1451.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  1452.     procedure Resize; dynamic;
  1453.     procedure WndProc(var Message: TMessage); override;
  1454.   public
  1455.     constructor Create(AOwner: TComponent); override;
  1456.     destructor Destroy; override;
  1457.   published
  1458.     property Align read GetAlign write SetAlign default alTop;
  1459.     property AutoSize: Boolean default False;
  1460.     property BandBorderStyle: TBorderStyle default bsSingle;
  1461.     property Bands: TCoolBands;
  1462.     property BorderWidth;
  1463.     property Color;
  1464.     property Ctl3D;
  1465.     property DragCursor;
  1466.     property DragMode;
  1467.     property EdgeBorders;
  1468.     property EdgeInner;
  1469.     property EdgeOuter;
  1470.     property Enabled;
  1471.     property FixedSize: Boolean default False;
  1472.     property FixedOrder: Boolean default False;
  1473.     property Font;
  1474.     property Images: TImageList;
  1475.     property ParentColor;
  1476.     property ParentFont;
  1477.     property ParentShowHint;
  1478.     property Bitmap: TBitmap;
  1479.     property PopupMenu;
  1480.     property ShowHint;
  1481.     property ShowText: Boolean default True;
  1482.     property Vertical: Boolean default False;
  1483.     property Visible;
  1484.     property OnChange: TNotifyEvent;
  1485.     property OnClick;
  1486.     property OnDblClick;
  1487.     property OnDragDrop;
  1488.     property OnDragOver;
  1489.     property OnEndDrag;
  1490.     property OnMouseDown;
  1491.     property OnMouseMove;
  1492.     property OnMouseUp;
  1493.     property OnResize: TNotifyEvent;
  1494.     property OnStartDrag;
  1495.   end;
  1496.  
  1497. type
  1498.   EDateTimeError = class(Exception);
  1499.  
  1500.   TDateTimeKind = (dtkDate, dtkTime);
  1501.   TDTDateMode = (dmComboBox, dmUpDown);
  1502.   TDTDateFormat = (dfShort, dfLong);
  1503.   TDTCalAlignment = (dtaLeft, dtaRight);
  1504.  
  1505.   TDTParseInputEvent = procedure(Sender: TObject; const UserString: string;
  1506.     var DateAndTime: TDateTime; var AllowChange: Boolean) of object;
  1507.  
  1508.   TDateTimePicker = class;
  1509.  
  1510.   TDateTimeColors = class(TPersistent)
  1511.   public
  1512.     constructor Create(AOwner: TDateTimePicker);
  1513.     procedure Assign(Source: TPersistent); override;
  1514.   published
  1515.     property BackColor: TColor index 0 default clWindow;
  1516.     property TextColor: TColor index 1 default clWindowText;
  1517.     property TitleBackColor: TColor index 2 default clActiveCaption;
  1518.     property TitleTextColor: TColor index 3 default clWhite;
  1519.     property MonthBackColor: TColor index 4 default clWhite;
  1520.     property TrailingTextColor: TColor index 5default clInactiveCaptionText;
  1521.   end;
  1522.  
  1523.   TDateTimePicker = class(TWinControl)
  1524.   protected
  1525.     procedure CreateParams(var Params: TCreateParams); override;
  1526.     procedure CreateWnd; override;
  1527.   public
  1528.     constructor Create(AOwner: TComponent); override;
  1529.     destructor Destroy; override;
  1530.   published
  1531.     property CalAlignment: TDTCalAlignment;
  1532.     property CalColors: TDateTimeColors;
  1533.     // The Date, Time, ShowCheckbox, and Checked properties must be in this order:
  1534.     property Date: TDate;
  1535.     property Time: TTime;
  1536.     property ShowCheckbox: Boolean default False;
  1537.     property Checked: Boolean default True;
  1538.     property Color stored True default clWindow;
  1539.     property DateFormat: TDTDateFormat;
  1540.     property DateMode: TDTDateMode;
  1541.     property DragCursor;
  1542.     property DragMode;
  1543.     property Enabled;
  1544.     property Font;
  1545.     property ImeMode;
  1546.     property ImeName;
  1547.     property Kind: TDateTimeKind;
  1548.     property MaxDate: TDate;
  1549.     property MinDate: TDate;
  1550.     property ParseInput: Boolean;
  1551.     property ParentColor default False;
  1552.     property ParentFont;
  1553.     property ParentShowHint;
  1554.     property PopupMenu;
  1555.     property ShowHint;
  1556.     property TabStop default True;
  1557.     property Visible;
  1558.     property OnClick;
  1559.     property OnCloseUp: TNotifyEvent;
  1560.     property OnChange: TNotifyEvent;
  1561.     property OnDropDown: TNotifyEvent;
  1562.     property OnDblClick;
  1563.     property OnDragDrop;
  1564.     property OnDragOver;
  1565.     property OnEndDrag;
  1566.     property OnEnter;
  1567.     property OnExit;
  1568.     property OnKeyDown;
  1569.     property OnKeyPress;
  1570.     property OnKeyUp;
  1571.     property OnStartDrag;
  1572.     property OnUserInput: TDTParseInputEvent;
  1573.   end;
  1574.  
  1575. function InitCommonControl(CC: Integer): Boolean;
  1576. procedure CheckCommonControl(CC: Integer);
  1577.  
  1578. implementation
  1579.