MAI ottenere i valori dei campi in formato testo dalla griglia: si deve sempre lavorare sulla tabella a cui la griglia è collegata. Quando un record è selezionato nella DBGrid, tale record è anche quello corrente nel DataSet (tabella o query che sia) collegato alla griglia tramite il componente DataSource, pertanto ti basta ottenere il valore del campo "ID" attraverso il DataSet stesso.

Ciao!