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 >
Wrap
Pascal/Delphi Source File
|
1997-04-07
|
17KB
|
421 lines
{╔══════════════════════════════════════════════════════════════════════════╗
║ ║
║ Sibyl Portable Component Classes ║
║ ║
║ Copyright (c) 1995,97 SpeedSoft Germany, All rights reserved. ║
║ ║
╚══════════════════════════════════════════════════════════════════════════╝}
UNIT TabCtrls;
INTERFACE
USES Messages,SysUtils,Classes,Forms,Buttons,StdCtrls,ExtCtrls,Dialogs;
{$i StdBmpId.Inc}
TYPE
{$M+}
TTabStyle=(tsStandard,tsOwnerDraw);
TTabAlignment=(taBottom,taTop);
{$M-}
TTabSet=CLASS;
TTabChangeEvent=PROCEDURE(Sender:TObject;NewTab:LONGINT;
VAR AllowChange:BOOLEAN) OF OBJECT;
TMeasureTabEvent=PROCEDURE(Sender:TObject;Index:LONGINT;
VAR TabSize:LONGINT) OF OBJECT;
TDrawTabEvent=PROCEDURE(Sender:TObject;TabCanvas:TCanvas;rec:TRect;
Index:LONGINT;Selected:BOOLEAN) OF OBJECT;
TTabSet=CLASS(TControl)
PRIVATE
FTabs:TStrings;
FTabPositions:TList;
FTabStyle:TTabStyle;
FTabIndex:LONGINT;
FTabHeight:LONGINT;
FFirstIndex:LONGINT;
FAutoScroll:BOOLEAN;
FAlignment:TTabAlignment;
FSelectedColor:TColor;
FUnSelectedColor:TColor;
FDitherBackground:BOOLEAN;
FStartMargin:LONGINT;
FEndMargin:LONGINT;
FVisibleTabs:LONGINT;
FLeftScroll:TSpeedButton;
FRightScroll:TSpeedButton;
FTabFocus:LONGINT;
FOnClick:TNotifyEvent;
FOnChange:TTabChangeEvent;
FOnMeasureTab:TMeasureTabEvent;
FOnDrawTab:TDrawTabEvent;
PROCEDURE SetTabs(Value:TStrings);
PROCEDURE SetTabStyle(Value:TTabStyle);
PROCEDURE SetTabIndex(Value:LONGINT);
PROCEDURE SetTabHeight(Value:LONGINT);
PROCEDURE SetFirstIndex(Value:LONGINT);
PROCEDURE SetAutoScroll(Value:BOOLEAN);
PROCEDURE SetAlignment(Value:TTabAlignment);
PROCEDURE SetSelectedColor(Value:TColor);
PROCEDURE SetUnselectedColor(Value:TColor);
PROCEDURE SetDitherBackground(Value:BOOLEAN);
PROCEDURE SetStartMargin(Value:LONGINT);
PROCEDURE SetEndMargin(Value:LONGINT);
PROCEDURE ArrangeTabs;
PROCEDURE SetButtons;
PROCEDURE UpdateButtons;
PROCEDURE EvScroll(Sender:TObject);
PROCEDURE EvTabsChange(Sender:TObject);
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE SetupShow;OVERRIDE;
PROCEDURE Resize;OVERRIDE;
PROCEDURE FontChange;OVERRIDE;
PROCEDURE SetFocus;OVERRIDE;
PROCEDURE KillFocus;OVERRIDE;
PROCEDURE CharEvent(VAR Msg:TWMChar;VAR ch:CHAR;RepeatCount:BYTE);OVERRIDE;
PROCEDURE ScanEvent(VAR Msg:TWMChar;VAR Keycode:TKeyCode;RepeatCount:BYTE);OVERRIDE;
PROCEDURE MouseDown(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
FUNCTION CanChange(NewIndex:LONGINT):BOOLEAN;VIRTUAL;
FUNCTION GetTabColor(Index:LONGINT):TColor;VIRTUAL;
PROCEDURE MeasureTab(Index:LONGINT;VAR TabSize:LONGINT);VIRTUAL;
PROCEDURE DrawTab(TabCanvas:TCanvas;rec:TRect;Index:LONGINT;
Selected:BOOLEAN);VIRTUAL;
PROCEDURE RedrawBottom(CONST rec:TRect);VIRTUAL;
PROCEDURE RedrawTop(CONST rec:TRect);VIRTUAL;
PUBLIC
DESTRUCTOR Destroy;OVERRIDE;
PROCEDURE Redraw(CONST rec:TRect);OVERRIDE;
PROCEDURE Click;
PROCEDURE SelectNext(Direction:BOOLEAN);
FUNCTION ItemAtPos(Pos:TPoint):LONGINT;
FUNCTION ItemRect(Item:LONGINT):TRect;
PROCEDURE GetChildren(Proc:TGetChildProc);OVERRIDE;
PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
PROPERTY VisibleTabs:LONGINT read FVisibleTabs;
PROPERTY XAlign;
PROPERTY XStretch;
PROPERTY YAlign;
PROPERTY YStretch;
PUBLISHED
PROPERTY Align;
PROPERTY Alignment:TTabAlignment read FAlignment write SetAlignment;
PROPERTY AutoScroll:BOOLEAN read FAutoScroll write SetAutoScroll;
PROPERTY DitherBackground:BOOLEAN read FDitherBackground write SetDitherBackground;
PROPERTY DragCursor;
PROPERTY DragMode;
PROPERTY Enabled;
PROPERTY EndMargin:LONGINT read FEndMargin write SetEndMargin;
PROPERTY FirstIndex:LONGINT read FFirstIndex write SetFirstIndex;
PROPERTY Font;
PROPERTY ParentFont;
PROPERTY ParentShowHint;
PROPERTY SelectedColor:TColor read FSelectedColor write SetSelectedColor;
PROPERTY ShowHint;
PROPERTY StartMargin:LONGINT read FStartMargin write SetStartMargin;
PROPERTY TabHeight:LONGINT read FTabHeight write SetTabHeight;
PROPERTY TabIndex:LONGINT read FTabIndex write SetTabIndex;
PROPERTY Tabs:TStrings read FTabs write SetTabs;
PROPERTY TabStop;
PROPERTY TabStyle:TTabStyle read FTabStyle write SetTabStyle;
PROPERTY UnselectedColor:TColor read FUnselectedColor write SetUnselectedColor;
PROPERTY Visible;
PROPERTY ZOrder;
PROPERTY OnCanDrag;
PROPERTY OnChange:TTabChangeEvent read FOnChange write FOnChange;
PROPERTY OnClick:TNotifyEvent read FOnClick write FOnClick;
PROPERTY OnDragDrop;
PROPERTY OnDragOver;
PROPERTY OnDrawTab:TDrawTabEvent read FOnDrawTab write FOnDrawTab;
PROPERTY OnEndDrag;
PROPERTY OnEnter;
PROPERTY OnExit;
PROPERTY OnFontChange;
PROPERTY OnMeasureTab:TMeasureTabEvent read FOnMeasureTab write FOnMeasureTab;
PROPERTY OnSetupShow;
PROPERTY OnStartDrag;
END;
TPage=CLASS(TControl)
PRIVATE
SubCount:LONGINT;
SubIndex:LONGINT;
MainIndex:LONGINT;
PopupEntry:TMenuItem;
FIsSubPage:BOOLEAN;
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE LoadedFromSCU(SCUParent:TComponent);OVERRIDE;
PROCEDURE Paint(CONST rec:TRect);OVERRIDE;
PROPERTY OnMouseClick;
PROPERTY OnMouseDblClick;
PROPERTY OnMouseDown;
PROPERTY OnMouseUp;
PROPERTY OnMouseMove;
PUBLIC
PROCEDURE BringToFront;OVERRIDE;
PROPERTY IsSubPage:BOOLEAN read FIsSubPage;
PROPERTY Color;
PROPERTY PenColor;
PROPERTY DragCursor;
PROPERTY DragMode;
PROPERTY Enabled;
PROPERTY Font;
PROPERTY ParentColor;
PROPERTY ParentPenColor;
PROPERTY ParentFont;
PROPERTY ParentShowHint;
PROPERTY ShowHint;
PROPERTY OnCommand;
PROPERTY OnDragDrop;
PROPERTY OnDragOver;
PROPERTY OnEndDrag;
PROPERTY OnEnter;
PROPERTY OnExit;
PROPERTY OnFontChange;
PROPERTY OnPaint;
PROPERTY OnResize;
PROPERTY OnSetupShow;
PUBLISHED
PROPERTY Caption;
PROPERTY Hint;
END;
{Rene}
{}
TTabPage=CLASS(TPage)
END;
TTabSheet=CLASS(TPage)
END;
{}
TNoteBook=CLASS;
TPageAccess=CLASS(TStrings)
PRIVATE
FPages:TList;
FNotebook:TNotebook;
FOnChange:TNotifyEvent;
PRIVATE
FUNCTION GetPage(Index:LONGINT):TPage;
PROTECTED
FUNCTION GetCount: LONGINT; OVERRIDE;
FUNCTION Get(Index: LONGINT): STRING; OVERRIDE;
PROCEDURE Put(Index: LONGINT; CONST S: STRING); OVERRIDE;
FUNCTION GetObject(Index: LONGINT): TObject; OVERRIDE;
PUBLIC
PROCEDURE Clear; OVERRIDE;
PROCEDURE Delete(Index: LONGINT); OVERRIDE;
PROCEDURE Insert(Index: LONGINT; CONST S: STRING); OVERRIDE;
PROCEDURE Move(CurIndex, NewIndex: LONGINT); OVERRIDE;
PROPERTY Pages[Index:LONGINT]:TPage read GetPage;
PROPERTY NoteBook:TNoteBook read FNoteBook;
PROPERTY OnChange:TNotifyEvent read FOnChange;
END;
TNotebook=CLASS(TControl)
PRIVATE
FPages:TList;
FAccess:TPageAccess;
FPageIndex:LONGINT;
FOnPageChanged:TNotifyEvent;
FUNCTION GetActivePage:STRING;
PROCEDURE SetActivePage(CONST Value:STRING);
PROCEDURE SetPageIndex(Value:LONGINT);
PROCEDURE SetPages(Value:TPageAccess);
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE SetupShow;OVERRIDE;
PROCEDURE GetChildren(Proc:TGetChildProc);OVERRIDE;
PROCEDURE LoadingFromSCU(SCUParent:TComponent);OVERRIDE;
PUBLIC
DESTRUCTOR Destroy;OVERRIDE;
PROPERTY XAlign;
PROPERTY XStretch;
PROPERTY YAlign;
PROPERTY YStretch;
PUBLISHED
PROPERTY ActivePage:STRING read GetActivePage write SetActivePage; stored FALSE;
PROPERTY Align;
PROPERTY Color;
PROPERTY PenColor;
PROPERTY DragCursor;
PROPERTY DragMode;
PROPERTY Enabled;
PROPERTY Font;
PROPERTY PageIndex:LONGINT read FPageIndex write SetPageIndex;
PROPERTY Pages:TPageAccess read FAccess write SetPages;
PROPERTY ParentColor;
PROPERTY ParentPenColor;
PROPERTY ParentFont;
PROPERTY ParentShowHint;
PROPERTY PopupMenu;
PROPERTY ShowHint;
PROPERTY TabOrder;
PROPERTY TabStop;
PROPERTY Visible;
PROPERTY ZOrder;
PROPERTY OnCanDrag;
PROPERTY OnDblClick;
PROPERTY OnDragDrop;
PROPERTY OnDragOver;
PROPERTY OnEndDrag;
PROPERTY OnEnter;
PROPERTY OnExit;
PROPERTY OnFontChange;
PROPERTY OnMouseClick;
PROPERTY OnMouseDblClick;
PROPERTY OnMouseDown;
PROPERTY OnMouseMove;
PROPERTY OnMouseUp;
PROPERTY OnPageChanged:TNotifyEvent read FOnPageChanged write FOnPageChanged;
PROPERTY OnSetupShow;
PROPERTY OnStartDrag;
END;
{$M+}
TTabbedNotebookStyle=(nsDefault,nsWarp4,nsWin32);
{$M-}
TTabbedNotebook=CLASS(TControl)
PRIVATE
FTabSet:TTabSet;
FNotebook:TNotebook;
FPageHint:TLabel;
FPageCount:TLabel;
FEdge:TImage;
FAutoPopup:BOOLEAN;
FStyle:TTabbedNotebookStyle;
FColorTabs:BOOLEAN;
FShowPageHint:BOOLEAN;
FRectangleTabs:BOOLEAN;
EdgeDraggingMinus:BOOLEAN;
EdgeDraggingPlus:BOOLEAN;
LastEdgeBmpId:LONGINT;
IgnoreTabClick:BOOLEAN;
PagesPopup:TPopupMenu;
FOnPageChanged:TNotifyEvent;
FUNCTION GetActivePage:STRING;
PROCEDURE SetActivePage(Value:STRING);
FUNCTION GetPageIndex:LONGINT;
PROCEDURE SetPageIndex(Value:LONGINT);
FUNCTION GetPages:TPageAccess;
PROCEDURE SetPages(Value:TPageAccess);
FUNCTION GetTabFont:TFont;
PROCEDURE SetTabFont(Value:TFont);
FUNCTION GetTabAlignment:TTabAlignment;
PROCEDURE SetTabAlignment(Value:TTabAlignment);
PROCEDURE SetStyle(Value:TTabbedNotebookStyle);
PROCEDURE SetColorTabs(Value:BOOLEAN);
PROCEDURE SetShowPageHint(Value:BOOLEAN);
PROCEDURE SetRectangleTabs(Value:BOOLEAN);
FUNCTION GetTabHeight:LONGINT;
PROCEDURE SetTabHeight(Value:LONGINT);
FUNCTION GetPageHint:STRING; {tommy}
PROCEDURE SetPageHint(CONST Value:STRING); {tommy}
PROCEDURE LoadEdge;
PROCEDURE ArrangeSubPages;
FUNCTION Tab2Page(TabIdx:LONGINT):LONGINT;
FUNCTION Page2Tab(PageIdx:LONGINT):LONGINT;
PROCEDURE EvTabSetClicked(Sender:TObject);
PROCEDURE EvPageIndexChanged(Sender:TObject);
PROCEDURE EvPageAccessChanged(Sender:TObject);
PROCEDURE EvCanChange(Sender:TObject;NewTab:LONGINT;VAR AllowChange:BOOLEAN);
PROCEDURE EvMeasureTab(Sender:TObject;Index:LONGINT;VAR TabSize:LONGINT);
PROCEDURE EvDrawTab(Sender:TObject;TabCanvas:TCanvas;rec:TRect;Index:LONGINT;Selected:BOOLEAN);
FUNCTION SignFromPos(X,Y:LONGINT):BOOLEAN;
PROCEDURE EvEdgeMouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:LONGINT);
PROCEDURE EvEdgeMouseUp(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:LONGINT);
PROCEDURE EvMouseClick(Sender:TObject;Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);
PROCEDURE EvPopupClicked(Sender:TObject);
PROCEDURE EvQueryTabColor(Sender:TObject;Index:LONGINT;VAR TabColor:TColor);
{Rene}
FUNCTION GetPageRect:TRect;
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE SetupShow;OVERRIDE;
PROCEDURE FontChange;OVERRIDE;
PROCEDURE Resize;OVERRIDE;
PROCEDURE GetChildren(Proc:TGetChildProc);OVERRIDE;
PROCEDURE LoadingFromSCU(SCUParent:TComponent);OVERRIDE;
PROCEDURE LoadedFromSCU(SCUParent:TComponent);OVERRIDE;
PROCEDURE ScanEvent(VAR Msg:TWMChar;VAR Keycode:TKeyCode;RepeatCount:BYTE);OVERRIDE;
FUNCTION EvaluateShortCut(KeyCode:TKeyCode):BOOLEAN;OVERRIDE;
PUBLIC
PROCEDURE Redraw(CONST rec:TRect);OVERRIDE;
FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
PROCEDURE GetDesignerPopupEvents(AString:TStringList);OVERRIDE;
PROCEDURE DesignerPopupEvent(Value:LONGINT);OVERRIDE;
PROPERTY ColorTabs:BOOLEAN read FColorTabs write SetColorTabs;
PROPERTY ShowPageHint:BOOLEAN read FShowPageHint write SetShowPageHint;
PROPERTY RectangleTabs:BOOLEAN read FRectangleTabs write SetRectangleTabs;
PROPERTY PageHint:STRING read GetPageHint write SetPageHint; {tommy}
PROPERTY XAlign;
PROPERTY XStretch;
PROPERTY YAlign;
PROPERTY YStretch;
{Rene}
PROPERTY PageRect:TRect read GetPageRect;
PUBLISHED
PROPERTY ActivePage:STRING read GetActivePage write SetActivePage; stored FALSE;
PROPERTY Align;
PROPERTY AutoPopup:BOOLEAN read FAutoPopup write FAutoPopup;
PROPERTY Color;
PROPERTY PenColor;
PROPERTY DragCursor;
PROPERTY DragMode;
PROPERTY Enabled;
PROPERTY Font;
PROPERTY PageIndex:LONGINT read GetPageIndex write SetPageIndex;
PROPERTY Pages:TPageAccess read GetPages write SetPages;
PROPERTY ParentColor;
PROPERTY ParentPenColor;
PROPERTY ParentFont;
PROPERTY ParentShowHint;
PROPERTY ShowHint;
PROPERTY Style:TTabbedNotebookStyle read FStyle write SetStyle;
PROPERTY TabAlignment:TTabAlignment read GetTabAlignment write SetTabAlignment;
PROPERTY TabFont:TFont read GetTabFont write SetTabFont;
PROPERTY TabHeight:LONGINT read GetTabHeight write SetTabHeight;
PROPERTY TabOrder;
PROPERTY TabStop;
PROPERTY Visible;
PROPERTY ZOrder;
PROPERTY OnCanDrag;
PROPERTY OnDragDrop;
PROPERTY OnDragOver;
PROPERTY OnEndDrag;
PROPERTY OnEnter;
PROPERTY OnExit;
PROPERTY OnFontChange;
PROPERTY OnMouseMove;
PROPERTY OnPageChanged:TNotifyEvent read FOnPageChanged write FOnPageChanged;
PROPERTY OnSetupShow;
PROPERTY OnStartDrag;
END;
{Rene}
TPageControl=CLASS(TTabbedNoteBook)
END;
FUNCTION InsertTabSet(Parent:TControl;Left,Bottom,Width,Height:LONGINT):TTabSet;
FUNCTION InsertNotebook(Parent:TControl;Left,Bottom,Width,Height:LONGINT):TNotebook;
FUNCTION InsertTabbedNotebook(Parent:TControl;Left,Bottom,Width,Height:LONGINT):TTabbedNotebook;
IMPLEMENTATION