С того момента, как "стал рассматривать" TGrid непосредственно как компонент отображения существующих данных, работать с ним стало проще и приятнее. В похожих ситуация работаю непосредственно с данными (выборкой). То, что FDQuery и Grid связаны через LiveBinding, значения не имеет:
FDQuery1.RecNo := Grid1.Selected+1;
... := FDQuery1.FieldByName['id'].AsInteger;
//или по порядковому номеру:
... := FDQuery1.Fields.Fields[0].AsInteger;
//или тип Variant:
... := FDQuery1['id']
//и т.д.
В зависимости от необходимого способа реакции код можно подвесить на onClick, onMouseMove и т.д. по желанию.