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

  1.  
  2. {╔══════════════════════════════════════════════════════════════════════════╗
  3.  ║                                                                          ║
  4.  ║     Sibyl Portable Component Classes                                     ║
  5.  ║                                                                          ║
  6.  ║     Copyright (c) 1995,97 SpeedSoft Germany,   All rights reserved.      ║
  7.  ║                                                                          ║
  8.  ╚══════════════════════════════════════════════════════════════════════════╝}
  9.  
  10. UNIT TabCtrls;
  11.  
  12. INTERFACE
  13.  
  14. USES Messages,SysUtils,Classes,Forms,Buttons,StdCtrls,ExtCtrls,Dialogs;
  15.  
  16. {$i StdBmpId.Inc}
  17.  
  18. TYPE
  19.     {$M+}
  20.     TTabStyle=(tsStandard,tsOwnerDraw);
  21.  
  22.     TTabAlignment=(taBottom,taTop);
  23.     {$M-}
  24.  
  25.     TTabSet=CLASS;
  26.  
  27.     TTabChangeEvent=PROCEDURE(Sender:TObject;NewTab:LONGINT;
  28.          VAR AllowChange:BOOLEAN) OF OBJECT;
  29.     TMeasureTabEvent=PROCEDURE(Sender:TObject;Index:LONGINT;
  30.          VAR TabSize:LONGINT) OF OBJECT;
  31.     TDrawTabEvent=PROCEDURE(Sender:TObject;TabCanvas:TCanvas;rec:TRect;
  32.          Index:LONGINT;Selected:BOOLEAN) OF OBJECT;
  33.  
  34.     TTabSet=CLASS(TControl)
  35.       PRIVATE
  36.          FTabs:TStrings;
  37.          FTabPositions:TList;
  38.          FTabStyle:TTabStyle;
  39.          FTabIndex:LONGINT;
  40.          FTabHeight:LONGINT;
  41.          FFirstIndex:LONGINT;
  42.          FAutoScroll:BOOLEAN;
  43.          FAlignment:TTabAlignment;
  44.          FSelectedColor:TColor;
  45.          FUnSelectedColor:TColor;
  46.          FDitherBackground:BOOLEAN;
  47.          FStartMargin:LONGINT;
  48.          FEndMargin:LONGINT;
  49.          FVisibleTabs:LONGINT;
  50.          FLeftScroll:TSpeedButton;
  51.          FRightScroll:TSpeedButton;
  52.          FTabFocus:LONGINT;
  53.          FOnClick:TNotifyEvent;
  54.          FOnChange:TTabChangeEvent;
  55.          FOnMeasureTab:TMeasureTabEvent;
  56.          FOnDrawTab:TDrawTabEvent;
  57.          PROCEDURE SetTabs(Value:TStrings);
  58.          PROCEDURE SetTabStyle(Value:TTabStyle);
  59.          PROCEDURE SetTabIndex(Value:LONGINT);
  60.          PROCEDURE SetTabHeight(Value:LONGINT);
  61.          PROCEDURE SetFirstIndex(Value:LONGINT);
  62.          PROCEDURE SetAutoScroll(Value:BOOLEAN);
  63.          PROCEDURE SetAlignment(Value:TTabAlignment);
  64.          PROCEDURE SetSelectedColor(Value:TColor);
  65.          PROCEDURE SetUnselectedColor(Value:TColor);
  66.          PROCEDURE SetDitherBackground(Value:BOOLEAN);
  67.          PROCEDURE SetStartMargin(Value:LONGINT);
  68.          PROCEDURE SetEndMargin(Value:LONGINT);
  69.          PROCEDURE ArrangeTabs;
  70.          PROCEDURE SetButtons;
  71.          PROCEDURE UpdateButtons;
  72.          PROCEDURE EvScroll(Sender:TObject);
  73.          PROCEDURE EvTabsChange(Sender:TObject);
  74.       PROTECTED
  75.          PROCEDURE SetupComponent;OVERRIDE;
  76.          PROCEDURE SetupShow;OVERRIDE;
  77.          PROCEDURE Resize;OVERRIDE;
  78.          PROCEDURE FontChange;OVERRIDE;
  79.          PROCEDURE SetFocus;OVERRIDE;
  80.          PROCEDURE KillFocus;OVERRIDE;
  81.          PROCEDURE CharEvent(VAR Msg:TWMChar;VAR ch:CHAR;RepeatCount:BYTE);OVERRIDE;
  82.          PROCEDURE ScanEvent(VAR Msg:TWMChar;VAR Keycode:TKeyCode;RepeatCount:BYTE);OVERRIDE;
  83.          PROCEDURE MouseDown(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  84.          FUNCTION CanChange(NewIndex:LONGINT):BOOLEAN;VIRTUAL;
  85.          FUNCTION GetTabColor(Index:LONGINT):TColor;VIRTUAL;
  86.          PROCEDURE MeasureTab(Index:LONGINT;VAR TabSize:LONGINT);VIRTUAL;
  87.          PROCEDURE DrawTab(TabCanvas:TCanvas;rec:TRect;Index:LONGINT;
  88.                            Selected:BOOLEAN);VIRTUAL;
  89.          PROCEDURE RedrawBottom(CONST rec:TRect);VIRTUAL;
  90.          PROCEDURE RedrawTop(CONST rec:TRect);VIRTUAL;
  91.       PUBLIC
  92.          DESTRUCTOR Destroy;OVERRIDE;
  93.          PROCEDURE Redraw(CONST rec:TRect);OVERRIDE;
  94.          PROCEDURE Click;
  95.          PROCEDURE SelectNext(Direction:BOOLEAN);
  96.          FUNCTION ItemAtPos(Pos:TPoint):LONGINT;
  97.          FUNCTION ItemRect(Item:LONGINT):TRect;
  98.          PROCEDURE GetChildren(Proc:TGetChildProc);OVERRIDE;
  99.          PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
  100.          FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
  101.          PROPERTY VisibleTabs:LONGINT read FVisibleTabs;
  102.          PROPERTY XAlign;
  103.          PROPERTY XStretch;
  104.          PROPERTY YAlign;
  105.          PROPERTY YStretch;
  106.       PUBLISHED
  107.          PROPERTY Align;
  108.          PROPERTY Alignment:TTabAlignment read FAlignment write SetAlignment;
  109.          PROPERTY AutoScroll:BOOLEAN read FAutoScroll write SetAutoScroll;
  110.          PROPERTY DitherBackground:BOOLEAN read FDitherBackground write SetDitherBackground;
  111.          PROPERTY DragCursor;
  112.          PROPERTY DragMode;
  113.          PROPERTY Enabled;
  114.          PROPERTY EndMargin:LONGINT read FEndMargin write SetEndMargin;
  115.          PROPERTY FirstIndex:LONGINT read FFirstIndex write SetFirstIndex;
  116.          PROPERTY Font;
  117.          PROPERTY ParentFont;
  118.          PROPERTY ParentShowHint;
  119.          PROPERTY SelectedColor:TColor read FSelectedColor write SetSelectedColor;
  120.          PROPERTY ShowHint;
  121.          PROPERTY StartMargin:LONGINT read FStartMargin write SetStartMargin;
  122.          PROPERTY TabHeight:LONGINT read FTabHeight write SetTabHeight;
  123.          PROPERTY TabIndex:LONGINT read FTabIndex write SetTabIndex;
  124.          PROPERTY Tabs:TStrings read FTabs write SetTabs;
  125.          PROPERTY TabStop;
  126.          PROPERTY TabStyle:TTabStyle read FTabStyle write SetTabStyle;
  127.          PROPERTY UnselectedColor:TColor read FUnselectedColor write SetUnselectedColor;
  128.          PROPERTY Visible;
  129.          PROPERTY ZOrder;
  130.  
  131.          PROPERTY OnCanDrag;
  132.          PROPERTY OnChange:TTabChangeEvent read FOnChange write FOnChange;
  133.          PROPERTY OnClick:TNotifyEvent read FOnClick write FOnClick;
  134.          PROPERTY OnDragDrop;
  135.          PROPERTY OnDragOver;
  136.          PROPERTY OnDrawTab:TDrawTabEvent read FOnDrawTab write FOnDrawTab;
  137.          PROPERTY OnEndDrag;
  138.          PROPERTY OnEnter;
  139.          PROPERTY OnExit;
  140.          PROPERTY OnFontChange;
  141.          PROPERTY OnMeasureTab:TMeasureTabEvent read FOnMeasureTab write FOnMeasureTab;
  142.          PROPERTY OnSetupShow;
  143.          PROPERTY OnStartDrag;
  144.     END;
  145.  
  146.  
  147.     TPage=CLASS(TControl)
  148.       PRIVATE
  149.          SubCount:LONGINT;
  150.          SubIndex:LONGINT;
  151.          MainIndex:LONGINT;
  152.          PopupEntry:TMenuItem;
  153.          FIsSubPage:BOOLEAN;
  154.       PROTECTED
  155.          PROCEDURE SetupComponent;OVERRIDE;
  156.          PROCEDURE LoadedFromSCU(SCUParent:TComponent);OVERRIDE;
  157.          PROCEDURE Paint(CONST rec:TRect);OVERRIDE;
  158.          PROPERTY OnMouseClick;
  159.          PROPERTY OnMouseDblClick;
  160.          PROPERTY OnMouseDown;
  161.          PROPERTY OnMouseUp;
  162.          PROPERTY OnMouseMove;
  163.       PUBLIC
  164.          PROCEDURE BringToFront;OVERRIDE;
  165.          PROPERTY IsSubPage:BOOLEAN read FIsSubPage;
  166.          PROPERTY Color;
  167.          PROPERTY PenColor;
  168.          PROPERTY DragCursor;
  169.          PROPERTY DragMode;
  170.          PROPERTY Enabled;
  171.          PROPERTY Font;
  172.          PROPERTY ParentColor;
  173.          PROPERTY ParentPenColor;
  174.          PROPERTY ParentFont;
  175.          PROPERTY ParentShowHint;
  176.          PROPERTY ShowHint;
  177.  
  178.          PROPERTY OnCommand;
  179.          PROPERTY OnDragDrop;
  180.          PROPERTY OnDragOver;
  181.          PROPERTY OnEndDrag;
  182.          PROPERTY OnEnter;
  183.          PROPERTY OnExit;
  184.          PROPERTY OnFontChange;
  185.          PROPERTY OnPaint;
  186.          PROPERTY OnResize;
  187.          PROPERTY OnSetupShow;
  188.       PUBLISHED
  189.          PROPERTY Caption;
  190.          PROPERTY Hint;
  191.     END;
  192.  
  193.     {Rene}
  194.     {}
  195.     TTabPage=CLASS(TPage)
  196.     END;
  197.  
  198.     TTabSheet=CLASS(TPage)
  199.     END;
  200.     {}
  201.  
  202.     TNoteBook=CLASS;
  203.  
  204.     TPageAccess=CLASS(TStrings)
  205.       PRIVATE
  206.          FPages:TList;
  207.          FNotebook:TNotebook;
  208.          FOnChange:TNotifyEvent;
  209.       PRIVATE
  210.          FUNCTION GetPage(Index:LONGINT):TPage;
  211.       PROTECTED
  212.          FUNCTION GetCount: LONGINT; OVERRIDE;
  213.          FUNCTION Get(Index: LONGINT): STRING; OVERRIDE;
  214.          PROCEDURE Put(Index: LONGINT; CONST S: STRING); OVERRIDE;
  215.          FUNCTION GetObject(Index: LONGINT): TObject; OVERRIDE;
  216.       PUBLIC
  217.          PROCEDURE Clear; OVERRIDE;
  218.          PROCEDURE Delete(Index: LONGINT); OVERRIDE;
  219.          PROCEDURE Insert(Index: LONGINT; CONST S: STRING); OVERRIDE;
  220.          PROCEDURE Move(CurIndex, NewIndex: LONGINT); OVERRIDE;
  221.          PROPERTY Pages[Index:LONGINT]:TPage read GetPage;
  222.          PROPERTY NoteBook:TNoteBook read FNoteBook;
  223.          PROPERTY OnChange:TNotifyEvent read FOnChange;
  224.     END;
  225.  
  226.     TNotebook=CLASS(TControl)
  227.       PRIVATE
  228.          FPages:TList;
  229.          FAccess:TPageAccess;
  230.          FPageIndex:LONGINT;
  231.          FOnPageChanged:TNotifyEvent;
  232.          FUNCTION GetActivePage:STRING;
  233.          PROCEDURE SetActivePage(CONST Value:STRING);
  234.          PROCEDURE SetPageIndex(Value:LONGINT);
  235.          PROCEDURE SetPages(Value:TPageAccess);
  236.       PROTECTED
  237.          PROCEDURE SetupComponent;OVERRIDE;
  238.          PROCEDURE SetupShow;OVERRIDE;
  239.          PROCEDURE GetChildren(Proc:TGetChildProc);OVERRIDE;
  240.          PROCEDURE LoadingFromSCU(SCUParent:TComponent);OVERRIDE;
  241.       PUBLIC
  242.          DESTRUCTOR Destroy;OVERRIDE;
  243.          PROPERTY XAlign;
  244.          PROPERTY XStretch;
  245.          PROPERTY YAlign;
  246.          PROPERTY YStretch;
  247.       PUBLISHED
  248.          PROPERTY ActivePage:STRING read GetActivePage write SetActivePage; stored FALSE;
  249.          PROPERTY Align;
  250.          PROPERTY Color;
  251.          PROPERTY PenColor;
  252.          PROPERTY DragCursor;
  253.          PROPERTY DragMode;
  254.          PROPERTY Enabled;
  255.          PROPERTY Font;
  256.          PROPERTY PageIndex:LONGINT read FPageIndex write SetPageIndex;
  257.          PROPERTY Pages:TPageAccess read FAccess write SetPages;
  258.          PROPERTY ParentColor;
  259.          PROPERTY ParentPenColor;
  260.          PROPERTY ParentFont;
  261.          PROPERTY ParentShowHint;
  262.          PROPERTY PopupMenu;
  263.          PROPERTY ShowHint;
  264.          PROPERTY TabOrder;
  265.          PROPERTY TabStop;
  266.          PROPERTY Visible;
  267.          PROPERTY ZOrder;
  268.  
  269.          PROPERTY OnCanDrag;
  270.          PROPERTY OnDblClick;
  271.          PROPERTY OnDragDrop;
  272.          PROPERTY OnDragOver;
  273.          PROPERTY OnEndDrag;
  274.          PROPERTY OnEnter;
  275.          PROPERTY OnExit;
  276.          PROPERTY OnFontChange;
  277.          PROPERTY OnMouseClick;
  278.          PROPERTY OnMouseDblClick;
  279.          PROPERTY OnMouseDown;
  280.          PROPERTY OnMouseMove;
  281.          PROPERTY OnMouseUp;
  282.          PROPERTY OnPageChanged:TNotifyEvent read FOnPageChanged write FOnPageChanged;
  283.          PROPERTY OnSetupShow;
  284.          PROPERTY OnStartDrag;
  285.     END;
  286.  
  287.     {$M+}
  288.     TTabbedNotebookStyle=(nsDefault,nsWarp4,nsWin32);
  289.     {$M-}
  290.  
  291.     TTabbedNotebook=CLASS(TControl)
  292.       PRIVATE
  293.          FTabSet:TTabSet;
  294.          FNotebook:TNotebook;
  295.          FPageHint:TLabel;
  296.          FPageCount:TLabel;
  297.          FEdge:TImage;
  298.          FAutoPopup:BOOLEAN;
  299.          FStyle:TTabbedNotebookStyle;
  300.          FColorTabs:BOOLEAN;
  301.          FShowPageHint:BOOLEAN;
  302.          FRectangleTabs:BOOLEAN;
  303.          EdgeDraggingMinus:BOOLEAN;
  304.          EdgeDraggingPlus:BOOLEAN;
  305.          LastEdgeBmpId:LONGINT;
  306.          IgnoreTabClick:BOOLEAN;
  307.          PagesPopup:TPopupMenu;
  308.          FOnPageChanged:TNotifyEvent;
  309.          FUNCTION GetActivePage:STRING;
  310.          PROCEDURE SetActivePage(Value:STRING);
  311.          FUNCTION GetPageIndex:LONGINT;
  312.          PROCEDURE SetPageIndex(Value:LONGINT);
  313.          FUNCTION GetPages:TPageAccess;
  314.          PROCEDURE SetPages(Value:TPageAccess);
  315.          FUNCTION GetTabFont:TFont;
  316.          PROCEDURE SetTabFont(Value:TFont);
  317.          FUNCTION GetTabAlignment:TTabAlignment;
  318.          PROCEDURE SetTabAlignment(Value:TTabAlignment);
  319.          PROCEDURE SetStyle(Value:TTabbedNotebookStyle);
  320.          PROCEDURE SetColorTabs(Value:BOOLEAN);
  321.          PROCEDURE SetShowPageHint(Value:BOOLEAN);
  322.          PROCEDURE SetRectangleTabs(Value:BOOLEAN);
  323.          FUNCTION GetTabHeight:LONGINT;
  324.          PROCEDURE SetTabHeight(Value:LONGINT);
  325.          FUNCTION GetPageHint:STRING;     {tommy}
  326.          PROCEDURE SetPageHint(CONST Value:STRING); {tommy}
  327.          PROCEDURE LoadEdge;
  328.          PROCEDURE ArrangeSubPages;
  329.          FUNCTION Tab2Page(TabIdx:LONGINT):LONGINT;
  330.          FUNCTION Page2Tab(PageIdx:LONGINT):LONGINT;
  331.          PROCEDURE EvTabSetClicked(Sender:TObject);
  332.          PROCEDURE EvPageIndexChanged(Sender:TObject);
  333.          PROCEDURE EvPageAccessChanged(Sender:TObject);
  334.          PROCEDURE EvCanChange(Sender:TObject;NewTab:LONGINT;VAR AllowChange:BOOLEAN);
  335.          PROCEDURE EvMeasureTab(Sender:TObject;Index:LONGINT;VAR TabSize:LONGINT);
  336.          PROCEDURE EvDrawTab(Sender:TObject;TabCanvas:TCanvas;rec:TRect;Index:LONGINT;Selected:BOOLEAN);
  337.          FUNCTION SignFromPos(X,Y:LONGINT):BOOLEAN;
  338.          PROCEDURE EvEdgeMouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:LONGINT);
  339.          PROCEDURE EvEdgeMouseUp(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:LONGINT);
  340.          PROCEDURE EvMouseClick(Sender:TObject;Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);
  341.          PROCEDURE EvPopupClicked(Sender:TObject);
  342.          PROCEDURE EvQueryTabColor(Sender:TObject;Index:LONGINT;VAR TabColor:TColor);
  343.          {Rene}
  344.          FUNCTION GetPageRect:TRect;
  345.       PROTECTED
  346.          PROCEDURE SetupComponent;OVERRIDE;
  347.          PROCEDURE SetupShow;OVERRIDE;
  348.          PROCEDURE FontChange;OVERRIDE;
  349.          PROCEDURE Resize;OVERRIDE;
  350.          PROCEDURE GetChildren(Proc:TGetChildProc);OVERRIDE;
  351.          PROCEDURE LoadingFromSCU(SCUParent:TComponent);OVERRIDE;
  352.          PROCEDURE LoadedFromSCU(SCUParent:TComponent);OVERRIDE;
  353.          PROCEDURE ScanEvent(VAR Msg:TWMChar;VAR Keycode:TKeyCode;RepeatCount:BYTE);OVERRIDE;
  354.          FUNCTION EvaluateShortCut(KeyCode:TKeyCode):BOOLEAN;OVERRIDE;
  355.       PUBLIC
  356.          PROCEDURE Redraw(CONST rec:TRect);OVERRIDE;
  357.          FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
  358.          PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
  359.          PROCEDURE GetDesignerPopupEvents(AString:TStringList);OVERRIDE;
  360.          PROCEDURE DesignerPopupEvent(Value:LONGINT);OVERRIDE;
  361.          PROPERTY ColorTabs:BOOLEAN read FColorTabs write SetColorTabs;
  362.          PROPERTY ShowPageHint:BOOLEAN read FShowPageHint write SetShowPageHint;
  363.          PROPERTY RectangleTabs:BOOLEAN read FRectangleTabs write SetRectangleTabs;
  364.          PROPERTY PageHint:STRING read GetPageHint write SetPageHint; {tommy}
  365.          PROPERTY XAlign;
  366.          PROPERTY XStretch;
  367.          PROPERTY YAlign;
  368.          PROPERTY YStretch;
  369.          {Rene}
  370.          PROPERTY PageRect:TRect read GetPageRect;
  371.       PUBLISHED
  372.          PROPERTY ActivePage:STRING read GetActivePage write SetActivePage; stored FALSE;
  373.          PROPERTY Align;
  374.          PROPERTY AutoPopup:BOOLEAN read FAutoPopup write FAutoPopup;
  375.          PROPERTY Color;
  376.          PROPERTY PenColor;
  377.          PROPERTY DragCursor;
  378.          PROPERTY DragMode;
  379.          PROPERTY Enabled;
  380.          PROPERTY Font;
  381.          PROPERTY PageIndex:LONGINT read GetPageIndex write SetPageIndex;
  382.          PROPERTY Pages:TPageAccess read GetPages write SetPages;
  383.          PROPERTY ParentColor;
  384.          PROPERTY ParentPenColor;
  385.          PROPERTY ParentFont;
  386.          PROPERTY ParentShowHint;
  387.          PROPERTY ShowHint;
  388.          PROPERTY Style:TTabbedNotebookStyle read FStyle write SetStyle;
  389.          PROPERTY TabAlignment:TTabAlignment read GetTabAlignment write SetTabAlignment;
  390.          PROPERTY TabFont:TFont read GetTabFont write SetTabFont;
  391.          PROPERTY TabHeight:LONGINT read GetTabHeight write SetTabHeight;
  392.          PROPERTY TabOrder;
  393.          PROPERTY TabStop;
  394.          PROPERTY Visible;
  395.          PROPERTY ZOrder;
  396.  
  397.          PROPERTY OnCanDrag;
  398.          PROPERTY OnDragDrop;
  399.          PROPERTY OnDragOver;
  400.          PROPERTY OnEndDrag;
  401.          PROPERTY OnEnter;
  402.          PROPERTY OnExit;
  403.          PROPERTY OnFontChange;
  404.          PROPERTY OnMouseMove;
  405.          PROPERTY OnPageChanged:TNotifyEvent read FOnPageChanged write FOnPageChanged;
  406.          PROPERTY OnSetupShow;
  407.          PROPERTY OnStartDrag;
  408.     END;
  409.  
  410.     {Rene}
  411.     TPageControl=CLASS(TTabbedNoteBook)
  412.     END;
  413.  
  414. FUNCTION InsertTabSet(Parent:TControl;Left,Bottom,Width,Height:LONGINT):TTabSet;
  415. FUNCTION InsertNotebook(Parent:TControl;Left,Bottom,Width,Height:LONGINT):TNotebook;
  416. FUNCTION InsertTabbedNotebook(Parent:TControl;Left,Bottom,Width,Height:LONGINT):TTabbedNotebook;
  417.  
  418.  
  419. IMPLEMENTATION
  420.  
  421.