User ID:
Password:
Remember Me:
Forgot Password?
Not a member?
Click here for more information and to register.

    LiteGrid Control



    Presented ActiveX control encapsulates spreadsheet functionality and is very similar to MS FlexGrid control. Why I decided to create my own control? The answer is obvious: because I didn't like existing. Users of my projects are mainly accountants with relatively weak hardware: 486s with 8-12MB RAM. MS FlexGrid works on this platform, but scrolls too slowly to be convenient.

    Presented ActiveX control was implemented using ATL 2.0 and VC++ 5 SP3. It has relatively small executable size (approximately 55 KB + 22 KB atl.dll instead of 223 KB of MS FlexGrid) and much higher scrolling speed than MS FlexGrid. Also it supports inplace text editing in cells. Of course it does not implement many MS FlexGrid's features - such as cell merging, custom effects for text etc. But it has enough features to work in real projects. Also because of it's small size LiteGrid control can be used in HTML pages.

    Properties

    Name Type Description
    FixedRows long Number of fixed rows in the grid
    FixedCols long Number of fixed columns in the grid
    Rows long Number of rows in the grid
    Cols long Number of columns in the grid
    CellText(r,c) BSTR Contents of any cell within the grid. r - row, c - column (Rows and columns start with 0)
    ColWidth(c) long Width of a column in the grid in pixels. c - column number
    RowHeight(r) long Height of a column in the grid in pixels. r - row number
    DefaultColWidth long Default width of a column in pixels. When new columns added to the grid, their width is set to this value
    DefaultRowHeight long Default height of a row in pixels. When new rows added to the grid, their height is set to this value
    Row long The row of currently selected (active) cell
    Col long The column of currently selected (active) cell
    FixedFont LPFONTDISP Font which is used to draw fixed cells
    NormalFont LPFONTDISP Font which is used to draw normal cells
    FixedBkColor OLE_COLOR Color of fixed cell's background
    NormalColor OLE_COLOR Color of normal cell's background
    FixedTextColor OLE_COLOR Color of text in fixed cells
    NormalTextColor OLE_COLOR Color of text in normal cells
    FixedLightColor OLE_COLOR Color of a fixed cell's light edge
    FixedShadowColor OLE_COLOR Color of a fixed cell's shadow edge
    NormalLightColor OLE_COLOR Color of a normal cell's light edge
    NormalShadowColor OLE_COLOR Color of a normal cell's shadow edge
    CellTop long Top coordinate of the selected cell in pixels. Read only
    CellLeft long Left coordinate of the selected cell in pixels. Read only
    CellWidth long Width of the selected cell in pixels. Read only
    CellHeight long Height of the selected cell in pixels
    ResizeRows VARIANT_BOOL Enables/disables rows resizing with mouse
    ResizeCols VARIANT_BOOL Enables/disables columns resizing with mouse
    Editable VARIANT_BOOL Enables/disables inplace editing
    ScrollBars SCROLL_BAR_TYPE Changes scroll bars set (lgBothScrollBars, lgHorzScrollBar, lgVertScrollBar, lgNonScrollBars)
    FastDraw VARIANT_BOOL Enables/disables grid changes buffering for fast scrolling (if this option turned on (TRUE) LiteGrid shows three times faster scrolling then MS FlexGrid, if not - only 25-30% faster than MS FlexGrid. These results were achieved on P133, S3 Trio. Grids had 1000 rows, 20 columns (9 visible)
    ColAlign(c) lgColAlignType Align of text in a column. c - column number. Can be lgAlignLeft, lgAlignCenter, lgAlignRight.
    DefaultColAlign lgColAlignType Default align of text in a column. When new columns are added to the LiteGrid, they have this text align.

    Methods

    Name Return type Description
    GetFixedTextWidth(bsText) long Returns width in pixels of BSTR bsText for fixed cells
    GetNormalTextWidth(bsText) long Returns width in pixels of BSTR bsText for normal cells

    Events

    Name Description
    MouseMove See VB documentation for this event. Coordinates are given in pixels
    MouseDown See VB documentation for this event. Coordinates are given in pixels
    Click See VB documentation for this event
    KeyDown See VB documentation for this event
    KeyUp See VB documentation for this event
    KeyPress See VB documentation for this event
    CellChanging (r,c) Fired before active cell changes. r indicates new row of selected cell, c - new column
    CellChanged Fired after active cell has changed
    StartEditing(*b) Fired before inplace editing. you can assign *b (VARIANT_BOOL type) FALSE to disallow this editing
    EndEditing(bs,*b) Fired after inplace editing, but before entered text has moved to selected cell. bs (BSTR type) has text string which a user just typed into inplace editor, you also can assign *b (VARIANT_BOOL type) FALSE to prevent writing this data to cell.

    I hope that this control can be useful for many programmers, and you can freely use it in your projects. Drawing speed can be even more improved by using Poly... GDI functions instead of single calls: MS promises much faster drawing speed when using these functions. And at last, if you have suggestions, notes or bug reports please contact me at chandiv@users.univers.cv.ua or ivannikov@altavista.net (the first address will be closed soon)

    Downloads

    Download demo project - 8 Kb

    IT Offers


    Top Authors