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!![]()

Rispondi quotando