Stai usando i componenti dbExpress che sono, per loro natura, unidirezionali: per ottenere il massimo delle performance, mantengono un cursore aperto lato server e restituiscono un record alla volta, partendo dal primo sino ad arrivare all'ultimo.

Non possono essere utilizzati con "data control" poichè i controlli visuali hanno bisogno di un DataSet che possa essere navigato in entrambe le direzioni, in sostanza c'è bisogno di un buffer lato client dei record.

Per ottenere questa funzionalità, i componenti dbExpress devono essere utilizzati in congiunzione con i componenti TClientDataSet e TDataSetProvider.

Il componente TClientDataSet, come dice il nome stesso, rappresenta un DataSet lato client ed è adatto al mantenimento in memoria di una tabella di dati con i relativi campi, ottenuta creando direttamente nel componente la struttura della tabella stessa o sincronizzandosi con un server SQL, quindi un DataSet del dbExpress, attraverso il componente TDataSetProvider che funge da tramite e permette di configurare le opzioni di aggiornamento, inserimento, modifica e rimozione.

La trattazione di questo problema è molto lunga e presuppone buona conoscenza dei componenti dbExpress e del funzionamento della tecnologia che vi sta dietro.

Prova a leggere questo articolo a riguardo (in lingua inglese).

Ho utilizzato la libreria dbExpress in diversi progetti e mi sono trovato molto bene, oltre ad avere ottime performance.

Ciao!