home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1996 August / VPR9608A.BIN / del20try / install / data.z / COMCTRLS.INT < prev    next >
Text File  |  1996-05-08  |  39KB  |  1,166 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Visual Component Library                 }
  5. {                                                       }
  6. {       Copyright (c) 1996 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;
  18.  
  19. type
  20.   TTabChangingEvent = procedure(Sender: TObject;
  21.     var AllowChange: Boolean) of object;
  22.  
  23.   TCustomTabControl = class(TWinControl)
  24.   protected
  25.     procedure AlignControls(AControl: TControl; var Rect: TRect); override;
  26.     function CanChange: Boolean; dynamic;
  27.     procedure Change; dynamic;
  28.     procedure CreateParams(var Params: TCreateParams); override;
  29.     procedure CreateWnd; override;
  30.     procedure DestroyWnd; override;
  31.     property DisplayRect: TRect;
  32.     property MultiLine: Boolean default False;
  33.     property TabHeight: Smallint default 0;
  34.     property TabIndex: Integer default -1;
  35.     property Tabs: TStrings;
  36.     property TabWidth: Smallint default 0;
  37.     property OnChange: TNotifyEvent;
  38.     property OnChanging: TTabChangingEvent;
  39.   public
  40.     constructor Create(AOwner: TComponent); override;
  41.     destructor Destroy; override;
  42.     property TabStop default True;
  43.   end;
  44.  
  45.   TTabControl = class(TCustomTabControl)
  46.   public
  47.     property DisplayRect;
  48.   published
  49.     property Align;
  50.     property DragCursor;
  51.     property DragMode;
  52.     property Enabled;
  53.     property Font;
  54.     property MultiLine;
  55.     property ParentFont;
  56.     property ParentShowHint;
  57.     property PopupMenu;
  58.     property ShowHint;
  59.     property TabHeight;
  60.     property TabIndex;
  61.     property TabOrder;
  62.     property Tabs;
  63.     property TabStop;
  64.     property TabWidth;
  65.     property Visible;
  66.     property OnChange;
  67.     property OnChanging;
  68.     property OnDragDrop;
  69.     property OnDragOver;
  70.     property OnEndDrag;
  71.     property OnEnter;
  72.     property OnExit;
  73.     property OnMouseDown;
  74.     property OnMouseMove;
  75.     property OnMouseUp;
  76.     property OnStartDrag;
  77.   end;
  78.  
  79.   TPageControl = class;
  80.  
  81.   TTabSheet = class(TWinControl)
  82.   protected
  83.     procedure ReadState(Reader: TReader); override;
  84.   public
  85.     constructor Create(AOwner: TComponent); override;
  86.     destructor Destroy; override;
  87.     property PageControl: TPageControl;
  88.     property TabIndex: Integer;
  89.   published
  90.     property Caption;
  91.     property Enabled;
  92.     property Font;
  93.     property Height stored False;
  94.     property Left stored False;
  95.     property PageIndex: Integer;
  96.     property ParentFont;
  97.     property ParentShowHint;
  98.     property PopupMenu;
  99.     property ShowHint;
  100.     property TabVisible: Boolean default True;
  101.     property Top stored False;
  102.     property Visible stored False;
  103.     property Width stored False;
  104.     property OnDragDrop;
  105.     property OnDragOver;
  106.     property OnEnter;
  107.     property OnExit;
  108.     property OnMouseDown;
  109.     property OnMouseMove;
  110.     property OnMouseUp;
  111.   end;
  112.  
  113.   TPageControl = class(TCustomTabControl)
  114.   protected
  115.     procedure Change; override;
  116.     procedure GetChildren(Proc: TGetChildProc); override;
  117.     procedure SetChildOrder(Child: TComponent; Order: Integer); override;
  118.     procedure ShowControl(AControl: TControl); override;
  119.   public
  120.     constructor Create(AOwner: TComponent); override;
  121.     destructor Destroy; override;
  122.     function FindNextPage(CurPage: TTabSheet;
  123.       GoForward, CheckTabVisible: Boolean): TTabSheet;
  124.     procedure SelectNextPage(GoForward: Boolean);
  125.     property PageCount: Integer;
  126.     property Pages[Index: Integer]: TTabSheet;
  127.   published
  128.     property ActivePage: TTabSheet;
  129.     property Align;
  130.     property DragCursor;
  131.     property DragMode;
  132.     property Enabled;
  133.     property Font;
  134.     property MultiLine;
  135.     property ParentFont;
  136.     property ParentShowHint;
  137.     property PopupMenu;
  138.     property ShowHint;
  139.     property TabHeight;
  140.     property TabOrder;
  141.     property TabStop;
  142.     property TabWidth;
  143.     property Visible;
  144.     property OnChange;
  145.     property OnChanging;
  146.     property OnDragDrop;
  147.     property OnDragOver;
  148.     property OnEndDrag;
  149.     property OnEnter;
  150.     property OnExit;
  151.     property OnMouseDown;
  152.     property OnMouseMove;
  153.     property OnMouseUp;
  154.     property OnStartDrag;
  155.   end;
  156.  
  157.   TStatusBar = class;
  158.  
  159.   TStatusPanelStyle = (psText, psOwnerDraw);
  160.   TStatusPanelBevel = (pbNone, pbLowered, pbRaised);
  161.  
  162.   TStatusPanel = class(TCollectionItem)
  163.   public
  164.     constructor Create(Collection: TCollection); override;
  165.     procedure Assign(Source: TPersistent); override;
  166.   published
  167.     property Alignment: TAlignment default taLeftJustify;
  168.     property Bevel: TStatusPanelBevel default pbLowered;
  169.     property Style: TStatusPanelStyle default psText;
  170.     property Text: string;
  171.     property Width: Integer;
  172.   end;
  173.  
  174.   TStatusPanels = class(TCollection)
  175.   protected
  176.     procedure Update(Item: TCollectionItem); override;
  177.   public
  178.     constructor Create(StatusBar: TStatusBar);
  179.     function Add: TStatusPanel;
  180.     property Items[Index: Integer]: TStatusPanel; default;
  181.   end;
  182.  
  183.   TDrawPanelEvent = procedure(StatusBar: TStatusBar; Panel: TStatusPanel;
  184.     const Rect: TRect) of object;
  185.  
  186.   TStatusBar = class(TWinControl)
  187.   protected
  188.     procedure CreateParams(var Params: TCreateParams); override;
  189.     procedure CreateWnd; override;
  190.     procedure DrawPanel(Panel: TStatusPanel; const Rect: TRect); dynamic;
  191.     procedure Resize; dynamic;
  192.   public
  193.     constructor Create(AOwner: TComponent); override;
  194.     destructor Destroy; override;
  195.     property Canvas: TCanvas;
  196.   published
  197.     property Align default alBottom;
  198.     property DragCursor;
  199.     property DragMode;
  200.     property Enabled;
  201.     property Font;
  202.     property Panels: TStatusPanels;
  203.     property ParentFont;
  204.     property ParentShowHint;
  205.     property PopupMenu;
  206.     property ShowHint;
  207.     property SimplePanel: Boolean;
  208.     property SimpleText: string;
  209.     property SizeGrip: Boolean default True;
  210.     property Visible;
  211.     property OnClick;
  212.     property OnDblClick;
  213.     property OnDragDrop;
  214.     property OnDragOver;
  215.     property OnEndDrag;
  216.     property OnMouseDown;
  217.     property OnMouseMove;
  218.     property OnMouseUp;
  219.     property OnDrawPanel: TDrawPanelEvent;
  220.     property OnResize: TNotifyEvent;
  221.     property OnStartDrag;
  222.   end;
  223.  
  224.   THeaderControl = class;
  225.  
  226.   THeaderSectionStyle = (hsText, hsOwnerDraw);
  227.  
  228.   THeaderSection = class(TCollectionItem)
  229.   public
  230.     constructor Create(Collection: TCollection); override;
  231.     procedure Assign(Source: TPersistent); override;
  232.     property Left: Integer;
  233.     property Right: Integer;
  234.   published
  235.     property Alignment: TAlignment default taLeftJustify;
  236.     property AllowClick: Boolean default True;
  237.     property MaxWidth: Integer default 10000;
  238.     property MinWidth: Integer default 0;
  239.     property Style: THeaderSectionStyle default hsText;
  240.     property Text: string;
  241.     property Width: Integer;
  242.   end;
  243.  
  244.   THeaderSections = class(TCollection)
  245.   protected
  246.     procedure Update(Item: TCollectionItem); override;
  247.   public
  248.     constructor Create(HeaderControl: THeaderControl);
  249.     function Add: THeaderSection;
  250.     property Items[Index: Integer]: THeaderSection; default;
  251.   end;
  252.  
  253.   TSectionTrackState = (tsTrackBegin, tsTrackMove, tsTrackEnd);
  254.  
  255.   TDrawSectionEvent = procedure(HeaderControl: THeaderControl;
  256.     Section: THeaderSection; const Rect: TRect; Pressed: Boolean) of object;
  257.   TSectionNotifyEvent = procedure(HeaderControl: THeaderControl;
  258.     Section: THeaderSection) of object;
  259.   TSectionTrackEvent = procedure(HeaderControl: THeaderControl;
  260.     Section: THeaderSection; Width: Integer;
  261.     State: TSectionTrackState) of object;
  262.  
  263.   THeaderControl = class(TWinControl)
  264.   protected
  265.     procedure CreateParams(var Params: TCreateParams); override;
  266.     procedure CreateWnd; override;
  267.     procedure DrawSection(Section: THeaderSection; const Rect: TRect;
  268.       Pressed: Boolean); dynamic;
  269.     procedure Resize; dynamic;
  270.     procedure SectionClick(Section: THeaderSection); dynamic;
  271.     procedure SectionResize(Section: THeaderSection); dynamic;
  272.     procedure SectionTrack(Section: THeaderSection; Width: Integer;
  273.       State: TSectionTrackState); dynamic;
  274.   public
  275.     constructor Create(AOwner: TComponent); override;
  276.     destructor Destroy; override;
  277.     property Canvas: TCanvas;
  278.   published
  279.     property Align default alTop;
  280.     property DragCursor;
  281.     property DragMode;
  282.     property Enabled;
  283.     property Font;
  284.     property Sections: THeaderSections;
  285.     property ShowHint;
  286.     property ParentFont;
  287.     property ParentShowHint;
  288.     property PopupMenu;
  289.     property Visible;
  290.     property OnDragDrop;
  291.     property OnDragOver;
  292.     property OnEndDrag;
  293.     property OnMouseDown;
  294.     property OnMouseMove;
  295.     property OnMouseUp;
  296.     property OnDrawSection: TDrawSectionEvent;
  297.     property OnResize: TNotifyEvent;
  298.     property OnSectionClick: TSectionNotifyEvent;
  299.     property OnSectionResize: TSectionNotifyEvent;
  300.     property OnSectionTrack: TSectionTrackEvent;
  301.     property OnStartDrag;
  302.   end;
  303.  
  304. { TTreeNode }
  305.  
  306.   TCustomTreeView = class;
  307.   TTreeNodes = class;
  308.  
  309.   TNodeState = (nsCut, nsDropHilited, nsFocused, nsSelected, nsExpanded);
  310.   TNodeAttachMode = (naAdd, naAddFirst, naAddChild, naAddChildFirst, naInsert);
  311.   TAddMode = (taAddFirst, taAdd, taInsert);
  312.  
  313.   PNodeInfo = ^TNodeInfo;
  314.   TNodeInfo = packed record
  315.     ImageIndex: Integer;
  316.     SelectedIndex: Integer;
  317.     StateIndex: Integer;
  318.     OverlayIndex: Integer;
  319.     Data: Pointer;
  320.     Count: Integer;
  321.     Text: string[255];
  322.   end;
  323.  
  324.   TTreeNode = class(TPersistent)
  325.   public
  326.     constructor Create(AOwner: TTreeNodes);
  327.     destructor Destroy; override;
  328.     function AlphaSort: Boolean;
  329.     procedure Assign(Source: TPersistent); override;
  330.     procedure Collapse(Recurse: Boolean);
  331.     function CustomSort(SortProc: TTVCompare; Data: Longint): Boolean;
  332.     procedure Delete;
  333.     procedure DeleteChildren;
  334.     function DisplayRect(TextOnly: Boolean): TRect;
  335.     function EditText: Boolean;
  336.     procedure EndEdit(Cancel: Boolean);
  337.     procedure Expand(Recurse: Boolean);
  338.     function GetFirstChild: TTreeNode;
  339.     function GetHandle: HWND;
  340.     function GetLastChild: TTreeNode;
  341.     function GetNext: TTreeNode;
  342.     function GetNextChild(Value: TTreeNode): TTreeNode;
  343.     function GetNextSibling: TTreeNode;
  344.     function GetNextVisible: TTreeNode;
  345.     function GetPrev: TTreeNode;
  346.     function GetPrevChild(Value: TTreeNode): TTreeNode;
  347.     function GetPrevSibling: TTreeNode;
  348.     function GetPrevVisible: TTreeNode;
  349.     function HasAsParent(Value: TTreeNode): Boolean;
  350.     function IndexOf(Value: TTreeNode): Integer;
  351.     procedure MakeVisible;
  352.     procedure MoveTo(Destination: TTreeNode; Mode: TNodeAttachMode);
  353.     property AbsoluteIndex: Integer;
  354.     property Count: Integer;
  355.     property Cut: Boolean;
  356.     property Data: Pointer;
  357.     property Deleting: Boolean;
  358.     property Focused: Boolean;
  359.     property DropTarget: Boolean;
  360.     property Selected: Boolean;
  361.     property Expanded: Boolean;
  362.     property Handle: HWND;
  363.     property HasChildren: Boolean;
  364.     property ImageIndex: Integer;
  365.     property Index: Integer;
  366.     property IsVisible: Boolean;
  367.     property Item[Index: Integer]: TTreeNode; default;
  368.     property ItemId: HTreeItem;
  369.     property Level: Integer;
  370.     property OverlayIndex: Integer;
  371.     property Owner: TTreeNodes;
  372.     property Parent: TTreeNode;
  373.     property SelectedIndex: Integer;
  374.     property StateIndex: Integer;
  375.     property Text: string;
  376.     property TreeView: TCustomTreeView;
  377.   end;
  378.  
  379. { TTreeNodes }
  380.  
  381.   TTreeNodes = class(TPersistent)
  382.   protected
  383.     function AddItem(Parent, Target: HTreeItem; const Item: TTVItem;
  384.       AddMode: TAddMode): HTreeItem;
  385.     function InternalAddObject(Node: TTreeNode; const S: string;
  386.       Ptr: Pointer; AddMode: TAddMode): TTreeNode;
  387.     procedure DefineProperties(Filer: TFiler); override;
  388.     function CreateItem(Node: TTreeNode): TTVItem;
  389.     function GetCount: Integer;
  390.     procedure SetItem(Index: Integer; Value: TTreeNode);
  391.     procedure SetUpdateState(Updating: Boolean);
  392.   public
  393.     constructor Create(AOwner: TCustomTreeView);
  394.     destructor Destroy; override;
  395.     function AddChildFirst(Node: TTreeNode; const S: string): TTreeNode;
  396.     function AddChild(Node: TTreeNode; const S: string): TTreeNode;
  397.     function AddChildObjectFirst(Node: TTreeNode; const S: string;
  398.       Ptr: Pointer): TTreeNode;
  399.     function AddChildObject(Node: TTreeNode; const S: string;
  400.       Ptr: Pointer): TTreeNode;
  401.     function AddFirst(Node: TTreeNode; const S: string): TTreeNode;
  402.     function Add(Node: TTreeNode; const S: string): TTreeNode;
  403.     function AddObjectFirst(Node: TTreeNode; const S: string;
  404.       Ptr: Pointer): TTreeNode;
  405.     function AddObject(Node: TTreeNode; const S: string;
  406.       Ptr: Pointer): TTreeNode;
  407.     procedure Assign(Source: TPersistent); override;
  408.     procedure BeginUpdate;
  409.     procedure Clear;
  410.     procedure Delete(Node: TTreeNode);
  411.     procedure EndUpdate;
  412.     function GetFirstNode: TTreeNode;
  413.     function GetNode(ItemId: HTreeItem): TTreeNode;
  414.     function Insert(Node: TTreeNode; const S: string): TTreeNode;
  415.     function InsertObject(Node: TTreeNode; const S: string;
  416.       Ptr: Pointer): TTreeNode;
  417.     property Count: Integer;
  418.     property Handle: HWND;
  419.     property Item[Index: Integer]: TTreeNode; default;
  420.     property Owner: TCustomTreeView;
  421.   end;
  422.  
  423. { TCustomTreeView }
  424.  
  425.   THitTest = (htAbove, htBelow, htNowhere, htOnItem, htOnButton,
  426.     htOnIcon, htOnIndent, htOnLabel, htOnRight,
  427.     htOnStateIcon, htToLeft, htToRight);
  428.   THitTests = set of THitTest;
  429.   ETreeViewError = class(Exception);
  430.  
  431.   TTVChangingEvent = procedure(Sender: TObject; Node: TTreeNode;
  432.     var AllowChange: Boolean) of object;
  433.   TTVChangedEvent = procedure(Sender: TObject; Node: TTreeNode) of object;
  434.   TTVEditingEvent = procedure(Sender: TObject; Node: TTreeNode;
  435.     var AllowEdit: Boolean) of object;
  436.   TTVEditedEvent = procedure(Sender: TObject; Node: TTreeNode; var S: string) of object;
  437.   TTVExpandingEvent = procedure(Sender: TObject; Node: TTreeNode;
  438.     var AllowExpansion: Boolean) of object;
  439.   TTVCollapsingEvent = procedure(Sender: TObject; Node: TTreeNode;
  440.     var AllowCollapse: Boolean) of object;
  441.   TTVExpandedEvent = procedure(Sender: TObject; Node: TTreeNode) of object;
  442.   TTVCompareEvent = procedure(Sender: TObject; Node1, Node2: TTreeNode;
  443.     Data: Integer; var Compare: Integer) of object;
  444.  
  445.   TSortType = (stNone, stData, stText, stBoth);
  446.  
  447.   TCustomTreeView = class(TWinControl)
  448.   protected
  449.     function CanEdit(Node: TTreeNode): Boolean; dynamic;
  450.     function CanChange(Node: TTreeNode): Boolean; dynamic;
  451.     function CanCollapse(Node: TTreeNode): Boolean; dynamic;
  452.     function CanExpand(Node: TTreeNode): Boolean; dynamic;
  453.     procedure Change(Node: TTreeNode); dynamic;
  454.     procedure Collapse(Node: TTreeNode); dynamic;
  455.     function CreateNode: TTreeNode; virtual;
  456.     procedure CreateParams(var Params: TCreateParams); override;
  457.     procedure CreateWnd; override;
  458.     procedure DestroyWnd; override;
  459.     procedure DoEndDrag(Target: TObject; X, Y: Integer); dynamic;
  460.     procedure DoStartDrag(var DragObject: TDragObject); override;
  461.     procedure Edit(const Item: TTVItem); dynamic;
  462.     procedure Expand(Node: TTreeNode); dynamic;
  463.     function GetDragImages: TCustomImageList; override;
  464.     procedure Loaded; override;
  465.     procedure Notification(AComponent: TComponent;
  466.       Operation: TOperation); override;
  467.     procedure SetDragMode(Value: TDragMode); override;
  468.     procedure WndProc(var Message: TMessage); override;
  469.     property OnEditing: TTVEditingEvent;
  470.     property OnEdited: TTVEditedEvent;
  471.     property OnExpanding: TTVExpandingEvent;
  472.     property OnExpanded: TTVExpandedEvent;
  473.     property OnCollapsing: TTVCollapsingEvent;
  474.     property OnCollapsed: TTVExpandedEvent;
  475.     property OnChanging: TTVChangingEvent;
  476.     property OnChange: TTVChangedEvent;
  477.     property OnCompare: TTVCompareEvent;
  478.     property OnDeletion: TTVExpandedEvent;
  479.     property OnGetImageIndex: TTVExpandedEvent;
  480.     property OnGetSelectedIndex: TTVExpandedEvent;
  481.     property ShowButtons: Boolean default True;
  482.     property BorderStyle: TBorderStyle default bsSingle;
  483.     property ShowLines: Boolean default True;
  484.     property ShowRoot: Boolean default True;
  485.     property ReadOnly: Boolean default False;
  486.     property Indent: Integer;
  487.     property Items: TTreeNodes;
  488.     property SortType: TSortType default stNone;
  489.     property HideSelection: Boolean default True;
  490.     property Images: TImageList;
  491.     property StateImages: TImageList;
  492.   public
  493.     constructor Create(AOwner: TComponent); override;
  494.     destructor Destroy; override;
  495.     function AlphaSort: Boolean;
  496.     function CustomSort(SortProc: TTVCompare; Data: Longint): Boolean;
  497.     procedure FullCollapse;
  498.     procedure FullExpand;
  499.     function GetHitTestInfoAt(X, Y: Integer): THitTests;
  500.     function GetNodeAt(X, Y: Integer): TTreeNode;
  501.     function IsEditing: Boolean;
  502.     procedure LoadFromFile(const FileName: string);
  503.     procedure LoadFromStream(Stream: TStream);
  504.     procedure SaveToFile(const FileName: string);
  505.     procedure SaveToStream(Stream: TStream);
  506.     property DropTarget: TTreeNode;
  507.     property Selected: TTreeNode;
  508.     property TopItem: TTreeNode;
  509.   end;
  510.  
  511.   TTreeView = class(TCustomTreeView)
  512.   published
  513.     property ShowButtons;
  514.     property BorderStyle;
  515.     property DragCursor;
  516.     property ShowLines;
  517.     property ShowRoot;
  518.     property ReadOnly;
  519.     property DragMode;
  520.     property HideSelection;
  521.     property Indent;
  522.     property Items;
  523.     property OnEditing;
  524.     property OnEdited;
  525.     property OnExpanding;
  526.     property OnExpanded;
  527.     property OnCollapsing;
  528.     property OnCompare;
  529.     property OnCollapsed;
  530.     property OnChanging;
  531.     property OnChange;
  532.     property OnDeletion;
  533.     property OnGetImageIndex;
  534.     property OnGetSelectedIndex;
  535.     property Align;
  536.     property Enabled;
  537.     property Font;
  538.     property Color;
  539.     property ParentColor;
  540.     property ParentCtl3D;
  541.     property Ctl3D;
  542.     property SortType;
  543.     property TabOrder;
  544.     property TabStop default True;
  545.     property Visible;
  546.     property OnClick;
  547.     property OnEnter;
  548.     property OnExit;
  549.     property OnDragDrop;
  550.     property OnDragOver;
  551.     property OnStartDrag;
  552.     property OnEndDrag;
  553.     property OnMouseDown;
  554.     property OnMouseMove;
  555.     property OnMouseUp;
  556.     property OnDblClick;
  557.     property OnKeyDown;
  558.     property OnKeyPress;
  559.     property OnKeyUp;
  560.     property PopupMenu;
  561.     property ParentFont;
  562.     property ParentShowHint;
  563.     property ShowHint;
  564.     property Images;
  565.     property StateImages;
  566.   end;
  567.  
  568. { TTrackBar }
  569.  
  570.   TTrackBarOrientation = (trHorizontal, trVertical);
  571.   TTickMark = (tmBottomRight, tmTopLeft, tmBoth);
  572.   TTickStyle = (tsNone, tsAuto, tsManual);
  573.  
  574.   TTrackBar = class(TWinControl)
  575.   protected
  576.     procedure CreateParams(var Params: TCreateParams); override;
  577.     procedure CreateWnd; override;
  578.     procedure DestroyWnd; override;
  579.   public
  580.     constructor Create(AOwner: TComponent); override;
  581.     procedure SetTick(Value: Integer);
  582.   published
  583.     property Ctl3D;
  584.     property DragCursor;
  585.     property DragMode;
  586.     property Enabled;
  587.     property LineSize: Integer default 1;
  588.     property Max: Integer default 10;
  589.     property Min: Integer default 0;
  590.     property Orientation: TTrackBarOrientation;
  591.     property ParentCtl3D;
  592.     property ParentShowHint;
  593.     property PageSize: Integer default 2;
  594.     property PopupMenu;
  595.     property Frequency: Integer;
  596.     property Position: Integer;
  597.     property SelEnd: Integer;
  598.     property SelStart: Integer;
  599.     property ShowHint;
  600.     property TabOrder;
  601.     property TabStop default True;
  602.     property TickMarks: TTickMark;
  603.     property TickStyle: TTickStyle;
  604.     property Visible;
  605.     property OnChange: TNotifyEvent;
  606.     property OnDragDrop;
  607.     property OnDragOver;
  608.     property OnEndDrag;
  609.     property OnEnter;
  610.     property OnExit;
  611.     property OnKeyDown;
  612.     property OnKeyPress;
  613.     property OnKeyUp;
  614.     property OnStartDrag;
  615.   end;
  616.  
  617. { TProgressBar }
  618.  
  619.   TProgressRange = 0..65535; // max & position limitation of Progess Bar
  620.   TProgressBar = class(TWinControl)
  621.   protected
  622.     procedure CreateParams(var Params: TCreateParams); override;
  623.     procedure CreateWnd; override;
  624.   public
  625.     constructor Create(AOwner: TComponent); override;
  626.     procedure StepIt;
  627.     procedure StepBy(Delta: TProgressRange);
  628.   published
  629.     property Align;
  630.     property Enabled;
  631.     property Hint;
  632.     property Min: TProgressRange;
  633.     property Max: TProgressRange;
  634.     property ParentShowHint;
  635.     property PopupMenu;
  636.     property Position: TProgressRange default 0;
  637.     property Step: TProgressRange default 10;
  638.     property ShowHint;
  639.     property TabOrder;
  640.     property TabStop;
  641.     property Visible;
  642.     property OnDragDrop;
  643.     property OnDragOver;
  644.     property OnEndDrag;
  645.     property OnEnter;
  646.     property OnExit;
  647.     property OnMouseDown;
  648.     property OnMouseMove;
  649.     property OnMouseUp;
  650.     property OnStartDrag;
  651.   end;
  652.  
  653. { TTextAttributes }
  654.  
  655.   TCustomRichEdit = class;
  656.  
  657.   TAttributeType = (atSelected, atDefaultText);
  658.   TConsistentAttribute = (caBold, caColor, caFace, caItalic,
  659.     caSize, caStrikeOut, caUnderline, caProtected);
  660.   TConsistentAttributes = set of TConsistentAttribute;
  661.  
  662.   TTextAttributes = class(TPersistent)
  663.   protected
  664.     procedure InitFormat(var Format: TCharFormat);
  665.     procedure AssignTo(Dest: TPersistent); override;
  666.   public
  667.     constructor Create(AOwner: TCustomRichEdit; AttributeType: TAttributeType);
  668.     procedure Assign(Source: TPersistent); override;
  669.     property Color: TColor;
  670.     property ConsistentAttributes: TConsistentAttributes;
  671.     property Name: TFontName;
  672.     property Pitch: TFontPitch;
  673.     property Protected: Boolean;
  674.     property Size: Integer;
  675.     property Style: TFontStyles;
  676.     property Height: Integer;
  677.   end;
  678.  
  679. { TParaAttributes }
  680.  
  681.   TNumberingStyle = (nsNone, nsBullet);
  682.  
  683.   TParaAttributes = class(TPersistent)
  684.   public
  685.     constructor Create(AOwner: TCustomRichEdit);
  686.     procedure Assign(Source: TPersistent); override;
  687.     property Alignment: TAlignment;
  688.     property FirstIndent: Longint;
  689.     property LeftIndent: Longint;
  690.     property Numbering: TNumberingStyle;
  691.     property RightIndent: Longint;
  692.     property Tab[Index: Byte]: Longint;
  693.     property TabCount: Integer;
  694.   end;
  695.  
  696. { TCustomRichEdit }
  697.  
  698.   TRichEditResizeEvent = procedure(Sender: TObject; Rect: TRect) of object;
  699.   TRichEditProtectChange = procedure(Sender: TObject;
  700.     StartPos, EndPos: Integer; var AllowChange: Boolean) of object;
  701.   TRichEditSaveClipboard = procedure(Sender: TObject;
  702.     NumObjects, NumChars: Integer; var SaveClipboard: Boolean) of object;
  703.   TSearchType = (stWholeWord, stMatchCase);
  704.   TSearchTypes = set of TSearchType;
  705.  
  706.   TConversion = class(TObject)
  707.   public
  708.     function ConvertReadStream(Stream: TStream; Buffer: PChar; BufSize: Integer): Integer; virtual;
  709.     function ConvertWriteStream(Stream: TStream; Buffer: PChar; BufSize: Integer): Integer; virtual;
  710.   end;
  711.  
  712.   TConversionClass = class of TConversion;
  713.  
  714.   PConversionFormat = ^TConversionFormat;
  715.   TConversionFormat = record
  716.     ConversionClass: TConversionClass;
  717.     Extension: string;
  718.     Next: PConversionFormat;
  719.   end;
  720.  
  721.   PRichEditStreamInfo = ^TRichEditStreamInfo;
  722.   TRichEditStreamInfo = record
  723.     Converter: TConversion;
  724.     Stream: TStream;
  725.   end;
  726.  
  727.   TCustomRichEdit = class(TCustomMemo)
  728.   protected
  729.     procedure CreateParams(var Params: TCreateParams); override;
  730.     procedure CreateWnd; override;
  731.     procedure DestroyWnd; override;
  732.     procedure RequestSize(const Rect: TRect); virtual;
  733.     procedure SelectionChange; dynamic;
  734.     property HideSelection: Boolean default True;
  735.     property HideScrollBars: Boolean default True;
  736.     property Lines: TStrings;
  737.     property OnSaveClipboard: TRichEditSaveClipboard;
  738.     property OnSelectionChange: TNotifyEvent;
  739.     property OnProtectChange: TRichEditProtectChange;
  740.     property OnResizeRequest: TRichEditResizeEvent;
  741.     property PlainText: Boolean default False;
  742.   public
  743.     constructor Create(AOwner: TComponent); override;
  744.     destructor Destroy; override;
  745.     function FindText(const SearchStr: string;
  746.       StartPos, Length: Integer; Options: TSearchTypes): Integer;
  747.     procedure Print(const Caption: string);
  748.     class procedure RegisterConversionFormat(const AExtension: string;
  749.       AConversionClass: TConversionClass);
  750.     property DefaultConverter: TConversionClass;
  751.     property DefAttributes: TTextAttributes;
  752.     property SelAttributes: TTextAttributes;
  753.     property PageRect: TRect;
  754.     property Paragraph: TParaAttributes;
  755.   end;
  756.  
  757.   TRichEdit = class(TCustomRichEdit)
  758.   published
  759.     property Align;
  760.     property Alignment;
  761.     property BorderStyle;
  762.     property Color;
  763.     property Ctl3D;
  764.     property DragMode;
  765.     property Enabled;
  766.     property Font;
  767.     property HideSelection;
  768.     property HideScrollBars;
  769.     property Lines;
  770.     property MaxLength;
  771.     property ParentColor;
  772.     property ParentCtl3D;
  773.     property ParentFont;
  774.     property PlainText;
  775.     property PopupMenu;
  776.     property ReadOnly;
  777.     property ScrollBars;
  778.     property ShowHint;
  779.     property TabOrder;
  780.     property TabStop default True;
  781.     property Visible;
  782.     property WantTabs;
  783.     property WantReturns;
  784.     property WordWrap;
  785.     property OnChange;
  786.     property OnDragDrop;
  787.     property OnDragOver;
  788.     property OnEndDrag;
  789.     property OnEnter;
  790.     property OnExit;
  791.     property OnKeyDown;
  792.     property OnKeyPress;
  793.     property OnKeyUp;
  794.     property OnMouseDown;
  795.     property OnMouseMove;
  796.     property OnMouseUp;
  797.     property OnResizeRequest;
  798.     property OnSelectionChange;
  799.     property OnStartDrag;
  800.     property OnProtectChange;
  801.     property OnSaveClipboard;
  802.   end;
  803.  
  804. { TUpDown }
  805.  
  806.   TUDAlignButton = (udLeft, udRight);
  807.   TUDOrientation = (udHorizontal, udVertical);
  808.   TUDBtnType = (btNext, btPrev);
  809.   TUDClickEvent = procedure (Sender: TObject; Button: TUDBtnType) of object;
  810.   TUDChangingEvent = procedure (Sender: TObject; var AllowChange: Boolean) of object;
  811.  
  812.   TCustomUpDown = class(TWinControl)
  813.   protected
  814.     function CanChange: Boolean;
  815.     procedure CreateParams(var Params: TCreateParams); override;
  816.     procedure CreateWnd; override;
  817.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  818.     procedure Click(Button: TUDBtnType); dynamic;
  819.     property AlignButton: TUDAlignButton default udRight;
  820.     property ArrowKeys: Boolean default True;
  821.     property Associate: TWinControl;
  822.     property Min: SmallInt;
  823.     property Max: SmallInt default 100;
  824.     property Increment: Integer default 1;
  825.     property Orientation: TUDOrientation default udVertical;
  826.     property Position: SmallInt;
  827.     property Thousands: Boolean default True;
  828.     property Wrap: Boolean;
  829.     property OnChanging: TUDChangingEvent;
  830.     property OnClick: TUDClickEvent;
  831.   public
  832.     constructor Create(AOwner: TComponent); override;
  833.   end;
  834.  
  835.   TUpDown = class(TCustomUpDown)
  836.   published
  837.     property AlignButton;
  838.     property Associate;
  839.     property ArrowKeys;
  840.     property Enabled;
  841.     property Hint;
  842.     property Min;
  843.     property Max;
  844.     property Increment;
  845.     property Orientation;
  846.     property ParentShowHint;
  847.     property PopupMenu;
  848.     property Position;
  849.     property ShowHint;
  850.     property TabOrder;
  851.     property TabStop;
  852.     property Thousands;
  853.     property Visible;
  854.     property Wrap;
  855.     property OnChanging;
  856.     property OnClick;
  857.     property OnEnter;
  858.     property OnExit;
  859.     property OnMouseDown;
  860.     property OnMouseMove;
  861.     property OnMouseUp;
  862.   end;
  863.  
  864. { THotKey }
  865.  
  866.   THKModifier = (hkShift, hkCtrl, hkAlt, hkExt);
  867.   THKModifiers = set of THKModifier;
  868.   THKInvalidKey = (hcNone, hcShift, hcCtrl, hcAlt, hcShiftCtrl,
  869.     hcShiftAlt, hcCtrlAlt, hcShiftCtrlAlt);
  870.   THKInvalidKeys = set of THKInvalidKey;
  871.  
  872.   TCustomHotKey = class(TWinControl)
  873.   protected
  874.     procedure CreateParams(var Params: TCreateParams); override;
  875.     procedure CreateWnd; override;
  876.     property AutoSize: Boolean default True;
  877.     property InvalidKeys: THKInvalidKeys;
  878.     property Modifiers: THKModifiers;
  879.     property HotKey: TShortCut;
  880.     property TabStop default True;
  881.   public
  882.     constructor Create(AOwner: TComponent); override;
  883.   end;
  884.  
  885.   THotKey = class(TCustomHotKey)
  886.   published
  887.     property AutoSize;
  888.     property Enabled;
  889.     property Hint;
  890.     property HotKey;
  891.     property InvalidKeys;
  892.     property Modifiers;
  893.     property ParentShowHint;
  894.     property PopupMenu;
  895.     property ShowHint;
  896.     property TabOrder;
  897.     property TabStop;
  898.     property Visible;
  899.     property OnEnter;
  900.     property OnExit;
  901.     property OnMouseDown;
  902.     property OnMouseMove;
  903.     property OnMouseUp;
  904.   end;
  905.  
  906. const
  907.   ColumnHeaderWidth = LVSCW_AUTOSIZE_USEHEADER;
  908.   ColumnTextWidth = LVSCW_AUTOSIZE;
  909.  
  910. type
  911.   TListColumns = class;
  912.   TListItems = class;
  913.   TCustomListView = class;
  914.   TWidth = ColumnHeaderWidth..MaxInt;
  915.  
  916.   TListColumn = class(TCollectionItem)
  917.   protected
  918.     procedure DefineProperties(Filer: TFiler); override;
  919.   public
  920.     constructor Create(Collection: TCollection); override;
  921.     destructor Destroy; override;
  922.     procedure Assign(Source: TPersistent); override;
  923.     property WidthType: TWidth;
  924.   published
  925.     property Alignment: TAlignment default taLeftJustify;
  926.     property Caption: string;
  927.     property Width: TWidth default 50;
  928.   end;
  929.  
  930.   TListColumns = class(TCollection)
  931.   protected
  932.     procedure Update(Item: TCollectionItem); override;
  933.   public
  934.     constructor Create(AOwner: TCustomListView);
  935.     function Add: TListColumn;
  936.     property Owner: TCustomListView;
  937.     property Items[Index: Integer]: TListColumn; default;
  938.   end;
  939.  
  940.   TDisplayCode = (drBounds, drIcon, drLabel, drSelectBounds);
  941.  
  942.   { TListItem }
  943.  
  944.   TListItem = class(TPersistent)
  945.   protected
  946.     procedure Assign(Source: TPersistent); override;
  947.   public
  948.     constructor Create(AOwner: TListItems);
  949.     destructor Destroy; override;
  950.     procedure CancelEdit;
  951.     procedure Delete;
  952.     function DisplayRect(Code: TDisplayCode): TRect;
  953.     function EditCaption: Boolean;
  954.     function GetPosition: TPoint;
  955.     procedure MakeVisible(PartialOK: Boolean);
  956.     procedure Update;
  957.     procedure SetPosition(const Value: TPoint);
  958.     property Caption: string;
  959.     property Cut: Boolean index 0;
  960.     property Data: Pointer;
  961.     property DropTarget: Boolean index 1;
  962.     property Focused: Boolean index 2;
  963.     property Handle: HWND;
  964.     property ImageIndex: Integer index 0;
  965.     property Index: Integer;
  966.     property Left: Integer;
  967.     property ListView: TCustomListView;
  968.     property Owner: TListItems;
  969.     property OverlayIndex: Integer index 1;
  970.     property Selected: Boolean index 3;
  971.     property StateIndex: Integer index 2;
  972.     property SubItems: TStrings;
  973.     property Top: Integer;
  974.   end;
  975.  
  976. { TListItems }
  977.  
  978.   TListItems = class(TPersistent)
  979.   protected
  980.     procedure DefineProperties(Filer: TFiler); override;
  981.     function CreateItem(Index: Integer; ListItem: TListItem): TLVItem;
  982.     function GetCount: Integer;
  983.     function GetHandle: HWND;
  984.     function GetItem(Index: Integer): TListItem;
  985.     procedure SetItem(Index: Integer; Value: TListItem);
  986.     procedure SetUpdateState(Updating: Boolean);
  987.   public
  988.     constructor Create(AOwner: TCustomListView);
  989.     destructor Destroy; override;
  990.     function Add: TListItem;
  991.     procedure Assign(Source: TPersistent); override;
  992.     procedure BeginUpdate;
  993.     procedure Clear;
  994.     procedure Delete(Index: Integer);
  995.     procedure EndUpdate;
  996.     function IndexOf(Value: TListItem): Integer;
  997.     function Insert(Index: Integer): TListItem;
  998.     property Count: Integer;
  999.     property Handle: HWND;
  1000.     property Item[Index: Integer]: TListItem; default;
  1001.     property Owner: TCustomListView;
  1002.   end;
  1003.  
  1004.   { TIconOptions }
  1005.   TIconArrangement = (iaTop, iaLeft);
  1006.  
  1007.   TIconOptions = class(TPersistent)
  1008.   public
  1009.     constructor Create(AOwner: TCustomListView);
  1010.   published
  1011.     property Arrangement: TIconArrangement default iaTop;
  1012.     property AutoArrange: Boolean default False;
  1013.     property WrapText: Boolean default True;
  1014.   end;
  1015.  
  1016.   TListArrangement = (arAlignBottom, arAlignLeft, arAlignRight,
  1017.     arAlignTop, arDefault, arSnapToGrid);
  1018.   TViewStyle = (vsIcon, vsSmallIcon, vsList, vsReport);
  1019.   TItemState = (isNone, isCut, isDropHilited, isFocused, isSelected);
  1020.   TItemStates = set of TItemState;
  1021.   TItemChange = (ctText, ctImage, ctState);
  1022.   TLVDeletedEvent = procedure(Sender: TObject; Item: TListItem) of object;
  1023.   TLVEditingEvent = procedure(Sender: TObject; Item: TListItem;
  1024.     var AllowEdit: Boolean) of object;
  1025.   TLVEditedEvent = procedure(Sender: TObject; Item: TListItem; var S: string) of object;
  1026.   TLVChangeEvent = procedure(Sender: TObject; Item: TListItem;
  1027.     Change: TItemChange) of object;
  1028.   TLVChangingEvent = procedure(Sender: TObject; Item: TListItem;
  1029.     Change: TItemChange; var AllowChange: Boolean) of object;
  1030.   TLVColumnClickEvent = procedure(Sender: TObject; Column: TListColumn) of object;
  1031.   TLVCompareEvent = procedure(Sender: TObject; Item1, Item2: TListItem;
  1032.     Data: Integer; var Compare: Integer) of object;
  1033.   TSearchDirection = (sdLeft, sdRight, sdAbove, sdBelow, sdAll);
  1034.  
  1035.   { TCustomListView }
  1036.   TCustomListView = class(TWinControl)
  1037.   protected
  1038.     function CanChange(Item: TListItem; Change: Integer): Boolean; dynamic;
  1039.     function CanEdit(Item: TListItem): Boolean; dynamic;
  1040.     procedure Change(Item: TListItem; Change: Integer); dynamic;
  1041.     procedure ColClick(Column: TListColumn); dynamic;
  1042.     function ColumnsShowing: Boolean;
  1043.     function CreateListItem: TListItem; virtual;
  1044.     procedure CreateParams(var Params: TCreateParams); override;
  1045.     procedure CreateWnd; override;
  1046.     procedure Delete(Item: TListItem); dynamic;
  1047.     procedure DestroyWnd; override;
  1048.     procedure DoEndDrag(Target: TObject; X, Y: Integer); dynamic;
  1049.     procedure DoStartDrag(var DragObject: TDragObject); override;
  1050.     procedure Edit(const Item: TLVItem); dynamic;
  1051.     function GetDragImages: TCustomImageList; override;
  1052.     function GetItemIndex(Value: TListItem): Integer;
  1053.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  1054.     procedure UpdateColumn(Index: Integer);
  1055.     procedure UpdateColumns;
  1056.     procedure WndProc(var Message: TMessage); override;
  1057.     property BorderStyle: TBorderStyle default bsSingle;
  1058.     property Columns: TListColumns;
  1059.     property ColumnClick: Boolean default True;
  1060.     property ReadOnly: Boolean;
  1061.     property HideSelection: Boolean default True;
  1062.     property IconOptions: TIconOptions;
  1063.     property Items: TListItems;
  1064.     property AllocBy: Integer default 0;
  1065.     property LargeImages: TImageList;
  1066.     property MultiSelect: Boolean default False;
  1067.     property OnChange: TLVChangeEvent;
  1068.     property OnChanging: TLVChangingEvent;
  1069.     property OnColumnClick: TLVColumnClickEvent;
  1070.     property OnCompare: TLVCompareEvent;
  1071.     property OnDeletion: TLVDeletedEvent;
  1072.     property OnEdited: TLVEditedEvent;
  1073.     property OnEditing: TLVEditingEvent;
  1074.     property OnInsert: TLVDeletedEvent;
  1075.     property ShowColumnHeaders: Boolean default True;
  1076.     property SmallImages: TImageList;
  1077.     property SortType: TSortType default stNone;
  1078.     property StateImages: TImageList;
  1079.     property ViewStyle: TViewStyle default vsIcon;
  1080.   public
  1081.     constructor Create(AOwner: TComponent); override;
  1082.     destructor Destroy; override;
  1083.     function AlphaSort: Boolean;
  1084.     procedure Arrange(Code: TListArrangement);
  1085.     function FindCaption(StartIndex: Integer; Value: string;
  1086.       Partial, Inclusive, Wrap: Boolean): TListItem;
  1087.     function FindData(StartIndex: Integer; Value: Pointer;
  1088.       Inclusive, Wrap: Boolean): TListItem;
  1089.     function GetItemAt(X, Y: Integer): TListItem;
  1090.     function GetNearestItem(Point: TPoint;
  1091.       Direction: TSearchDirection): TListItem;
  1092.     function GetNextItem(StartItem: TListItem;
  1093.       Direction: TSearchDirection; States: TItemStates): TListItem;
  1094.     function GetSearchString: string;
  1095.     function IsEditing: Boolean;
  1096.     procedure Scroll(DX, DY: Integer);
  1097.     property Column[Index: Integer]: TListColumn;
  1098.     property DropTarget: TListItem;
  1099.     property ItemFocused: TListItem;
  1100.     property SelCount: Integer;
  1101.     property Selected: TListItem;
  1102.     function CustomSort(SortProc: TLVCompare; lParam: Longint): Boolean;
  1103.     function StringWidth(S: string): Integer;
  1104.     procedure UpdateItems(FirstIndex, LastIndex: Integer);
  1105.     property TopItem: TListItem;
  1106.     property ViewOrigin: TPoint;
  1107.     property VisibleRowCount: Integer;
  1108.     property BoundingRect: TRect;
  1109.   end;
  1110.  
  1111.   { TListView }
  1112.   TListView = class(TCustomListView)
  1113.   published
  1114.     property Align;
  1115.     property BorderStyle;
  1116.     property Color;
  1117.     property ColumnClick;
  1118.     property OnClick;
  1119.     property OnDblClick;
  1120.     property Columns;
  1121.     property Ctl3D;
  1122.     property DragMode;
  1123.     property ReadOnly;
  1124.     property Font;
  1125.     property HideSelection;
  1126.     property IconOptions;
  1127.     property Items;
  1128.     property AllocBy;
  1129.     property MultiSelect;
  1130.     property OnChange;
  1131.     property OnChanging;
  1132.     property OnColumnClick;
  1133.     property OnCompare;
  1134.     property OnDeletion;
  1135.     property OnEdited;
  1136.     property OnEditing;
  1137.     property OnEnter;
  1138.     property OnExit;
  1139.     property OnInsert;
  1140.     property OnDragDrop;
  1141.     property OnDragOver;
  1142.     property DragCursor;
  1143.     property OnStartDrag;
  1144.     property OnEndDrag;
  1145.     property OnMouseDown;
  1146.     property OnMouseMove;
  1147.     property OnMouseUp;
  1148.     property ParentShowHint;
  1149.     property ShowHint;
  1150.     property PopupMenu;
  1151.     property ShowColumnHeaders;
  1152.     property SortType;
  1153.     property TabOrder;
  1154.     property TabStop default True;
  1155.     property ViewStyle;
  1156.     property Visible;
  1157.     property OnKeyDown;
  1158.     property OnKeyPress;
  1159.     property OnKeyUp;
  1160.     property LargeImages;
  1161.     property SmallImages;
  1162.     property StateImages;
  1163.   end;
  1164.  
  1165. implementation
  1166.