True DBGrid supports a row-based unbound mode that does not rely upon either the Visual Basic Data control or the ComponentOne XArrayDB object. Instead, unbound mode events fire whenever the grid needs to retrieve a group of adjacent rows or update, add, or delete an individual row. Unlike application mode, an intermediate RowBuffer object serves as the liaison between the grid and your data source.
There are actually two row-based unbound modes: DataMode 1 - Unbound, is the original unbound mode of DBGrid; DataMode 2 - Unbound Extended, uses a slightly different event syntax that simplifies coding and is more efficient. Therefore, if you are writing a new application, you should use mode 2. Mode 1 is included for backward compatibility with DBGrid.
To use the newer row-based unbound mode, set the DataMode property of the grid to 2 - Unbound Extended at design time. In code, write a handler for the UnboundReadDataEx event. If users of your application need the ability to add, update, and delete records, you will have to write handlers for the UnboundAddData, UnboundWriteData, and UnboundDeleteRow events as well.
If you are converting an application that uses DataMode 1, you can improve its performance dramatically by writing a handler for the UnboundGetRelativeBookmark event.
Regardless of whether you use mode 1 or 2, all of the grid's bookmark-related properties, methods, and events (Bookmark, FirstRow, GetBookmark, FetchCellStyle, and others) work the same in the row-based unbound modes as they do in any other DataMode, either bound or unbound.