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

More by Author

Previous article
Next article

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read