Developer

Introduction

Both NextDBGrid v6 and NextGrid v6 are derived from same ancestor class (TNxCustomGrid6), and share most of the methods and properties. Working with columns, views and design-time editors is same in both component.

NextDBGrid is extended with data-aware features such as connection to TDataSet (DataSource property), FieldName property for each Column and other.


Associating Field with a column


NextDBGrid unlike NextGrid doesn't store data within own memory structure. Instead, it load data fields directly from DataSet (via TDataSource component), and display it in column-type presentation. Each Column within NextDBGrid can represent one TField, and on column type depends how this field will be drawn (as text, progress bar, checkbox...).

Which Field will be used by Column is specified by DataBindings.FieldName property of Column:



After DataSet is activated, TField object with specified FieldName is referenced to Field property.

Beside FieldName DataBinding property contain other properties required for interaction with associated field. For example, NullText property can be set to specify value to be painted when field is NULL.

If needed, FieldName property can be leaved unset, and value for cells inside this column can be obtained "virtually" via OnGetValue event.

Iterating trough records


When drawing is about to start, NextDBGrid set ActiveRecord to the first visible record on screen, and then draw each cell in this row. After ActiveRow is set, Field property of DataSet or column can be used.

After 1st row is drawn ActiveRecord is moved down to the next record, and Field objects are re-loaded with data from 2nd record and so on until last visible row (record) on screen is drawn. If grid is in non-buffered mode (as standard TDBGrid is), only records visible on screen are loaded to internal buffer. That way DB grids are efficient when loading thousands of records, or data from remote server.


As every column have property Field attached to a Field from DataSet, we may easily inspect this property on every drawing events such as OnGetCellColor or one of custom drawing events.

3rd column doens't have FieldName set, but is custom drawn with value used from 2nd column.

Value of Field can be get or set via standard Cell property of grid. Cell property in NextDBGrid is slightly more restricted than same property in NextGrid and we strongly recommend reading this article.

See also