home *** CD-ROM | disk | FTP | other *** search
/ PC World Plus! (NZ) 2001 June / HDC50.iso / Runimage / Delphi50 / Doc / TABS.INT < prev    next >
Text File  |  1999-08-11  |  5KB  |  140 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Borland Delphi Visual Component Library         }
  5. {                                                       }
  6. {       Copyright (c) 1995,99 Inprise Corporation       }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. {****************************************************************************}
  11. {                                                                            }
  12. { Limitation on Distribution of Programs Created with this Source Code File: }
  13. { ========================================================================== }
  14. {                                                                            }
  15. { For distribution of an application which you create with this Source       }
  16. { Code File, your application may not be a general-purpose, interactive      }
  17. { spreadsheet program, or a substitute for or generally competitive          }
  18. { with Quattro Pro.                                                          }
  19. {                                                                            }
  20. {****************************************************************************}
  21.  
  22. { Implements tab control }
  23.  
  24. unit Tabs;
  25.  
  26. {$T-,H+,X+}
  27.  
  28. interface
  29.  
  30. uses Windows, Classes, Graphics, Forms, Controls, Messages;
  31.  
  32. type
  33.   TScrollBtn = (sbLeft, sbRight);
  34.  
  35.   TScroller = class(TCustomControl)
  36.   public
  37.     constructor Create(AOwner: TComponent); override;
  38.     destructor Destroy; override;
  39.     procedure Paint; override;
  40.   published
  41.     property OnClick: TNotifyEvent;
  42.     property Min: Longint default 0;
  43.     property Max: Longint default 0;
  44.     property Position: Longint default 0;
  45.     property Change: Integer default 1;
  46.   end;
  47.  
  48.   TTabSet = class;
  49.  
  50.   TTabList = class(TStringList)
  51.   public
  52.     procedure Insert(Index: Integer; const S: string); override;
  53.     procedure Delete(Index: Integer); override;
  54.     function Add(const S: string): Integer; override;
  55.     procedure Put(Index: Integer; const S: string); override;
  56.     procedure Clear; override;
  57.     procedure AddStrings(Strings: TStrings); override;
  58.   end;
  59.  
  60.   { eash TEdgeType is made up of one or two of these parts }
  61.   TEdgePart = (epSelectedLeft, epUnselectedLeft, epSelectedRight,
  62.     epUnselectedRight);
  63.  
  64.   { represents the intersection between two tabs, or the edge of a tab }
  65.   TEdgeType = (etNone, etFirstIsSel, etFirstNotSel, etLastIsSel, etLastNotSel,
  66.     etNotSelToSel, etSelToNotSel, etNotSelToNotSel);
  67.  
  68.   TTabStyle = (tsStandard, tsOwnerDraw);
  69.  
  70.   TMeasureTabEvent = procedure(Sender: TObject; Index: Integer;
  71.     var TabWidth: Integer) of object;
  72.   TDrawTabEvent = procedure(Sender: TObject; TabCanvas: TCanvas; R: TRect;
  73.     Index: Integer; Selected: Boolean) of object;
  74.   TTabChangeEvent = procedure(Sender: TObject; NewTab: Integer;
  75.     var AllowChange: Boolean) of object;
  76.  
  77.   TTabSet = class(TCustomControl)
  78.   protected
  79.     procedure CreateParams(var Params: TCreateParams); override;
  80.     procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
  81.       X, Y: Integer); override;
  82.     procedure Paint; override;
  83.     procedure DrawTab(TabCanvas: TCanvas; R: TRect; Index: Integer;
  84.       Selected: Boolean); virtual;
  85.     function CanChange(NewIndex: Integer): Boolean;
  86.     procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
  87.     procedure MeasureTab(Index: Integer; var TabWidth: Integer); virtual;
  88.     procedure DefineProperties(Filer: TFiler); override;
  89.   public
  90.     constructor Create(AOwner: TComponent); override;
  91.     destructor Destroy; override;
  92.     function ItemAtPos(Pos: TPoint): Integer;
  93.     function ItemRect(Item: Integer): TRect;
  94.     procedure SelectNext(Direction: Boolean);
  95.     property Canvas;
  96.     property FirstIndex: Integer default 0;
  97.   published
  98.     property Align;
  99.     property Anchors;
  100.     property AutoScroll: Boolean default True;
  101.     property BackgroundColor: TColor default clBtnFace;
  102.     property Constraints;
  103.     property DitherBackground: Boolean default True;
  104.     property DragCursor;
  105.     property DragKind;
  106.     property DragMode;
  107.     property Enabled;
  108.     property EndMargin: Integer default 5;
  109.     property Font;
  110.     property ParentShowHint;
  111.     property PopupMenu;
  112.     property ShowHint;
  113.     property StartMargin: Integer default 5;
  114.     property SelectedColor: TColor default clBtnFace;
  115.     property Style: TTabStyle default tsStandard;
  116.     property TabHeight: Integer default 20;
  117.     property Tabs: TStrings;
  118.     property TabIndex: Integer default -1;
  119.     property UnselectedColor: TColor default clWindow;
  120.     property Visible;
  121.     property VisibleTabs: Integer;
  122.     property OnClick;
  123.     property OnChange: TTabChangeEvent;
  124.     property OnDragDrop;
  125.     property OnDragOver;
  126.     property OnDrawTab: TDrawTabEvent;
  127.     property OnEndDock;
  128.     property OnEndDrag;
  129.     property OnEnter;
  130.     property OnExit;
  131.     property OnMouseDown;
  132.     property OnMouseMove;
  133.     property OnMouseUp;
  134.     property OnMeasureTab: TMeasureTabEvent;
  135.     property OnStartDock;
  136.     property OnStartDrag;
  137.   end;
  138.  
  139. implementation
  140.