home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sibylft1.zip / DOC.DAT / DOC / SPCC / COMCTRLS.PAS < prev    next >
Pascal/Delphi Source File  |  1997-04-07  |  22KB  |  534 lines

  1. {╔══════════════════════════════════════════════════════════════════════════╗
  2.  ║                                                                          ║
  3.  ║     Sibyl Portable Component Classes                                     ║
  4.  ║                                                                          ║
  5.  ║     Copyright (c) 1995,97 SpeedSoft Germany,   All rights reserved.      ║
  6.  ║                                                                          ║
  7.  ╚══════════════════════════════════════════════════════════════════════════╝}
  8.  
  9. UNIT ComCtrls;
  10.  
  11.  
  12. INTERFACE
  13.  
  14. USES Messages,Classes,Forms,Graphics,Buttons,ExtCtrls,Dos;
  15.  
  16. TYPE
  17.     {$M+}
  18.     TProgressString=(psPercent,psCaption,psPosition);
  19.     TProgressOrigin=(poLeft,poRight,poBottom,poTop);
  20.     {$M-}
  21.  
  22.     TProgressBar=CLASS(TControl)
  23.       PRIVATE
  24.          FBorderStyle:TBorderStyle;
  25.          FInterior:TRect;
  26.          FMin:LONGINT;
  27.          FMax:LONGINT;
  28.          FPosition:LONGINT;
  29.          FBitmap:TBitmap;
  30.          FProgressString:TProgressString;
  31.          FOrigin:TProgressOrigin;
  32.          FOnChange:TNotifyEvent;
  33.          PROCEDURE CMTextChanged(VAR Msg:TMessage);message CM_TEXTCHANGED;
  34.          PROCEDURE SetBorderStyle(bs:TBorderStyle);
  35.          PROCEDURE SetMin(lr:LONGINT);
  36.          PROCEDURE SetMax(hr:LONGINT);
  37.          PROCEDURE SetPosition(ps:LONGINT);
  38.          PROCEDURE SetProgressString(ps:TProgressString);
  39.          PROCEDURE SetBitmap(NewBitmap:TBitmap);
  40.          FUNCTION GetBitmap:TBitmap;
  41.          PROCEDURE SetOrigin(NewOrigin:TProgressOrigin);
  42.          PROCEDURE DrawInterior(CONST rec:TRect);
  43.       PROTECTED
  44.          PROCEDURE SetupComponent;OVERRIDE;
  45.          PROCEDURE SetupShow;OVERRIDE;
  46.          PROCEDURE Change;VIRTUAL;
  47.       PUBLIC
  48.          PROCEDURE Redraw(CONST rec:TRect);OVERRIDE;
  49.          DESTRUCTOR Destroy;OVERRIDE;
  50.          PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
  51.          FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
  52.          PROPERTY XAlign;
  53.          PROPERTY XStretch;
  54.          PROPERTY YAlign;
  55.          PROPERTY YStretch;
  56.       PUBLISHED
  57.          PROPERTY Align;
  58.          PROPERTY Color;
  59.          PROPERTY Bitmap:TBitmap read GetBitmap write SetBitmap;
  60.          PROPERTY BorderStyle:TBorderStyle read FBorderStyle write SetBorderStyle;
  61.          PROPERTY Caption;
  62.          PROPERTY PenColor;
  63.          PROPERTY DragCursor;
  64.          PROPERTY DragMode;
  65.          PROPERTY Enabled;
  66.          PROPERTY Font;
  67.          PROPERTY Max:LONGINT read FMax write SetMax;
  68.          PROPERTY Min:LONGINT read FMin write SetMin;
  69.          PROPERTY Origin:TProgressOrigin read FOrigin write SetOrigin;
  70.          PROPERTY ParentColor;
  71.          PROPERTY ParentPenColor;
  72.          PROPERTY ParentFont;
  73.          PROPERTY ParentShowHint;
  74.          PROPERTY ProgressString:TProgressString read FProgressString write SetProgressString;
  75.          PROPERTY Position:LONGINT read FPosition write SetPosition;
  76.          PROPERTY ShowHint;
  77.          PROPERTY TabOrder;
  78.          PROPERTY TabStop;
  79.          PROPERTY Visible;
  80.          PROPERTY ZOrder;
  81.  
  82.          PROPERTY OnCanDrag;
  83.          PROPERTY OnChange:TNotifyEvent read FOnChange write FOnChange;
  84.          PROPERTY OnDragDrop;
  85.          PROPERTY OnDragOver;
  86.          PROPERTY OnEndDrag;
  87.          PROPERTY OnEnter;
  88.          PROPERTY OnExit;
  89.          PROPERTY OnFontChange;
  90.          PROPERTY OnMouseClick;
  91.          PROPERTY OnMouseDblClick;
  92.          PROPERTY OnMouseDown;
  93.          PROPERTY OnMouseMove;
  94.          PROPERTY OnMouseUp;
  95.          PROPERTY OnSetupShow;
  96.          PROPERTY OnStartDrag;
  97.     END;
  98.  
  99.  
  100.     {$M+}
  101.     TUDOrientation=(udHorizontal,udVertical);
  102.     TUDAlignButton=(udLeft,udRight,udBottom,udTop,udNone);
  103.     TUDBtnType=(btNext,btPrev);
  104.  
  105.     TOnUDChangingEvent=PROCEDURE(Sender:TComponent;VAR AllowChange:BOOLEAN) OF OBJECT;
  106.     TOnUDClickEvent=PROCEDURE(Sender:TComponent;Button:TUDBtnType) OF OBJECT;
  107.     {$M-}
  108.  
  109.     TUpDown=CLASS(TControl)
  110.       PRIVATE
  111.          FArrowKeys:BOOLEAN;
  112.          FIncrement:LONGINT;
  113.          FMin:LONGINT;
  114.          FMax:LONGINT;
  115.          FOrientation:TUDOrientation;
  116.          FPosition:LONGINT;
  117.          FThousands:BOOLEAN;
  118.          FWrap:BOOLEAN;
  119.          FAssociate:TControl;
  120.          FAlignButton:TUDAlignButton;
  121.          FUpRightButton:TSpeedButton;
  122.          FDownLeftButton:TSpeedButton;
  123.          FOnChanging:TOnUDChangingEvent;
  124.          FOnClick:TOnUDClickEvent;
  125.          PROCEDURE SetAssociate(NewControl:TControl);
  126.          PROCEDURE SetMin(NewValue:LONGINT);
  127.          PROCEDURE SetMax(NewValue:LONGINT);
  128.          PROCEDURE SetOrientation(NewValue:TUDOrientation);
  129.          PROCEDURE SetPosition(NewValue:LONGINT);
  130.          PROCEDURE SetAlignButton(NewValue:TUDAlignButton);
  131.          PROCEDURE AlignButtons;
  132.          PROCEDURE EvButtonClick(Sender:TObject);
  133.       PROTECTED
  134.          PROCEDURE SetupComponent;OVERRIDE;
  135.          PROCEDURE SetupShow;OVERRIDE;
  136.          PROCEDURE Resize;OVERRIDE;
  137.          FUNCTION CanChange:BOOLEAN;VIRTUAL;
  138.          PROCEDURE Click(Button:TUDBtnType);VIRTUAL;
  139.          PROCEDURE Notification(AComponent:TComponent;Operation:TOperation);OVERRIDE;
  140.       PUBLIC
  141.          PROPERTY XAlign;
  142.          PROPERTY XStretch;
  143.          PROPERTY YAlign;
  144.          PROPERTY YStretch;
  145.       PUBLISHED
  146.          PROPERTY Align;
  147.          PROPERTY AlignButton:TUDAlignButton read FAlignButton write SetAlignButton;
  148.          PROPERTY ArrowKeys:BOOLEAN read FArrowKeys write FArrowKeys;
  149.          PROPERTY Associate:TControl read FAssociate write SetAssociate;
  150.          PROPERTY PenColor;
  151.          PROPERTY DragCursor;
  152.          PROPERTY DragMode;
  153.          PROPERTY Enabled;
  154.          PROPERTY Increment:LONGINT read FIncrement write FIncrement;
  155.          PROPERTY Max:LONGINT read FMax write SetMax;
  156.          PROPERTY Min:LONGINT read FMin write SetMin;
  157.          PROPERTY Orientation:TUDOrientation read FOrientation write SetOrientation;
  158.          PROPERTY ParentColor;
  159.          PROPERTY ParentPenColor;
  160.          PROPERTY ParentShowHint;
  161.          PROPERTY Position:LONGINT read FPosition write SetPosition;
  162.          PROPERTY ShowHint;
  163.          PROPERTY TabOrder;
  164.          PROPERTY TabStop;
  165.          PROPERTY Thousands:BOOLEAN read FThousands write FThousands;
  166.          PROPERTY Visible;
  167.          PROPERTY Wrap:BOOLEAN read FWrap write FWrap;
  168.          PROPERTY ZOrder;
  169.  
  170.          PROPERTY OnCanDrag;
  171.          PROPERTY OnChanging:TOnUDChangingEvent read FOnChanging write FOnChanging;
  172.          PROPERTY OnClick:TOnUDClickEvent read FOnClick write FOnClick;
  173.          PROPERTY OnDragDrop;
  174.          PROPERTY OnDragOver;
  175.          PROPERTY OnEndDrag;
  176.          PROPERTY OnEnter;
  177.          PROPERTY OnExit;
  178.          PROPERTY OnMouseMove;
  179.          PROPERTY OnScan;
  180.          PROPERTY OnSetupShow;
  181.          PROPERTY OnStartDrag;
  182.     END;
  183.  
  184.  
  185.     {$M+}
  186.     TTrackBarOrientation=(trHorizontal,trVertical);
  187.     TTickMarks=(tmBoth,tmBottomRight,tmTopLeft);
  188.     TTickStyle=(tsAuto,tsManual,tsNone);
  189.     TTrackBarSelMode=(smManual,smAuto);
  190.     TTrackSliderShape=(tsArrow,tsBox);
  191.     TTrackSliderSize=(tssAuto,tssVeryLarge,tssLarge,tssMedium,tssSmall);
  192.     {$M-}
  193.  
  194.     TTrackBar=CLASS(TControl)
  195.       PRIVATE
  196.          FPosition:LONGINT;
  197.          FLineSize:LONGINT;
  198.          FPageSize:LONGINT;
  199.          FMax:LONGINT;
  200.          FMin:LONGINT;
  201.          FOrientation:TTrackBarOrientation;
  202.          FSelEnd:LONGINT;
  203.          FSelStart:LONGINT;
  204.          FTickMarks:TTickMarks;
  205.          FTickStyle:TTickStyle;
  206.          FFrequency:LONGINT;
  207.          FTracking:BOOLEAN;
  208.          FSelMode:TTrackBarSelMode;
  209.          FTickSize:LONGINT;
  210.          FTrackTimer:TTimer;
  211.          FSliderShape:TTrackSliderShape;
  212.          FOnChange:TNotifyEvent;
  213.          FTicks:TList;
  214.          FUpdating:BOOLEAN;
  215.          FShowFocusRect:BOOLEAN;
  216.          FSliderSize:TTrackSliderSize;
  217.          PROCEDURE SetMax(NewValue:LONGINT);
  218.          PROCEDURE SetMin(NewValue:LONGINT);
  219.          PROCEDURE SetOrientation(NewValue:TTrackBarOrientation);
  220.          PROCEDURE SetPosition(NewValue:LONGINT);
  221.          PROCEDURE SetSelEnd(NewValue:LONGINT);
  222.          PROCEDURE SetSelStart(NewValue:LONGINT);
  223.          PROCEDURE SetTickMarks(NewValue:TTickMarks);
  224.          PROCEDURE SetTickStyle(NewValue:TTickStyle);
  225.          PROCEDURE SetFrequency(NewValue:LONGINT);
  226.          PROCEDURE SetSliderSize(NewSize:TTrackSliderSize);
  227.          PROCEDURE SetSelMode(NewMode:TTrackBarSelMode);
  228.          PROCEDURE DrawTrack(SliderW,SliderH:LONGINT);
  229.          PROCEDURE DrawSlider(SliderW,SliderH:LONGINT);
  230.          PROCEDURE GetSliderExtent(VAR SliderWidth,SliderHeight:LONGINT);
  231.          FUNCTION PosInsideSlider(X,Y:LONGINT):BOOLEAN;
  232.          FUNCTION PosInsideTrack(X,Y:LONGINT):BOOLEAN;
  233.          PROCEDURE UpdateSlider;
  234.          PROCEDURE EvTimer(Sender:TObject);
  235.       PROTECTED
  236.          PROCEDURE SetupComponent;OVERRIDE;
  237.          PROCEDURE MouseDown(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  238.          PROCEDURE MouseUp(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  239.          PROCEDURE MouseMove(ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  240.          PROCEDURE MouseClick(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  241.          PROCEDURE SetFocus;OVERRIDE;
  242.          PROCEDURE KillFocus;OVERRIDE;
  243.          PROCEDURE ScanEvent(VAR Msg:TWMChar;VAR KeyCode:TKeyCode;RepeatCount:BYTE);OVERRIDE;
  244.          PROCEDURE Change;VIRTUAL;
  245.       PUBLIC
  246.          DESTRUCTOR Destroy;OVERRIDE;
  247.          PROCEDURE Redraw(CONST rec:TRect);OVERRIDE;
  248.          FUNCTION CoordFromPos(Position:LONGINT):LONGINT;
  249.          FUNCTION PosFromCoord(Coord:LONGINT):LONGINT;
  250.          PROCEDURE SetTick(Pos:LONGINT);
  251.          PROCEDURE ClearTicks;
  252.          PROCEDURE BeginUpdate;
  253.          PROCEDURE EndUpdate;
  254.          PROPERTY Tracking:Boolean read FTracking;
  255.          PROPERTY XAlign;
  256.          PROPERTY XStretch;
  257.          PROPERTY YAlign;
  258.          PROPERTY YStretch;
  259.       PUBLISHED
  260.          PROPERTY Align;
  261.          PROPERTY Color;
  262.          PROPERTY DragCursor;
  263.          PROPERTY DragMode;
  264.          PROPERTY Enabled;
  265.          PROPERTY Frequency:LONGINT read FFrequency write SetFrequency;
  266.          PROPERTY LineSize:LONGINT read FLineSize write FLineSize;
  267.          PROPERTY Max:LONGINT read FMax write SetMax;
  268.          PROPERTY Min:LONGINT read FMin write SetMin;
  269.          PROPERTY Orientation:TTrackBarOrientation read FOrientation write SetOrientation;
  270.          PROPERTY PageSize:LONGINT read FPageSize write FPageSize;
  271.          PROPERTY ParentColor;
  272.          PROPERTY ParentShowHint;
  273.          PROPERTY PopupMenu;
  274.          PROPERTY Position:LONGINT read FPosition write SetPosition;
  275.          PROPERTY SelEnd:LONGINT read FSelEnd write SetSelEnd;
  276.          PROPERTY SelMode:TTrackBarSelMode read FSelMode write SetSelMode;
  277.          PROPERTY SelStart:LONGINT read FSelStart write SetSelStart;
  278.          PROPERTY ShowFocusRect:BOOLEAN read FShowFocusRect write FShowFocusRect;
  279.          PROPERTY ShowHint;
  280.          PROPERTY SliderSize:TTrackSliderSize read FSliderSize write SetSliderSize;
  281.          PROPERTY TabOrder;
  282.          PROPERTY TabStop;
  283.          PROPERTY TickMarks:TTickMarks read FTickMarks write SetTickMarks;
  284.          PROPERTY TickStyle:TTickStyle read FTickStyle write SetTickStyle;
  285.          PROPERTY Visible;
  286.          PROPERTY ZOrder;
  287.  
  288.          PROPERTY OnCanDrag;
  289.          PROPERTY OnChange:TNotifyEvent read FOnChange write FOnChange;
  290.          PROPERTY OnDragDrop;
  291.          PROPERTY OnDragOver;
  292.          PROPERTY OnEndDrag;
  293.          PROPERTY OnEnter;
  294.          PROPERTY OnExit;
  295.          PROPERTY OnMouseClick;
  296.          PROPERTY OnMouseDblClick;
  297.          PROPERTY OnMouseDown;
  298.          PROPERTY OnMouseMove;
  299.          PROPERTY OnMouseUp;
  300.          PROPERTY OnScan;
  301.          PROPERTY OnSetupShow;
  302.          PROPERTY OnStartDrag;
  303.     END;
  304.  
  305.     {$M+}
  306.     TStatusPanelStyle=(psText, psOwnerDraw);
  307.     TStatusPanelBevel=(pbNone, pbLowered, pbRaised);
  308.     {$M-}
  309.  
  310.     TStatusPanel=CLASS(TCollectionItem)
  311.       PRIVATE
  312.          FText:PString;
  313.          FWidth:LONGINT;
  314.          FAlignment:TAlignment;
  315.          FBevel:TStatusPanelBevel;
  316.          FStyle:TStatusPanelStyle;
  317.       PRIVATE
  318.          FUNCTION GetText:STRING;
  319.          PROCEDURE SetText(CONST NewValue:STRING);
  320.          PROCEDURE SetWidth(NewValue:LONGINT);
  321.          PROCEDURE SetAlignment(NewValue:TAlignment);
  322.          PROCEDURE SetBevel(NewValue:TStatusPanelBevel);
  323.          PROCEDURE SetStyle(NewValue:TStatusPanelStyle);
  324.       PUBLIC
  325.          CONSTRUCTOR Create(ACollection:TCollection);OVERRIDE;
  326.          DESTRUCTOR Destroy;OVERRIDE;
  327.          PROCEDURE Assign(Source:TCollectionItem);OVERRIDE;
  328.       PUBLISHED
  329.          PROPERTY Text:STRING read GetText write SetText;
  330.          PROPERTY Width:LONGINT read FWidth write SetWidth;
  331.          PROPERTY Alignment:TAlignment read FAlignment write SetAlignment;
  332.          PROPERTY Bevel:TStatusPanelBevel read FBevel write SetBevel;
  333.          PROPERTY Style:TStatusPanelStyle read FStyle write SetStyle;
  334.     END;
  335.  
  336.     TStatusBar=CLASS;
  337.  
  338.     TStatusPanels=CLASS(TCollection)
  339.       PRIVATE
  340.          FStatusBar:TStatusBar;
  341.          FUNCTION GetItem(Index:LONGINT):TStatusPanel;
  342.          PROCEDURE SetItem(Index:LONGINT;Value:TStatusPanel);
  343.       PUBLIC
  344.          PROCEDURE Update(Item:TCollectionItem);OVERRIDE;
  345.          PROCEDURE SetupComponent;OVERRIDE;
  346.          FUNCTION Add:TStatusPanel;
  347.       PUBLIC
  348.          PROPERTY Items[Index:LONGINT]:TStatusPanel read GetItem write SetItem;default;
  349.          PROPERTY StatusBar:TStatusBar read FStatusBar;
  350.     END;
  351.  
  352.     {$M+}
  353.     TDrawPanelEvent=PROCEDURE(StatusBar:TStatusBar;Panel:TStatusPanel;CONST rc:TRect) OF OBJECT;
  354.     {$M-}
  355.  
  356.     TStatusBar=CLASS(TBevel)
  357.       PRIVATE
  358.          FSimpleText:STRING;
  359.          FSimplePanel:BOOLEAN;
  360.          FPanels:TStatusPanels;
  361.          FSizeGrip:BOOLEAN;
  362.          FOnDrawPanel:TDrawPanelEvent;
  363.          FSpacing:LONGINT;
  364.          FOnClick:TNotifyEvent;
  365.          PROCEDURE SetSimpleText(CONST NewText:STRING);
  366.          PROCEDURE SetSimplePanel(NewValue:BOOLEAN);
  367.          PROCEDURE SetPanels(NewValue:TStatusPanels);
  368.          PROCEDURE SetSizeGrip(NewValue:BOOLEAN);
  369.          PROCEDURE UpdatePanel(Panel:TStatusPanel);
  370.          PROCEDURE SetSpacing(NewValue:LONGINT);
  371.          PROPERTY Shape;
  372.       PROTECTED
  373.          PROCEDURE SetupComponent;OVERRIDE;
  374.          DESTRUCTOR Destroy;OVERRIDE;
  375.          PROCEDURE DrawPanel(Panel:TStatusPanel;CONST rc:TRect);VIRTUAL;
  376.          PROCEDURE MouseClick(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  377.       PUBLIC
  378.          PROCEDURE Redraw(CONST rec:TRect);OVERRIDE;
  379.          PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
  380.          FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
  381.       PUBLISHED
  382.          PROPERTY OnClick:TNotifyEvent read FOnClick write FOnClick;
  383.          PROPERTY OnDblClick;
  384.          PROPERTY Panels:TStatusPanels read FPanels write SetPanels;
  385.          PROPERTY SimpleText:STRING read FSimpleText write SetSimpleText;
  386.          PROPERTY SimplePanel:BOOLEAN read FSimplePanel write SetSimplePanel;
  387.          PROPERTY SizeGrip:BOOLEAN read FSizeGrip write SetSizeGrip;
  388.          PROPERTY OnDrawPanel:TDrawPanelEvent read FOnDrawPanel write FOnDrawPanel;
  389.          PROPERTY Spacing:LONGINT read FSpacing write SetSpacing;
  390.     END;
  391.  
  392.     THeaderControl=CLASS;
  393.  
  394.     {$M+}
  395.     THeaderSectionStyle=(hsText,hsOwnerDraw);
  396.     {$M-}
  397.  
  398.     THeaderSection=CLASS(TCollectionItem)
  399.       PRIVATE
  400.          FText:PString;
  401.          FWidth:LONGINT;
  402.          FMinWidth:LONGINT;
  403.          FMaxWidth:LONGINT;
  404.          FAlignment:TAlignment;
  405.          FStyle:THeaderSectionStyle;
  406.          FAllowClick:BOOLEAN;
  407.          FAllowSize:BOOLEAN;
  408.       PRIVATE
  409.          FUNCTION GetText:STRING;
  410.          PROCEDURE SetText(CONST NewValue:STRING);
  411.          PROCEDURE SetWidth(NewValue:LONGINT);
  412.          FUNCTION GetLeft:LONGINT;
  413.          FUNCTION GetRight:LONGINT;
  414.          PROCEDURE SetStyle(NewValue:THeaderSectionStyle);
  415.          PROCEDURE SetAlignment(NewValue:TAlignment);
  416.          PROCEDURE SetMaxWidth(NewValue:LONGINT);
  417.          PROCEDURE SetMinWidth(NewValue:LONGINT);
  418.       PUBLIC
  419.          CONSTRUCTOR Create(ACollection:TCollection);OVERRIDE;
  420.          DESTRUCTOR Destroy;OVERRIDE;
  421.          PROCEDURE Assign(Source:TCollectionItem);OVERRIDE;
  422.       PUBLIC
  423.          PROPERTY Left:LONGINT read GetLeft;
  424.          PROPERTY Right:LONGINT read GetRight;
  425.       PUBLISHED
  426.          PROPERTY Text:STRING read GetText write SetText;
  427.          PROPERTY Width:LONGINT read FWidth write SetWidth;
  428.          PROPERTY MinWidth:LONGINT read FMinWidth write SetMinWidth;
  429.          PROPERTY MaxWidth:LONGINT read FMaxWidth write SetMaxWidth;
  430.          PROPERTY Alignment:TAlignment read FAlignment write SetAlignment;
  431.          PROPERTY AllowClick:BOOLEAN read FAllowClick write FAllowClick;
  432.          PROPERTY AllowSize:BOOLEAN read FAllowSize write FAllowSize;
  433.          PROPERTY Style:THeaderSectionStyle read FStyle write SetStyle;
  434.     END;
  435.  
  436.     THeaderSections=CLASS(TCollection)
  437.       PRIVATE
  438.          FHeaderControl:THeaderControl;
  439.          FUNCTION GetItem(Index:LONGINT):THeaderSection;
  440.          PROCEDURE SetItem(Index:LONGINT;NewValue:THeaderSection);
  441.       PUBLIC
  442.          PROCEDURE Update(Item:TCollectionItem);OVERRIDE;
  443.          PROCEDURE SetupComponent;OVERRIDE;
  444.          FUNCTION Add:THeaderSection;
  445.       PUBLIC
  446.          PROPERTY Items[Index:LONGINT]:THeaderSection read GetItem write SetItem;default;
  447.          PROPERTY HeaderControl:THeaderControl read FHeaderControl;
  448.     END;
  449.  
  450.     {$M+}
  451.     TSectionTrackState=(tsTrackBegin,tsTrackMove,tsTrackEnd);
  452.  
  453.     TSectionNotifyEvent=PROCEDURE(HeaderControl:THeaderControl;Section:THeaderSection) OF OBJECT;
  454.     TDrawSectionEvent=PROCEDURE(HeaderControl:THeaderControl;Section:THeaderSection;
  455.                                 CONST rc:TRect;Pressed:BOOLEAN) OF OBJECT;
  456.     TSectionTrackEvent=PROCEDURE(HeaderControl:THeaderControl;Section:THeaderSection;
  457.                                  Width:LONGINT;State:TSectionTrackState) OF OBJECT;
  458.  
  459.     THeaderControl=CLASS(TControl)
  460.       PRIVATE
  461.          FSections:THeaderSections;
  462.          FSpacing:LONGINT;
  463.          FOnDrawSection:TDrawSectionEvent;
  464.          FOnSectionClick:TSectionNotifyEvent;
  465.          FOnSectionResize:TSectionNotifyEvent;
  466.          FOnSectionTrack:TSectionTrackEvent;
  467.          FSectionTrackState:TSectionTrackState;
  468.          FClickSection:THeaderSection;
  469.          FClickBase:THeaderSection;
  470.          FSizeStartX:LONGINT;
  471.          FSizeX:LONGINT;
  472.          FSizeSection:THeaderSection;
  473.          FBevelWidth:LONGINT;
  474.          FShape:TCursor;
  475.       PRIVATE
  476.          PROCEDURE SetSections(NewValue:THeaderSections);
  477.          PROCEDURE UpdateHeader(Header:THeaderSection);
  478.          PROCEDURE SetSpacing(NewValue:LONGINT);
  479.          PROCEDURE SetBevelWidth(NewValue:LONGINT);
  480.          FUNCTION GetMouseHeader(X,Y:LONGINT):THeaderSection;
  481.       PROTECTED
  482.          PROCEDURE DrawSection(Section:THeaderSection;CONST rc:TRect;Pressed:BOOLEAN);VIRTUAL;
  483.          PROCEDURE SectionClick(Section:THeaderSection);VIRTUAL;
  484.          PROCEDURE SectionResize(Section:THeaderSection);VIRTUAL;
  485.          PROCEDURE SectionTrack(Section:THeaderSection;Width:LONGINT;State:TSectionTrackState);VIRTUAL;
  486.          PROCEDURE SetupComponent;OVERRIDE;
  487.          DESTRUCTOR Destroy;OVERRIDE;
  488.          PROCEDURE MouseDown(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  489.          PROCEDURE MouseUp(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  490.          PROCEDURE MouseMove(ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  491.          PROCEDURE MouseDblClick(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  492.       PUBLIC
  493.          PROCEDURE Redraw(CONST rec:TRect);OVERRIDE;
  494.          PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
  495.          FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
  496.       PUBLISHED
  497.          PROPERTY Align;
  498.          PROPERTY BevelWidth:LONGINT read FBevelWidth write SetBevelWidth;
  499.          PROPERTY Canvas;
  500.          PROPERTY DragCursor;
  501.          PROPERTY DragMode;
  502.          PROPERTY Enabled;
  503.          PROPERTY Font;
  504.          PROPERTY Sections:THeaderSections read FSections write SetSections;
  505.          PROPERTY ShowHint;
  506.          PROPERTY ParentFont;
  507.          PROPERTY ParentShowHint;
  508.          PROPERTY PopupMenu;
  509.          PROPERTY Spacing:LONGINT read FSpacing write SetSpacing;
  510.          PROPERTY TabOrder;
  511.          PROPERTY TabStop;
  512.          PROPERTY OnDragDrop;
  513.          PROPERTY OnDragOver;
  514.          PROPERTY OnStartDrag;
  515.          PROPERTY OnEndDrag;
  516.          PROPERTY OnMouseDown;
  517.          PROPERTY OnMouseMove;
  518.          PROPERTY OnMouseUp;
  519.          PROPERTY OnSectionClick:TSectionNotifyEvent read FOnSectionClick write FOnSectionClick;
  520.          PROPERTY OnDrawSection:TDrawSectionEvent read FOnDrawSection write FOnDrawSection;
  521.          PROPERTY OnSectionResize:TSectionNotifyEvent read FOnSectionResize write FOnSectionResize;
  522.          PROPERTY OnSectionTrack:TSectionTrackEvent read FOnSectionTrack write FOnSectionTrack;
  523.     END;
  524.  
  525. FUNCTION InsertProgressBar(Parent:TControl;Left,Bottom,Width,Height:LONGINT):TProgressBar;
  526. FUNCTION InsertUpDown(Parent:TControl;Left,Bottom,Width,Height:LONGINT):TUpDown;
  527. FUNCTION InsertTrackBar(Parent:TControl;Left,Bottom,Width,Height:LONGINT):TTrackBar;
  528. FUNCTION InsertStatusBar(Parent:TControl;Left,Bottom,Width,Height:LONGINT):TStatusBar;
  529. FUNCTION InsertHeaderControl(Parent:TControl;Left,Bottom,Width,Height:LONGINT):THeaderControl;
  530.  
  531. IMPLEMENTATION
  532.  
  533.  
  534.