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 >
Pascal/Delphi Source File  |  1997-04-07  |  13KB  |  297 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 Grids;
  11.  
  12.  
  13. INTERFACE
  14.  
  15. {$IFDEF OS2}
  16. USES Os2Def,BseDos,PmWin,PmGpi,PmDev,PmStdDlg;
  17. {$ENDIF}
  18.  
  19. {$IFDEF Win95}
  20. USES WinDef,WinBase,WinNT,WinUser,WinGDI,CommCtrl;
  21. {$ENDIF}
  22.  
  23. USES Messages,Dos,Classes,Forms,Graphics,Buttons,StdCtrls,DbBase,Dialogs;
  24.  
  25.  
  26. TYPE
  27.     {$M+}
  28.     TGridOptions=SET OF (goBorder,goRowSizing,goColSizing,goEditing,
  29.                          goAlwaysShowEditor,goShowSelection,goAlwaysShowSelection,
  30.                          goMouseSelect);
  31.  
  32.     TSelectCell=PROCEDURE(Sender:TObject;Col,Row:LONGINT) OF OBJECT;
  33.     {$M-}
  34.  
  35.     PGridWidthArray=^TGridWidthArray;
  36.     TGridWidthArray=ARRAY[0..$0FFFFFFF] OF LONGINT;
  37.  
  38.     TGridSelection=RECORD
  39.          Column,Row:LONGINT;
  40.     END;
  41.  
  42.     TGridDrawState=SET OF (gdSelected,gdFocused,gdFixed);
  43.  
  44.     {Custom Grid}
  45.     TGrid=CLASS(TControl)
  46.       PRIVATE
  47.          FUpdateLocked:BOOLEAN;
  48.          FFixedColor:TColor;
  49.          FFixedRows:LONGINT;
  50.          FFixedCols:LONGINT;
  51.          FDefaultColWidth:LONGINT;
  52.          FDefaultRowHeight:LONGINT;
  53.          FColCount:LONGINT;
  54.          FRowCount:LONGINT;
  55.          FColWidths:PGridWidthArray;
  56.          FRowHeights:PGridWidthArray;
  57.          FColList:TList;  {List of TColEntry}
  58.          FScrollBars:TScrollStyle;
  59.          FSizeCol:LONGINT;
  60.          FSizeRow:LONGINT;
  61.          FSizeShape:TCursor;
  62.          FSizeStartX,FSizeStartY,FSizeX,FSizeY:LONGINT;
  63.          FOptions:TGridOptions;
  64.          FEntryColor:TColor;
  65.          FGridUpdateLocked:BOOLEAN;
  66.          FSelectCol,FSelectRow:LONGINT;
  67.          FOnSelectCell:TSelectCell;
  68.          FOnClick:TNotifyEvent;
  69.          FVertScrollBar:TScrollBar;
  70.          FHorzScrollBar:TScrollBar;
  71.       PROTECTED
  72.          FLeftExtent,FUpExtent:LONGINT;
  73.          FLeftScrolled,FUpScrolled:LONGINT;
  74.       PRIVATE
  75.          PROCEDURE SetFixedColor(NewColor:TColor);
  76.          PROCEDURE SetFixedRows(NewRows:LONGINT);
  77.          PROCEDURE SetFixedCols(NewCols:LONGINT);
  78.          PROCEDURE SetDefaultColWidth(NewWidth:LONGINT);
  79.          PROCEDURE SetDefaultRowHeight(NewHeight:LONGINT);
  80.          PROCEDURE SetColCount(NewCount:LONGINT);
  81.          PROCEDURE SetRowCount(NewCount:LONGINT);
  82.          PROCEDURE SetScrollBars(NewValue:TScrollStyle);
  83.          PROCEDURE CreateHScrollBar;
  84.          PROCEDURE CreateVScrollBar;
  85.          PROCEDURE UpdateScrollBars;
  86.          FUNCTION GetSizeItem(CONST pt:TPoint;VAR Col,Row:LONGINT):TCursor;
  87.          PROCEDURE SetOptions(NewOptions:TGridOptions);
  88.          PROCEDURE SetEntryColor(NewColor:TColor);
  89.          PROCEDURE SetColWidth(Col:LONGINT;NewWidth:LONGINT);
  90.          FUNCTION GetColWidth(Col:LONGINT):LONGINT;
  91.          PROCEDURE SetRowHeight(Row:LONGINT;NewHeight:LONGINT);
  92.          FUNCTION GetRowHeight(Row:LONGINT):LONGINT;
  93.          PROCEDURE SetUpdateLocked(NewValue:BOOLEAN);
  94.          PROCEDURE GetGridExtent(VAR cx,cy:LONGINT);
  95.          PROCEDURE ClearFocus;VIRTUAL;
  96.          FUNCTION GetVisibleRowCount:LONGINT;
  97.          FUNCTION GetVisibleColCount:LONGINT;
  98.          PROCEDURE SetTopRow(NewValue:LONGINT);
  99.          PROCEDURE SetLeftCol(NewValue:LONGINT);
  100.          FUNCTION GetGridWidth:LONGINT;
  101.          FUNCTION GetGridHeight:LONGINT;
  102.          PROCEDURE SetCol(NewValue:LONGINT);
  103.          PROCEDURE SetRow(NewValue:LONGINT);
  104.          PROCEDURE SetCellColors(Col,Row:LONGINT;AState:TGridDrawState);
  105.       PROTECTED
  106.          PROCEDURE SetupComponent;OVERRIDE;
  107.          PROCEDURE Resize;OVERRIDE;
  108.          PROCEDURE Scroll(ScrollBar:TScrollBar;ScrollCode:TScrollCode;VAR ScrollPos:LONGINT);OVERRIDE;
  109.          PROCEDURE MouseClick(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  110.          PROCEDURE MouseDown(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  111.          PROCEDURE MouseUp(Button:TMouseButton;ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  112.          PROCEDURE MouseMove(ShiftState:TShiftState;X,Y:LONGINT);OVERRIDE;
  113.          PROCEDURE KillFocus;OVERRIDE;
  114.          PROCEDURE SetFocus;OVERRIDE;
  115.          PROCEDURE ScanEvent(VAR Msg:TWMChar;VAR KeyCode:TKeyCode;RepeatCount:BYTE);OVERRIDE;
  116.          FUNCTION SelectCell(Col,Row:LONGINT):BOOLEAN;VIRTUAL;
  117.          FUNCTION CellRect(Col,Row:LONGINT):TRect;
  118.          FUNCTION ScrollHorzTrack(ScrollBar:TScrollBar;NewPosition:LONGINT):LONGINT;
  119.          FUNCTION ScrollVertTrack(ScrollBar:TScrollBar;NewPosition:LONGINT):LONGINT;
  120.          PROCEDURE UpdateGridContents(NewCols,NewRows:LONGINT);VIRTUAL;
  121.          PROCEDURE SetScrollBar(ScrollBar:TScrollBar;NewValue:LONGINT);VIRTUAL;
  122.          PROCEDURE DrawCell(Col,Row:LONGINT;rec:TRect;AState:TGridDrawState);VIRTUAL;
  123.          PROCEDURE SetupCellColors(Col,Row:LongInt;AState:TGridDrawState;VAR Background,ForeGround:TColor);VIRTUAL;
  124.       PUBLIC
  125.          PROCEDURE Redraw(CONST rec:TRect);OVERRIDE;
  126.          DESTRUCTOR Destroy;OVERRIDE;
  127.          PROCEDURE Show;OVERRIDE;
  128.          PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
  129.          FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
  130.          PROCEDURE BeginUpdate;
  131.          PROCEDURE EndUpdate;
  132.       PUBLIC
  133.          PROPERTY GridRects[Col,Row:LONGINT]:TRect read CellRect;
  134.          PROPERTY ColWidths[Col:LONGINT]:LONGINT read GetColWidth write SetColWidth;
  135.          PROPERTY RowHeights[Row:LONGINT]:LONGINT read GetRowHeight write SetRowHeight;
  136.          PROPERTY GridUpdateLocked:BOOLEAN read FGridUpdateLocked write SetUpdateLocked;
  137.          PROPERTY Col:LONGINT read FSelectCol write SetCol;
  138.          PROPERTY Row:LONGINT read FSelectRow write SetRow;
  139.          PROPERTY VisibleRowCount:LONGINT read GetVisibleRowCount;
  140.          PROPERTY VisibleColCount:LONGINT read GetVisibleColCount;
  141.          PROPERTY TopRow:LONGINT read FUpScrolled write SetTopRow;
  142.          PROPERTY LeftCol:LONGINT read FLeftScrolled write SetLeftCol;
  143.          PROPERTY GridWidth:LONGINT read GetGridWidth;
  144.          PROPERTY GridHeight:LONGINT read GetGridHeight;
  145.          PROPERTY FixedColor:TColor read FFixedColor write SetFixedColor;
  146.          PROPERTY FixedRows:LONGINT read FFixedRows write SetFixedRows;
  147.          PROPERTY FixedCols:LONGINT read FFixedCols write SetFixedCols;
  148.          PROPERTY DefaultColWidth:LONGINT read FDefaultColWidth write SetDefaultColWidth;
  149.          PROPERTY DefaultRowHeight:LONGINT read FDefaultRowHeight write SetDefaultRowHeight;
  150.          PROPERTY ColCount:LONGINT read FColCount write SetColCount;
  151.          PROPERTY RowCount:LONGINT read FRowCount write SetRowCount;
  152.          PROPERTY ScrollBars:TScrollStyle read FScrollBars write SetScrollBars;
  153.          PROPERTY Options:TGridOptions read FOptions write SetOptions;
  154.          PROPERTY EntryColor:TColor read FEntryColor write SetEntryColor;
  155.          PROPERTY VertScrollBar:TScrollBar read FVertScrollBar;
  156.          PROPERTY HorzScrollBar:TScrollBar read FHorzScrollBar;
  157.  
  158.          PROPERTY OnSelectCell:TSelectCell read FOnSelectCell write FOnSelectCell;
  159.          PROPERTY OnClick:TNotifyEvent read FOnClick write FOnClick;
  160.       PUBLISHED
  161.          PROPERTY PopupMenu;
  162.     END;
  163.  
  164.  
  165.     TStringGridData=CLASS
  166.          Data:PSTRING;
  167.     END;
  168.  
  169.     TStringGrid=CLASS;
  170.  
  171.     {$M+}
  172.     TGetCellEvent=PROCEDURE(Grid:TStringGrid;Col,Row:LONGINT;VAR Result:STRING) OF OBJECT;
  173.     TSetCellEvent=PROCEDURE(Grid:TStringGrid;Col,Row:LONGINT;VAR NewContent:STRING) OF OBJECT;
  174.     TCanEditEvent=PROCEDURE(Grid:TStringGrid;Col,Row:LONGINT;VAR AllowEdit:BOOLEAN) OF OBJECT;
  175.     {$M-}
  176.  
  177.     TStringGrid=CLASS(TGrid)
  178.       PRIVATE
  179.          FEdit:TEdit;
  180.          FColumns:TList;
  181.          FOnGetCell:TGetCellEvent;
  182.          FOnSetCell:TSetCellEvent;
  183.          FOnCanEdit:TCanEditEvent;
  184.          PROCEDURE EvEntryKillFocus(Sender:TObject);
  185.          PROCEDURE ShowEntry(CONST s:STRING);
  186.          PROCEDURE ClearFocus;OVERRIDE;
  187.       PROTECTED
  188.          PROCEDURE SetupComponent;OVERRIDE;
  189.          FUNCTION GetCell(Col,Row:LONGINT):STRING;VIRTUAL;
  190.          PROCEDURE SetCell(Col,Row:LONGINT;CONST NewContent:STRING);VIRTUAL;
  191.          PROCEDURE DrawCell(Col,Row:LONGINT;rec:TRect;AState:TGridDrawState);OVERRIDE;
  192.          PROCEDURE SetupCellDrawing(Col,Row:LONGINT;AState:TGridDrawState;
  193.                                     VAR Alignment:TAlignment;VAR Font:TFont);VIRTUAL;
  194.          FUNCTION SelectCell(Col,Row:LONGINT):BOOLEAN;OVERRIDE;
  195.          PROCEDURE CharEvent(VAR Msg:TWMChar;VAR ch:CHAR;RepeatCount:BYTE);OVERRIDE;
  196.          PROCEDURE ShowEditor;
  197.          PROCEDURE HideEditor;
  198.          PROCEDURE ScanEvent(VAR Msg:TWMChar;VAR KeyCode:TKeyCode;RepeatCount:BYTE);OVERRIDE;
  199.          PROCEDURE Resize;OVERRIDE;
  200.       PUBLIC
  201.          DESTRUCTOR Destroy;OVERRIDE;
  202.          PROPERTY Cells[Col,Row:LONGINT]:STRING read GetCell write SetCell;
  203.          PROPERTY XAlign;
  204.          PROPERTY XStretch;
  205.          PROPERTY YAlign;
  206.          PROPERTY YStretch;
  207.       PUBLISHED
  208.          PROPERTY Align;
  209.          PROPERTY Color;
  210.          PROPERTY ColCount;
  211.          PROPERTY PenColor;
  212.          PROPERTY DefaultColWidth;
  213.          PROPERTY DefaultRowHeight;
  214.          PROPERTY DragCursor;
  215.          PROPERTY DragMode;
  216.          PROPERTY Enabled;
  217.          PROPERTY EntryColor;
  218.          PROPERTY Font;
  219.          PROPERTY FixedColor;
  220.          PROPERTY FixedCols;
  221.          PROPERTY FixedRows;
  222.          PROPERTY Options;
  223.          PROPERTY ParentColor;
  224.          PROPERTY ParentPenColor;
  225.          PROPERTY ParentFont;
  226.          PROPERTY ParentShowHint;
  227.          PROPERTY RowCount;
  228.          PROPERTY ScrollBars;
  229.          PROPERTY ShowHint;
  230.          PROPERTY TabOrder;
  231.          PROPERTY TabStop;
  232.          PROPERTY Visible;
  233.          PROPERTY ZOrder;
  234.  
  235.          PROPERTY OnCanDrag;
  236.          PROPERTY OnCanEdit:TCanEditEvent read FOnCanEdit write FOnCanEdit;
  237.          PROPERTY OnCommand;
  238.          PROPERTY OnDragDrop;
  239.          PROPERTY OnDragOver;
  240.          PROPERTY OnEndDrag;
  241.          PROPERTY OnEnter;
  242.          PROPERTY OnExit;
  243.          PROPERTY OnFontChange;
  244.          PROPERTY OnGetCell:TGetCellEvent read FOnGetCell write FOnGetCell;
  245.          PROPERTY OnSetCell:TSetCellEvent read FOnSetCell write FOnSetCell;
  246.          PROPERTY OnKeyPress;
  247.          PROPERTY OnMouseClick;
  248.          PROPERTY OnMouseDblClick;
  249.          PROPERTY OnMouseDown;
  250.          PROPERTY OnMouseMove;
  251.          PROPERTY OnMouseUp;
  252.          PROPERTY OnResize;
  253.          PROPERTY OnScan;
  254.          PROPERTY OnSelectCell;
  255.          PROPERTY OnSetupShow;
  256.          PROPERTY OnStartDrag;
  257.     END;
  258.  
  259.     {$M+}
  260.     TDrawCellEvent=PROCEDURE(Sender:TObject;ACol,ARow:LONGINT;
  261.                              rc:TRect;State:TGridDrawState) OF OBJECT;
  262.     TOpenEditorEvent=PROCEDURE(Sender:TObject;ACol,ARow:LONGINT) OF OBJECT;
  263.     {$M-}
  264.  
  265.     TDrawGrid=CLASS(TGrid)
  266.       PRIVATE
  267.          FOnDrawCell:TDrawCellEvent;
  268.          FDefaultDrawing:BOOLEAN;
  269.          FEditorMode:BOOLEAN;
  270.          FOnOpenEditor:TOpenEditorEvent;
  271.          FOnCloseEditor:TNotifyEvent;
  272.       PRIVATE
  273.          PROCEDURE SetDefaultDrawing(NewValue:BOOLEAN);
  274.          PROCEDURE SetEditorMode(NewValue:BOOLEAN);
  275.       PROTECTED
  276.          PROCEDURE SetupComponent;OVERRIDE;
  277.          PROCEDURE DrawCell(Col,Row:LONGINT;rec:TRect;AState:TGridDrawState);OVERRIDE;
  278.          FUNCTION SelectCell(Col,Row:LONGINT):BOOLEAN;OVERRIDE;
  279.       PUBLIC
  280.          PROCEDURE SetupCellColors(Col,Row:LongInt;AState:TGridDrawState;VAR Background,ForeGround:TColor);OVERRIDE;
  281.          PROCEDURE MouseToCell(X,Y:LONGINT;VAR ACol,ARow:LONGINT);
  282.          PROCEDURE ShowEditor;
  283.          PROCEDURE HideEditor;
  284.          PROCEDURE OpenEditor(Col,Row:LONGINT);
  285.          PROCEDURE CloseEditor;
  286.       PUBLIC
  287.          PROPERTY EditorMode:BOOLEAN read FEditorMode write SetEditorMode;
  288.       PUBLISHED
  289.          PROPERTY OnDrawCell:TDrawCellEvent read FOnDrawCell write FOnDrawCell;
  290.          PROPERTY OnOpenEditor:TOpenEditorEvent read FOnOpenEditor write FOnOpenEditor;
  291.          PROPERTY OnCloseEditor:TNotifyEvent read FOnCloseEditor write FOnCloseEditor;
  292.          PROPERTY DefaultDrawing:BOOLEAN read FDefaultDrawing write SetDefaultDrawing;
  293.     END;
  294.  
  295. IMPLEMENTATION
  296.  
  297.