Il codice che hai scritto non fa altro che assegnare ripetutamente la proprietà DataSource al controllo TDBMemo, proprietà che semplicemente dice al controllo qual è il campo della tabella da cui reperire il valore da mostrare, riferito al record attuale.
Il "data source" non varia, quindi l'assegnazione non sortisce alcun effetto.
Il controllo TDBMemo è progettato per mostrare comunque sempre uno e un solo valore del record corrente.
In questo caso, scorrendo il DataSet dal primo all'ultimo record, l'effetto che si ottiene semplicemente è quello di mostrare nel controllo TDBMemo il valore del campo associato per l'ultimo record disponibile, che rimane quello corrente alla fine del ciclo, fermo restando che l'interfaccia grafica non viene aggiornata fino al termine del ciclo di scansione della tabella, e se anche lo fosse l'operazione sarebbe talmente rapida da non poterne vedere gli effetti, che comunque sarebbero riconducibili alla visualizzazione dei valori di un singolo campo.
Siccome si parla di fare un ciclo "autonomo" sui campi per mostrarli da qualche parte, non ha senso utilizzare il controllo TDBMemo, ma si può usare comunque un normalissimo TMemo, visto che i dati vanno ricopiati a mano al suo interno.
Non è ben chiaro alla fine l'effetto che si intende ottenere. Senza sfruttare il TDBCtrlGrid, occorre scrivere il codice che crea tanti controlli quanti sono i valori da mostrare, ripetendo l'operazione per ogni record.
Se si vuole intervenire nel processo di creazione di un singolo pannello del controllo TDBCtrlGrid, è sufficiente intercettare l'evento OnPaintPanel e andare a inserire all'interno la valorizzazione dei controlli dell'elemento (pannello) in corso di creazione, riferito al record corrente del DataSet che il controllo sta scandendo.
Ciao!![]()

Rispondi quotando