home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
sibylft1.zip
/
DOC.DAT
/
DOC
/
SPCC
/
GRIDS.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1997-04-07
|
13KB
|
297 lines
{╔══════════════════════════════════════════════════════════════════════════╗
║ ║
║ Sibyl Portable Component Classes ║
║ ║
║ Copyright (c) 1995,97 SpeedSoft Germany, All rights reserved. ║
║ ║
╚══════════════════════════════════════════════════════════════════════════╝}
UNIT Grids;
INTERFACE
{$IFDEF OS2}
USES Os2Def,BseDos,PmWin,PmGpi,PmDev,PmStdDlg;
{$ENDIF}
{$IFDEF Win95}
USES WinDef,WinBase,WinNT,WinUser,WinGDI,CommCtrl;
{$ENDIF}
USES Messages,Dos,Classes,Forms,Graphics,Buttons,StdCtrls,DbBase,Dialogs;
TYPE
{$M+}
TGridOptions=SET OF (goBorder,goRowSizing,goColSizing,goEditing,
goAlwaysShowEditor,goShowSelection,goAlwaysShowSelection,
goMouseSelect);
TSelectCell=PROCEDURE(Sender:TObject;Col,Row:LONGINT) OF OBJECT;
{$M-}
PGridWidthArray=^TGridWidthArray;
TGridWidthArray=ARRAY[0..$0FFFFFFF] OF LONGINT;
TGridSelection=RECORD
Column,Row:LONGINT;
END;
TGridDrawState=SET OF (gdSelected,gdFocused,gdFixed);
{Custom Grid}
TGrid=CLASS(TControl)
PRIVATE
FUpdateLocked:BOOLEAN;
FFixedColor:TColor;
FFixedRows:LONGINT;
FFixedCols:LONGINT;
FDefaultColWidth:LONGINT;
FDefaultRowHeight:LONGINT;
FColCount:LONGINT;
FRowCount:LONGINT;
FColWidths:PGridWidthArray;
FRowHeights:PGridWidthArray;
FColList:TList; {List of TColEntry}
FScrollBars:TScrollStyle;
FSizeCol:LONGINT;
FSizeRow:LONGINT;
FSizeShape:TCursor;
FSizeStartX,FSizeStartY,FSizeX,FSizeY:LONGINT;
FOptions:TGridOptions;
FEntryColor:TColor;
FGridUpdateLocked:BOOLEAN;
FSelectCol,FSelectRow:LONGINT;
FOnSelectCell:TSelectCell;
FOnClick:TNotifyEvent;
FVertScrollBar:TScrollBar;
FHorzScrollBar:TScrollBar;
PROTECTED
FLeftExtent,FUpExtent:LONGINT;
FLeftScrolled,FUpScrolled:LONGINT;
PRIVATE
PROCEDURE SetFixedColor(NewColor:TColor);
PROCEDURE SetFixedRows(NewRows:LONGINT);
PROCEDURE SetFixedCols(NewCols:LONGINT);
PROCEDURE SetDefaultColWidth(NewWidth:LONGINT);
PROCEDURE SetDefaultRowHeight(NewHeight:LONGINT);
PROCEDURE SetColCount(NewCount:LONGINT);
PROCEDURE SetRowCount(NewCount:LONGINT);
PROCEDURE SetScrollBars(NewValue:TScrollStyle);
PROCEDURE CreateHScrollBar;
PROCEDURE CreateVScrollBar;
PROCEDURE UpdateScrollBars;
FUNCTION GetSizeItem(CONST pt:TPoint;VAR Col,Row:LONGINT):TCursor;
PROCEDURE SetOptions(NewOptions:TGridOptions);
PROCEDURE SetEntryColor(NewColor:TColor);
PROCEDURE SetColWidth(Col:LONGINT;NewWidth:LONGINT);
FUNCTION GetColWidth(Col:LONGINT):LONGINT;
PROCEDURE SetRowHeight(Row:LONGINT;NewHeight:LONGINT);
FUNCTION GetRowHeight(Row:LONGINT):LONGINT;
PROCEDURE SetUpdateLocked(NewValue:BOOLEAN);
PROCEDURE GetGridExtent(VAR cx,cy:LONGINT);
PROCEDURE ClearFocus;VIRTUAL;
FUNCTION GetVisibleRowCount:LONGINT;
FUNCTION GetVisibleColCount:LONGINT;
PROCEDURE SetTopRow(NewValue:LONGINT);
PROCEDURE SetLeftCol(NewValue:LONGINT);
FUNCTION GetGridWidth:LONGINT;
FUNCTION GetGridHeight:LONGINT;
PROCEDURE SetCol(NewValue:LONGINT);
PROCEDURE SetRow(NewValue:LONGINT);
PROCEDURE SetCellColors(Col,Row:LONGINT;AState:TGridDrawState);
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE Resize;OVERRIDE;
PROCEDURE Scroll(ScrollBar:TScrollBar;ScrollCode:TScrollCode;VAR ScrollPos:LONGINT);OVERRIDE;
PROCEDURE MouseClick(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
PROCEDURE MouseDown(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
PROCEDURE MouseUp(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
PROCEDURE MouseMove(ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
PROCEDURE KillFocus;OVERRIDE;
PROCEDURE SetFocus;OVERRIDE;
PROCEDURE ScanEvent(VAR Msg:TWMChar;VAR KeyCode:TKeyCode;RepeatCount:BYTE);OVERRIDE;
FUNCTION SelectCell(Col,Row:LONGINT):BOOLEAN;VIRTUAL;
FUNCTION CellRect(Col,Row:LONGINT):TRect;
FUNCTION ScrollHorzTrack(ScrollBar:TScrollBar;NewPosition:LONGINT):LONGINT;
FUNCTION ScrollVertTrack(ScrollBar:TScrollBar;NewPosition:LONGINT):LONGINT;
PROCEDURE UpdateGridContents(NewCols,NewRows:LONGINT);VIRTUAL;
PROCEDURE SetScrollBar(ScrollBar:TScrollBar;NewValue:LONGINT);VIRTUAL;
PROCEDURE DrawCell(Col,Row:LONGINT;rec:TRect;AState:TGridDrawState);VIRTUAL;
PROCEDURE SetupCellColors(Col,Row:LongInt;AState:TGridDrawState;VAR Background,ForeGround:TColor);VIRTUAL;
PUBLIC
PROCEDURE Redraw(CONST rec:TRect);OVERRIDE;
DESTRUCTOR Destroy;OVERRIDE;
PROCEDURE Show;OVERRIDE;
PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
PROCEDURE BeginUpdate;
PROCEDURE EndUpdate;
PUBLIC
PROPERTY GridRects[Col,Row:LONGINT]:TRect read CellRect;
PROPERTY ColWidths[Col:LONGINT]:LONGINT read GetColWidth write SetColWidth;
PROPERTY RowHeights[Row:LONGINT]:LONGINT read GetRowHeight write SetRowHeight;
PROPERTY GridUpdateLocked:BOOLEAN read FGridUpdateLocked write SetUpdateLocked;
PROPERTY Col:LONGINT read FSelectCol write SetCol;
PROPERTY Row:LONGINT read FSelectRow write SetRow;
PROPERTY VisibleRowCount:LONGINT read GetVisibleRowCount;
PROPERTY VisibleColCount:LONGINT read GetVisibleColCount;
PROPERTY TopRow:LONGINT read FUpScrolled write SetTopRow;
PROPERTY LeftCol:LONGINT read FLeftScrolled write SetLeftCol;
PROPERTY GridWidth:LONGINT read GetGridWidth;
PROPERTY GridHeight:LONGINT read GetGridHeight;
PROPERTY FixedColor:TColor read FFixedColor write SetFixedColor;
PROPERTY FixedRows:LONGINT read FFixedRows write SetFixedRows;
PROPERTY FixedCols:LONGINT read FFixedCols write SetFixedCols;
PROPERTY DefaultColWidth:LONGINT read FDefaultColWidth write SetDefaultColWidth;
PROPERTY DefaultRowHeight:LONGINT read FDefaultRowHeight write SetDefaultRowHeight;
PROPERTY ColCount:LONGINT read FColCount write SetColCount;
PROPERTY RowCount:LONGINT read FRowCount write SetRowCount;
PROPERTY ScrollBars:TScrollStyle read FScrollBars write SetScrollBars;
PROPERTY Options:TGridOptions read FOptions write SetOptions;
PROPERTY EntryColor:TColor read FEntryColor write SetEntryColor;
PROPERTY VertScrollBar:TScrollBar read FVertScrollBar;
PROPERTY HorzScrollBar:TScrollBar read FHorzScrollBar;
PROPERTY OnSelectCell:TSelectCell read FOnSelectCell write FOnSelectCell;
PROPERTY OnClick:TNotifyEvent read FOnClick write FOnClick;
PUBLISHED
PROPERTY PopupMenu;
END;
TStringGridData=CLASS
Data:PSTRING;
END;
TStringGrid=CLASS;
{$M+}
TGetCellEvent=PROCEDURE(Grid:TStringGrid;Col,Row:LONGINT;VAR Result:STRING) OF OBJECT;
TSetCellEvent=PROCEDURE(Grid:TStringGrid;Col,Row:LONGINT;VAR NewContent:STRING) OF OBJECT;
TCanEditEvent=PROCEDURE(Grid:TStringGrid;Col,Row:LONGINT;VAR AllowEdit:BOOLEAN) OF OBJECT;
{$M-}
TStringGrid=CLASS(TGrid)
PRIVATE
FEdit:TEdit;
FColumns:TList;
FOnGetCell:TGetCellEvent;
FOnSetCell:TSetCellEvent;
FOnCanEdit:TCanEditEvent;
PROCEDURE EvEntryKillFocus(Sender:TObject);
PROCEDURE ShowEntry(CONST s:STRING);
PROCEDURE ClearFocus;OVERRIDE;
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
FUNCTION GetCell(Col,Row:LONGINT):STRING;VIRTUAL;
PROCEDURE SetCell(Col,Row:LONGINT;CONST NewContent:STRING);VIRTUAL;
PROCEDURE DrawCell(Col,Row:LONGINT;rec:TRect;AState:TGridDrawState);OVERRIDE;
PROCEDURE SetupCellDrawing(Col,Row:LONGINT;AState:TGridDrawState;
VAR Alignment:TAlignment;VAR Font:TFont);VIRTUAL;
FUNCTION SelectCell(Col,Row:LONGINT):BOOLEAN;OVERRIDE;
PROCEDURE CharEvent(VAR Msg:TWMChar;VAR ch:CHAR;RepeatCount:BYTE);OVERRIDE;
PROCEDURE ShowEditor;
PROCEDURE HideEditor;
PROCEDURE ScanEvent(VAR Msg:TWMChar;VAR KeyCode:TKeyCode;RepeatCount:BYTE);OVERRIDE;
PROCEDURE Resize;OVERRIDE;
PUBLIC
DESTRUCTOR Destroy;OVERRIDE;
PROPERTY Cells[Col,Row:LONGINT]:STRING read GetCell write SetCell;
PROPERTY XAlign;
PROPERTY XStretch;
PROPERTY YAlign;
PROPERTY YStretch;
PUBLISHED
PROPERTY Align;
PROPERTY Color;
PROPERTY ColCount;
PROPERTY PenColor;
PROPERTY DefaultColWidth;
PROPERTY DefaultRowHeight;
PROPERTY DragCursor;
PROPERTY DragMode;
PROPERTY Enabled;
PROPERTY EntryColor;
PROPERTY Font;
PROPERTY FixedColor;
PROPERTY FixedCols;
PROPERTY FixedRows;
PROPERTY Options;
PROPERTY ParentColor;
PROPERTY ParentPenColor;
PROPERTY ParentFont;
PROPERTY ParentShowHint;
PROPERTY RowCount;
PROPERTY ScrollBars;
PROPERTY ShowHint;
PROPERTY TabOrder;
PROPERTY TabStop;
PROPERTY Visible;
PROPERTY ZOrder;
PROPERTY OnCanDrag;
PROPERTY OnCanEdit:TCanEditEvent read FOnCanEdit write FOnCanEdit;
PROPERTY OnCommand;
PROPERTY OnDragDrop;
PROPERTY OnDragOver;
PROPERTY OnEndDrag;
PROPERTY OnEnter;
PROPERTY OnExit;
PROPERTY OnFontChange;
PROPERTY OnGetCell:TGetCellEvent read FOnGetCell write FOnGetCell;
PROPERTY OnSetCell:TSetCellEvent read FOnSetCell write FOnSetCell;
PROPERTY OnKeyPress;
PROPERTY OnMouseClick;
PROPERTY OnMouseDblClick;
PROPERTY OnMouseDown;
PROPERTY OnMouseMove;
PROPERTY OnMouseUp;
PROPERTY OnResize;
PROPERTY OnScan;
PROPERTY OnSelectCell;
PROPERTY OnSetupShow;
PROPERTY OnStartDrag;
END;
{$M+}
TDrawCellEvent=PROCEDURE(Sender:TObject;ACol,ARow:LONGINT;
rc:TRect;State:TGridDrawState) OF OBJECT;
TOpenEditorEvent=PROCEDURE(Sender:TObject;ACol,ARow:LONGINT) OF OBJECT;
{$M-}
TDrawGrid=CLASS(TGrid)
PRIVATE
FOnDrawCell:TDrawCellEvent;
FDefaultDrawing:BOOLEAN;
FEditorMode:BOOLEAN;
FOnOpenEditor:TOpenEditorEvent;
FOnCloseEditor:TNotifyEvent;
PRIVATE
PROCEDURE SetDefaultDrawing(NewValue:BOOLEAN);
PROCEDURE SetEditorMode(NewValue:BOOLEAN);
PROTECTED
PROCEDURE SetupComponent;OVERRIDE;
PROCEDURE DrawCell(Col,Row:LONGINT;rec:TRect;AState:TGridDrawState);OVERRIDE;
FUNCTION SelectCell(Col,Row:LONGINT):BOOLEAN;OVERRIDE;
PUBLIC
PROCEDURE SetupCellColors(Col,Row:LongInt;AState:TGridDrawState;VAR Background,ForeGround:TColor);OVERRIDE;
PROCEDURE MouseToCell(X,Y:LONGINT;VAR ACol,ARow:LONGINT);
PROCEDURE ShowEditor;
PROCEDURE HideEditor;
PROCEDURE OpenEditor(Col,Row:LONGINT);
PROCEDURE CloseEditor;
PUBLIC
PROPERTY EditorMode:BOOLEAN read FEditorMode write SetEditorMode;
PUBLISHED
PROPERTY OnDrawCell:TDrawCellEvent read FOnDrawCell write FOnDrawCell;
PROPERTY OnOpenEditor:TOpenEditorEvent read FOnOpenEditor write FOnOpenEditor;
PROPERTY OnCloseEditor:TNotifyEvent read FOnCloseEditor write FOnCloseEditor;
PROPERTY DefaultDrawing:BOOLEAN read FDefaultDrawing write SetDefaultDrawing;
END;
IMPLEMENTATION