home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / GRIDS.HPP < prev    next >
C/C++ Source or Header  |  1997-02-28  |  25KB  |  602 lines

  1. //----------------------------------------------------------------------------
  2. // Grids.hpp - bcbdcc32 generated hdr (DO NOT EDIT) rev: 0
  3. // From: Grids.pas
  4. //----------------------------------------------------------------------------
  5. #ifndef GridsHPP
  6. #define GridsHPP
  7. //----------------------------------------------------------------------------
  8. #include <Mask.hpp>
  9. #include <StdCtrls.hpp>
  10. #include <Forms.hpp>
  11. #include <Controls.hpp>
  12. #include <Menus.hpp>
  13. #include <Graphics.hpp>
  14. #include <Classes.hpp>
  15. #include <Windows.hpp>
  16. #include <Messages.hpp>
  17. #include <SysUtils.hpp>
  18. #include <System.hpp>
  19. #pragma warn -par
  20. #pragma warn -hid 
  21. #pragma warn -inl
  22.  
  23. namespace Grids
  24. {
  25. //-- type declarations -------------------------------------------------------
  26. class __declspec(delphiclass) EInvalidGridOperation;
  27. class __declspec(pascalimplementation) EInvalidGridOperation : public Sysutils::Exception
  28. {
  29.     typedef Sysutils::Exception inherited;
  30.     
  31. public:
  32.     /* Exception.Create */ __fastcall EInvalidGridOperation(const System::AnsiString Msg) : Sysutils::Exception(
  33.         Msg) { }
  34.     /* Exception.CreateFmt */ __fastcall EInvalidGridOperation(const System::AnsiString Msg, const System::TVarRec 
  35.         * Args, const int Args_Size) : Sysutils::Exception(Msg, Args, Args_Size) { }
  36.     /* Exception.CreateRes */ __fastcall EInvalidGridOperation(int Ident) : Sysutils::Exception(Ident) { }
  37.         
  38.     /* Exception.CreateResFmt */ __fastcall EInvalidGridOperation(int Ident, const System::TVarRec * Args
  39.         , const int Args_Size) : Sysutils::Exception(Ident, Args, Args_Size) { }
  40.     /* Exception.CreateHelp */ __fastcall EInvalidGridOperation(const System::AnsiString Msg, int AHelpContext
  41.         ) : Sysutils::Exception(Msg, AHelpContext) { }
  42.     /* Exception.CreateFmtHelp */ __fastcall EInvalidGridOperation(const System::AnsiString Msg, const 
  43.         System::TVarRec * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Msg, Args, Args_Size
  44.         , AHelpContext) { }
  45.     /* Exception.CreateResHelp */ __fastcall EInvalidGridOperation(int Ident, int AHelpContext) : Sysutils::
  46.         Exception(Ident, AHelpContext) { }
  47.     /* Exception.CreateResFmtHelp */ __fastcall EInvalidGridOperation(int Ident, const System::TVarRec 
  48.         * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Ident, Args, Args_Size, AHelpContext
  49.         ) { }
  50.     
  51. public:
  52.     /* TObject.Destroy */ __fastcall virtual ~EInvalidGridOperation(void) { }
  53.     
  54. };
  55.  
  56. typedef int __fastcall (__closure *TGetExtentsFunc)(long Index);
  57.  
  58. struct TGridAxisDrawInfo
  59. {
  60.     int EffectiveLineWidth;
  61.     int FixedBoundary;
  62.     int GridBoundary;
  63.     int GridExtent;
  64.     long LastFullVisibleCell;
  65.     int FullVisBoundary;
  66.     int FixedCellCount;
  67.     int FirstGridCell;
  68.     int GridCellCount;
  69.     TGetExtentsFunc GetExtent;
  70. } ;
  71.  
  72. struct TGridDrawInfo
  73. {
  74.     TGridAxisDrawInfo Horz;
  75.     TGridAxisDrawInfo Vert;
  76. } ;
  77.  
  78. enum TGridState { gsNormal, gsSelecting, gsRowSizing, gsColSizing, gsRowMoving, gsColMoving };
  79.  
  80. class __declspec(delphiclass) TInplaceEdit;
  81. class __declspec(delphiclass) TCustomGrid;
  82. struct TGridCoord
  83. {
  84.     long X;
  85.     long Y;
  86. } ;
  87.  
  88. enum TGridOption { goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goDrawFocusSelected, 
  89.     goRowSizing, goColSizing, goRowMoving, goColMoving, goEditing, goTabs, goRowSelect, goAlwaysShowEditor, 
  90.     goThumbTracking };
  91.  
  92. typedef Set<TGridOption, goFixedVertLine, goThumbTracking>  TGridOptions;
  93.  
  94. struct TGridRect;
  95. enum Grids_3 { gdSelected, gdFocused, gdFixed };
  96.  
  97. typedef Set<Grids_3, gdSelected, gdFixed>  TGridDrawState;
  98.  
  99. enum Grids_4 { sdLeft, sdRight, sdUp, sdDown };
  100.  
  101. typedef Set<Grids_4, sdLeft, sdDown>  TGridScrollDirection;
  102.  
  103. class __declspec(pascalimplementation) TCustomGrid : public Controls::TCustomControl
  104. {
  105.     typedef Controls::TCustomControl inherited;
  106.     
  107. private:
  108.     TGridCoord FAnchor;
  109.     TFormBorderStyle FBorderStyle;
  110.     bool FCanEditModify;
  111.     long FColCount;
  112.     void *FColWidths;
  113.     void *FTabStops;
  114.     TGridCoord FCurrent;
  115.     int FDefaultColWidth;
  116.     int FDefaultRowHeight;
  117.     int FFixedCols;
  118.     int FFixedRows;
  119.     Graphics::TColor FFixedColor;
  120.     int FGridLineWidth;
  121.     TGridOptions FOptions;
  122.     long FRowCount;
  123.     void *FRowHeights;
  124.     TScrollStyle FScrollBars;
  125.     TGridCoord FTopLeft;
  126.     long FSizingIndex;
  127.     int FSizingPos;
  128.     int FSizingOfs;
  129.     long FMoveIndex;
  130.     long FMovePos;
  131.     POINT FHitTest;
  132.     TInplaceEdit* FInplaceEdit;
  133.     long FInplaceCol;
  134.     long FInplaceRow;
  135.     bool FDefaultDrawing;
  136.     bool FEditorMode;
  137.     int FColOffset;
  138.     TGridCoord __fastcall CalcCoordFromPoint(int X, int Y, const TGridDrawInfo &DrawInfo);
  139.     void __fastcall CalcDrawInfo(TGridDrawInfo &DrawInfo);
  140.     void __fastcall CalcDrawInfoXY(TGridDrawInfo &DrawInfo, int UseWidth, int UseHeight);
  141.     void __fastcall CalcFixedInfo(TGridDrawInfo &DrawInfo);
  142.     TGridCoord __fastcall CalcMaxTopLeft(const TGridCoord &Coord, const TGridDrawInfo &DrawInfo);
  143.     void __fastcall CalcSizingState(int X, int Y, TGridState &State, long &Index, int &SizingPos, int &
  144.         SizingOfs, TGridDrawInfo &FixedInfo);
  145.     void __fastcall ChangeSize(long NewColCount, long NewRowCount);
  146.     void __fastcall ClampInView(const TGridCoord &Coord);
  147.     void __fastcall DrawSizingLine(const TGridDrawInfo &DrawInfo);
  148.     void __fastcall DrawMove(void);
  149.     void __fastcall FocusCell(long ACol, long ARow, bool MoveAnchor);
  150.     void __fastcall GridRectToScreenRect(const TGridRect &GridRect, Windows::TRect &ScreenRect, bool IncludeLine
  151.         );
  152.     void __fastcall HideEdit(void);
  153.     void __fastcall Initialize(void);
  154.     void __fastcall InvalidateGrid(void);
  155.     void __fastcall InvalidateRect(const TGridRect &ARect);
  156.     void __fastcall InvertRect(const Windows::TRect &Rect);
  157.     void __fastcall ModifyScrollBar(Cardinal ScrollBar, Cardinal ScrollCode, Cardinal Pos);
  158.     void __fastcall MoveAdjust(long &CellPos, long FromIndex, long ToIndex);
  159.     void __fastcall MoveAnchor(const TGridCoord &NewAnchor);
  160.     void __fastcall MoveAndScroll(int Mouse, int CellHit, TGridDrawInfo &DrawInfo, TGridAxisDrawInfo &Axis
  161.         , int Scrollbar);
  162.     void __fastcall MoveCurrent(long ACol, long ARow, bool MoveAnchor, bool Show);
  163.     void __fastcall MoveTopLeft(long ALeft, long ATop);
  164.     void __fastcall ResizeCol(long Index, int OldSize, int NewSize);
  165.     void __fastcall ResizeRow(long Index, int OldSize, int NewSize);
  166.     void __fastcall SelectionMoved(const TGridRect &OldSel);
  167.     void __fastcall ScrollDataInfo(int DX, int DY, TGridDrawInfo &DrawInfo);
  168.     void __fastcall TopLeftMoved(const TGridCoord &OldTopLeft);
  169.     void __fastcall UpdateScrollPos(void);
  170.     void __fastcall UpdateScrollRange(void);
  171.     int __fastcall GetColWidths(long Index);
  172.     int __fastcall GetRowHeights(long Index);
  173.     TGridRect __fastcall GetSelection(void);
  174.     bool __fastcall GetTabStops(long Index);
  175.     int __fastcall GetVisibleColCount(void);
  176.     int __fastcall GetVisibleRowCount(void);
  177.     void __fastcall ReadColWidths(Classes::TReader* Reader);
  178.     void __fastcall ReadRowHeights(Classes::TReader* Reader);
  179.     void __fastcall SetBorderStyle(Forms::TBorderStyle Value);
  180.     void __fastcall SetCol(long Value);
  181.     void __fastcall SetColCount(long Value);
  182.     void __fastcall SetColWidths(long Index, int Value);
  183.     void __fastcall SetDefaultColWidth(int Value);
  184.     void __fastcall SetDefaultRowHeight(int Value);
  185.     void __fastcall SetEditorMode(bool Value);
  186.     void __fastcall SetFixedColor(Graphics::TColor Value);
  187.     void __fastcall SetFixedCols(int Value);
  188.     void __fastcall SetFixedRows(int Value);
  189.     void __fastcall SetGridLineWidth(int Value);
  190.     void __fastcall SetLeftCol(long Value);
  191.     void __fastcall SetOptions(TGridOptions Value);
  192.     void __fastcall SetRow(long Value);
  193.     void __fastcall SetRowCount(long Value);
  194.     void __fastcall SetRowHeights(long Index, int Value);
  195.     void __fastcall SetScrollBars(Stdctrls::TScrollStyle Value);
  196.     void __fastcall SetSelection(const TGridRect &Value);
  197.     void __fastcall SetTabStops(long Index, bool Value);
  198.     void __fastcall SetTopRow(long Value);
  199.     void __fastcall UpdateEdit(void);
  200.     void __fastcall UpdateText(void);
  201.     void __fastcall WriteColWidths(Classes::TWriter* Writer);
  202.     void __fastcall WriteRowHeights(Classes::TWriter* Writer);
  203.     MESSAGE void __fastcall CMCancelMode(Messages::TMessage &Msg);
  204.     HIDESBASE MESSAGE void __fastcall CMFontChanged(Messages::TMessage &Message);
  205.     HIDESBASE MESSAGE void __fastcall CMCtl3DChanged(Messages::TMessage &Message);
  206.     HIDESBASE MESSAGE void __fastcall CMDesignHitTest(Messages::TWMMouse &Msg);
  207.     MESSAGE void __fastcall CMWantSpecialKey(Messages::TWMKey &Msg);
  208.     HIDESBASE MESSAGE void __fastcall WMChar(Messages::TWMKey &Msg);
  209.     HIDESBASE MESSAGE void __fastcall WMCommand(Messages::TWMCommand &Message);
  210.     MESSAGE void __fastcall WMGetDlgCode(Messages::TWMNoParams &Msg);
  211.     HIDESBASE MESSAGE void __fastcall WMHScroll(Messages::TWMScroll &Msg);
  212.     HIDESBASE MESSAGE void __fastcall WMKillFocus(Messages::TWMKillFocus &Msg);
  213.     HIDESBASE MESSAGE void __fastcall WMLButtonDown(Messages::TMessage &Message);
  214.     HIDESBASE MESSAGE void __fastcall WMNCHitTest(Messages::TWMNCHitTest &Msg);
  215.     HIDESBASE MESSAGE void __fastcall WMSetCursor(Messages::TWMSetCursor &Msg);
  216.     HIDESBASE MESSAGE void __fastcall WMSetFocus(Messages::TWMSetFocus &Msg);
  217.     HIDESBASE MESSAGE void __fastcall WMSize(Messages::TWMSize &Msg);
  218.     MESSAGE void __fastcall WMTimer(Messages::TWMTimer &Msg);
  219.     HIDESBASE MESSAGE void __fastcall WMVScroll(Messages::TWMScroll &Msg);
  220.     
  221. protected:
  222.     TGridState FGridState;
  223.     bool FSaveCellExtents;
  224.     virtual TInplaceEdit* __fastcall CreateEditor(void);
  225.     virtual void __fastcall CreateParams(Controls::TCreateParams &Params);
  226.     virtual void __fastcall KeyDown(Word &Key, Classes::TShiftState Shift);
  227.     virtual void __fastcall KeyPress(char &Key);
  228.     virtual void __fastcall MouseDown(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, 
  229.         int Y);
  230.     virtual void __fastcall MouseMove(Classes::TShiftState Shift, int X, int Y);
  231.     virtual void __fastcall MouseUp(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int 
  232.         Y);
  233.     virtual void __fastcall AdjustSize(long Index, long Amount, bool Rows);
  234.     Windows::TRect __fastcall BoxRect(long ALeft, long ATop, long ARight, long ABottom);
  235.     virtual void __fastcall DoExit(void);
  236.     Windows::TRect __fastcall CellRect(long ACol, long ARow);
  237.     virtual bool __fastcall CanEditAcceptKey(char Key);
  238.     virtual bool __fastcall CanGridAcceptKey(Word Key, Classes::TShiftState Shift);
  239.     virtual bool __fastcall CanEditModify(void);
  240.     virtual bool __fastcall CanEditShow(void);
  241.     virtual System::AnsiString __fastcall GetEditText(long ACol, long ARow);
  242.     virtual void __fastcall SetEditText(long ACol, long ARow, const System::AnsiString Value);
  243.     virtual System::AnsiString __fastcall GetEditMask(long ACol, long ARow);
  244.     virtual int __fastcall GetEditLimit(void);
  245.     int __fastcall GetGridWidth(void);
  246.     int __fastcall GetGridHeight(void);
  247.     void __fastcall HideEditor(void);
  248.     void __fastcall ShowEditor(void);
  249.     void __fastcall ShowEditorChar(char Ch);
  250.     void __fastcall InvalidateEditor(void);
  251.     void __fastcall MoveColumn(long FromIndex, long ToIndex);
  252.     virtual void __fastcall ColumnMoved(long FromIndex, long ToIndex);
  253.     void __fastcall MoveRow(long FromIndex, long ToIndex);
  254.     virtual void __fastcall RowMoved(long FromIndex, long ToIndex);
  255.     virtual void __fastcall DrawCell(long ACol, long ARow, const Windows::TRect &ARect, TGridDrawState 
  256.         AState) = 0;
  257.     virtual void __fastcall DefineProperties(Classes::TFiler* Filer);
  258.     TGridCoord __fastcall MouseCoord(int X, int Y);
  259.     void __fastcall MoveColRow(long ACol, long ARow, bool MoveAnchor, bool Show);
  260.     virtual bool __fastcall SelectCell(long ACol, long ARow);
  261.     virtual void __fastcall SizeChanged(long OldColCount, long OldRowCount);
  262.     bool __fastcall Sizing(int X, int Y);
  263.     void __fastcall ScrollData(int DX, int DY);
  264.     void __fastcall InvalidateCell(long ACol, long ARow);
  265.     void __fastcall InvalidateCol(long ACol);
  266.     void __fastcall InvalidateRow(long ARow);
  267.     virtual void __fastcall TopLeftChanged(void);
  268.     virtual void __fastcall TimedScroll(TGridScrollDirection Direction);
  269.     virtual void __fastcall Paint(void);
  270.     virtual void __fastcall ColWidthsChanged(void);
  271.     virtual void __fastcall RowHeightsChanged(void);
  272.     void __fastcall DeleteColumn(long ACol);
  273.     void __fastcall DeleteRow(long ARow);
  274.     void __fastcall UpdateDesigner(void);
  275.     __property Forms::TBorderStyle BorderStyle = {read=FBorderStyle, write=SetBorderStyle, default=1};
  276.     __property long Col = {read=FCurrent.X, write=SetCol, nodefault};
  277.     __property Color ;
  278.     __property long ColCount = {read=FColCount, write=SetColCount, default=5};
  279.     __property int ColWidths[long Index] = {read=GetColWidths, write=SetColWidths};
  280.     __property int DefaultColWidth = {read=FDefaultColWidth, write=SetDefaultColWidth, default=64};
  281.     __property bool DefaultDrawing = {read=FDefaultDrawing, write=FDefaultDrawing, default=1};
  282.     __property int DefaultRowHeight = {read=FDefaultRowHeight, write=SetDefaultRowHeight, default=24};
  283.     __property bool EditorMode = {read=FEditorMode, write=SetEditorMode, nodefault};
  284.     __property Graphics::TColor FixedColor = {read=FFixedColor, write=SetFixedColor, default=-2147483633
  285.         };
  286.     __property int FixedCols = {read=FFixedCols, write=SetFixedCols, default=1};
  287.     __property int FixedRows = {read=FFixedRows, write=SetFixedRows, default=1};
  288.     __property int GridHeight = {read=GetGridHeight, nodefault};
  289.     __property int GridLineWidth = {read=FGridLineWidth, write=SetGridLineWidth, default=1};
  290.     __property int GridWidth = {read=GetGridWidth, nodefault};
  291.     __property TInplaceEdit* InplaceEditor = {read=FInplaceEdit, nodefault};
  292.     __property long LeftCol = {read=FTopLeft.X, write=SetLeftCol, nodefault};
  293.     __property TGridOptions Options = {read=FOptions, write=SetOptions, default=31};
  294.     __property ParentColor ;
  295.     __property long Row = {read=FCurrent.Y, write=SetRow, nodefault};
  296.     __property long RowCount = {read=FRowCount, write=SetRowCount, default=5};
  297.     __property int RowHeights[long Index] = {read=GetRowHeights, write=SetRowHeights};
  298.     __property Stdctrls::TScrollStyle ScrollBars = {read=FScrollBars, write=SetScrollBars, default=3};
  299.     __property TGridRect Selection = {read=GetSelection, write=SetSelection};
  300.     __property bool TabStops[long Index] = {read=GetTabStops, write=SetTabStops};
  301.     __property long TopRow = {read=FTopLeft.Y, write=SetTopRow, nodefault};
  302.     __property int VisibleColCount = {read=GetVisibleColCount, nodefault};
  303.     __property int VisibleRowCount = {read=GetVisibleRowCount, nodefault};
  304.     
  305. public:
  306.     __fastcall virtual TCustomGrid(Classes::TComponent* AOwner);
  307.     __fastcall virtual ~TCustomGrid(void);
  308.     
  309. __published:
  310.     __property TabStop ;
  311. public:
  312.     /* TWinControl.CreateParented */ __fastcall TCustomGrid(HWND ParentWindow) : Controls::TCustomControl(
  313.         ParentWindow) { }
  314.     
  315. };
  316.  
  317. class __declspec(pascalimplementation) TInplaceEdit : public Mask::TCustomMaskEdit
  318. {
  319.     typedef Mask::TCustomMaskEdit inherited;
  320.     
  321. private:
  322.     TCustomGrid* FGrid;
  323.     long FClickTime;
  324.     void __fastcall InternalMove(const Windows::TRect &Loc, bool Redraw);
  325.     void __fastcall SetGrid(TCustomGrid* Value);
  326.     HIDESBASE MESSAGE void __fastcall CMShowingChanged(Messages::TMessage &Message);
  327.     MESSAGE void __fastcall WMGetDlgCode(Messages::TWMNoParams &Message);
  328.     HIDESBASE MESSAGE void __fastcall WMPaste(void *Message);
  329.     HIDESBASE MESSAGE void __fastcall WMCut(void *Message);
  330.     MESSAGE void __fastcall WMClear(void *Message);
  331.     
  332. protected:
  333.     virtual void __fastcall CreateParams(Controls::TCreateParams &Params);
  334.     virtual void __fastcall DblClick(void);
  335.     virtual bool __fastcall EditCanModify(void);
  336.     virtual void __fastcall KeyDown(Word &Key, Classes::TShiftState Shift);
  337.     virtual void __fastcall KeyPress(char &Key);
  338.     virtual void __fastcall KeyUp(Word &Key, Classes::TShiftState Shift);
  339.     virtual void __fastcall BoundsChanged(void);
  340.     virtual void __fastcall UpdateContents(void);
  341.     virtual void __fastcall WndProc(Messages::TMessage &Message);
  342.     __property TCustomGrid* Grid = {read=FGrid, nodefault};
  343.     
  344. public:
  345.     __fastcall virtual TInplaceEdit(Classes::TComponent* AOwner);
  346.     void __fastcall Deselect(void);
  347.     HIDESBASE void __fastcall Hide(void);
  348.     HIDESBASE void __fastcall Invalidate(void);
  349.     void __fastcall Move(const Windows::TRect &Loc);
  350.     bool __fastcall PosEqual(const Windows::TRect &Rect);
  351.     HIDESBASE void __fastcall SetFocus(void);
  352.     void __fastcall UpdateLoc(const Windows::TRect &Loc);
  353.     HIDESBASE bool __fastcall Visible(void);
  354. public:
  355.     /* TWinControl.CreateParented */ __fastcall TInplaceEdit(HWND ParentWindow) : Mask::TCustomMaskEdit(
  356.         ParentWindow) { }
  357.     /* TWinControl.Destroy */ __fastcall virtual ~TInplaceEdit(void) { }
  358.     
  359. };
  360.  
  361. struct TGridRect
  362. {
  363.     
  364.     union
  365.     {
  366.         struct 
  367.         {
  368.             TGridCoord TopLeft;
  369.             TGridCoord BottomRight;
  370.             
  371.         };
  372.         struct 
  373.         {
  374.             long Left;
  375.             long Top;
  376.             long Right;
  377.             long Bottom;
  378.             
  379.         };
  380.         
  381.     };
  382. } ;
  383.  
  384. typedef void __fastcall (__closure *TSelectCellEvent)(System::TObject* Sender, long Col, long Row, bool 
  385.     &CanSelect);
  386.  
  387. typedef void __fastcall (__closure *TDrawCellEvent)(System::TObject* Sender, long Col, long Row, const 
  388.     Windows::TRect &Rect, TGridDrawState State);
  389.  
  390. typedef void __fastcall (__closure *TGetEditEvent)(System::TObject* Sender, long ACol, long ARow,  System::AnsiString &
  391.     Value);
  392.  
  393. typedef void __fastcall (__closure *TSetEditEvent)(System::TObject* Sender, long ACol, long ARow, const System::AnsiString 
  394.     Value);
  395.  
  396. typedef void __fastcall (__closure *TMovedEvent)(System::TObject* Sender, long FromIndex, long ToIndex
  397.     );
  398.  
  399. class __declspec(delphiclass) TDrawGrid;
  400. class __declspec(pascalimplementation) TDrawGrid : public TCustomGrid
  401. {
  402.     typedef TCustomGrid inherited;
  403.     
  404. private:
  405.     TMovedEvent FOnColumnMoved;
  406.     TDrawCellEvent FOnDrawCell;
  407.     TGetEditEvent FOnGetEditMask;
  408.     TGetEditEvent FOnGetEditText;
  409.     TMovedEvent FOnRowMoved;
  410.     TSelectCellEvent FOnSelectCell;
  411.     TSetEditEvent FOnSetEditText;
  412.     Classes::TNotifyEvent FOnTopLeftChanged;
  413.     
  414. protected:
  415.     virtual void __fastcall ColumnMoved(long FromIndex, long ToIndex);
  416.     virtual void __fastcall DrawCell(long ACol, long ARow, const Windows::TRect &ARect, TGridDrawState 
  417.         AState);
  418.     virtual System::AnsiString __fastcall GetEditMask(long ACol, long ARow);
  419.     virtual System::AnsiString __fastcall GetEditText(long ACol, long ARow);
  420.     virtual void __fastcall RowMoved(long FromIndex, long ToIndex);
  421.     virtual bool __fastcall SelectCell(long ACol, long ARow);
  422.     virtual void __fastcall SetEditText(long ACol, long ARow, const System::AnsiString Value);
  423.     virtual void __fastcall TopLeftChanged(void);
  424.     
  425. public:
  426.     HIDESBASE Windows::TRect __fastcall CellRect(long ACol, long ARow);
  427.     void __fastcall MouseToCell(int X, int Y, long &ACol, long &ARow);
  428.     __property Canvas ;
  429.     __property Col ;
  430.     __property ColWidths ;
  431.     __property EditorMode ;
  432.     __property GridHeight ;
  433.     __property GridWidth ;
  434.     __property LeftCol ;
  435.     __property Selection ;
  436.     __property Row ;
  437.     __property RowHeights ;
  438.     __property TabStops ;
  439.     __property TopRow ;
  440.     
  441. __published:
  442.     __property Align ;
  443.     __property BorderStyle ;
  444.     __property Color ;
  445.     __property ColCount ;
  446.     __property Ctl3D ;
  447.     __property DefaultColWidth ;
  448.     __property DefaultRowHeight ;
  449.     __property DefaultDrawing ;
  450.     __property DragCursor ;
  451.     __property DragMode ;
  452.     __property Enabled ;
  453.     __property FixedColor ;
  454.     __property FixedCols ;
  455.     __property RowCount ;
  456.     __property FixedRows ;
  457.     __property Font ;
  458.     __property GridLineWidth ;
  459.     __property Options ;
  460.     __property ParentColor ;
  461.     __property ParentCtl3D ;
  462.     __property ParentFont ;
  463.     __property ParentShowHint ;
  464.     __property PopupMenu ;
  465.     __property ScrollBars ;
  466.     __property ShowHint ;
  467.     __property TabOrder ;
  468.     __property TabStop ;
  469.     __property Visible ;
  470.     __property VisibleColCount ;
  471.     __property VisibleRowCount ;
  472.     __property OnClick ;
  473.     __property TMovedEvent OnColumnMoved = {read=FOnColumnMoved, write=FOnColumnMoved};
  474.     __property OnDblClick ;
  475.     __property OnDragDrop ;
  476.     __property OnDragOver ;
  477.     __property TDrawCellEvent OnDrawCell = {read=FOnDrawCell, write=FOnDrawCell};
  478.     __property OnEndDrag ;
  479.     __property OnEnter ;
  480.     __property OnExit ;
  481.     __property TGetEditEvent OnGetEditMask = {read=FOnGetEditMask, write=FOnGetEditMask};
  482.     __property TGetEditEvent OnGetEditText = {read=FOnGetEditText, write=FOnGetEditText};
  483.     __property OnKeyDown ;
  484.     __property OnKeyPress ;
  485.     __property OnKeyUp ;
  486.     __property OnMouseDown ;
  487.     __property OnMouseMove ;
  488.     __property OnMouseUp ;
  489.     __property TMovedEvent OnRowMoved = {read=FOnRowMoved, write=FOnRowMoved};
  490.     __property TSelectCellEvent OnSelectCell = {read=FOnSelectCell, write=FOnSelectCell};
  491.     __property TSetEditEvent OnSetEditText = {read=FOnSetEditText, write=FOnSetEditText};
  492.     __property OnStartDrag ;
  493.     __property Classes::TNotifyEvent OnTopLeftChanged = {read=FOnTopLeftChanged, write=FOnTopLeftChanged
  494.         };
  495. public:
  496.     /* TCustomGrid.Create */ __fastcall virtual TDrawGrid(Classes::TComponent* AOwner) : Grids::TCustomGrid(
  497.         AOwner) { }
  498.     /* TCustomGrid.Destroy */ __fastcall virtual ~TDrawGrid(void) { }
  499.     
  500. public:
  501.     /* TWinControl.CreateParented */ __fastcall TDrawGrid(HWND ParentWindow) : Grids::TCustomGrid(ParentWindow
  502.         ) { }
  503.     
  504. };
  505.  
  506. class __declspec(delphiclass) TStringGridStrings;
  507. class __declspec(delphiclass) TStringGrid;
  508. class __declspec(pascalimplementation) TStringGrid : public TDrawGrid
  509. {
  510.     typedef TDrawGrid inherited;
  511.     
  512. private:
  513.     void *FData;
  514.     void *FRows;
  515.     void *FCols;
  516.     bool FUpdating;
  517.     bool FNeedsUpdating;
  518.     int FEditUpdate;
  519.     void __fastcall DisableEditUpdate(void);
  520.     void __fastcall EnableEditUpdate(void);
  521.     HIDESBASE void __fastcall Initialize(void);
  522.     HIDESBASE void __fastcall Update(int ACol, int ARow);
  523.     void __fastcall SetUpdateState(bool Updating);
  524.     System::AnsiString __fastcall GetCells(int ACol, int ARow);
  525.     Classes::TStrings* __fastcall GetCols(int Index);
  526.     System::TObject* __fastcall GetObjects(int ACol, int ARow);
  527.     Classes::TStrings* __fastcall GetRows(int Index);
  528.     void __fastcall SetCells(int ACol, int ARow, const System::AnsiString Value);
  529.     void __fastcall SetCols(int Index, Classes::TStrings* Value);
  530.     void __fastcall SetObjects(int ACol, int ARow, System::TObject* Value);
  531.     void __fastcall SetRows(int Index, Classes::TStrings* Value);
  532.     TStringGridStrings* __fastcall EnsureColRow(int Index, bool IsCol);
  533.     void * __fastcall EnsureDataRow(int ARow);
  534.     
  535. protected:
  536.     virtual void __fastcall ColumnMoved(long FromIndex, long ToIndex);
  537.     virtual void __fastcall DrawCell(long ACol, long ARow, const Windows::TRect &ARect, TGridDrawState 
  538.         AState);
  539.     virtual System::AnsiString __fastcall GetEditText(long ACol, long ARow);
  540.     virtual void __fastcall SetEditText(long ACol, long ARow, const System::AnsiString Value);
  541.     virtual void __fastcall RowMoved(long FromIndex, long ToIndex);
  542.     
  543. public:
  544.     __fastcall virtual TStringGrid(Classes::TComponent* AOwner);
  545.     __fastcall virtual ~TStringGrid(void);
  546.     __property System::AnsiString Cells[int ACol][int ARow] = {read=GetCells, write=SetCells};
  547.     __property Classes::TStrings* Cols[int Index] = {read=GetCols, write=SetCols};
  548.     __property System::TObject* Objects[int ACol][int ARow] = {read=GetObjects, write=SetObjects};
  549.     __property Classes::TStrings* Rows[int Index] = {read=GetRows, write=SetRows};
  550. public:
  551.     /* TWinControl.CreateParented */ __fastcall TStringGrid(HWND ParentWindow) : Grids::TDrawGrid(ParentWindow
  552.         ) { }
  553.     
  554. };
  555.  
  556. class __declspec(pascalimplementation) TStringGridStrings : public Classes::TStrings
  557. {
  558.     typedef Classes::TStrings inherited;
  559.     
  560. private:
  561.     TStringGrid* FGrid;
  562.     int FIndex;
  563.     void __fastcall CalcXY(int Index, int &X, int &Y);
  564.     
  565. protected:
  566.     virtual void __fastcall Clear(void);
  567.     virtual int __fastcall Add(const System::AnsiString S);
  568.     virtual System::AnsiString __fastcall Get(int Index);
  569.     virtual int __fastcall GetCount(void);
  570.     virtual System::TObject* __fastcall GetObject(int Index);
  571.     virtual void __fastcall Put(int Index, const System::AnsiString S);
  572.     virtual void __fastcall PutObject(int Index, System::TObject* AObject);
  573.     virtual void __fastcall SetUpdateState(bool Updating);
  574.     
  575. public:
  576.     __fastcall TStringGridStrings(TStringGrid* AGrid, long AIndex);
  577.     virtual void __fastcall Assign(Classes::TPersistent* Source);
  578. public:
  579.     /* TObject.Destroy */ __fastcall virtual ~TStringGridStrings(void) { }
  580.     
  581. };
  582.  
  583. //-- var, const, procedure ---------------------------------------------------
  584. #define MaxCustomExtents (int)(134217727)
  585. #define MaxShortInt (Shortint)(127)
  586. //-- template instantiations -------------------------------------------------
  587. template class TGridScrollDirection ;
  588. template class TGridDrawState ;
  589. template class TGridOptions ;
  590.  
  591. }    /* namespace Grids */
  592.  
  593. #pragma warn .par
  594. #pragma warn .hid 
  595. #pragma warn .inl
  596.  
  597. #if !defined(NO_IMPLICIT_NAMESPACE_USE)
  598. using namespace Grids;
  599. #endif
  600. //-- end unit ----------------------------------------------------------------
  601. #endif    // Grids
  602.