Hola,
En primer lugar, hay que tener en cuenta que en el TDBGrid puede haber campos calculados, en cuyo caso, la solución basada en usar un TQuery para obtener la suma con un :
Código SQL
[-]Select Sum(CampoBuscado) From Tabla
no serviría, a menos que pudieras reproducir en el Select el campo calculado lo que no siempre es posible o fácil. Sin embargo, en la mayoría de los casos el Select es una buena solución
Para usar otro enfoque, no debes trabajar con el TDBGrid sino con su dataset asociado, y realizar la suma con un While. Veamos un ejemplo con un solo campo a sumar:
Código Delphi
[-]Function TMiFormulario.SumarCampoouble;
Var
Suma: Double;
Begin
Suma := 0;
Try
With MiDataSet Do Begin
DisableControls;
First;
While Not EoF Do Begin
Suma := Suma + MiDataSetCAMPO.AsFloat;
Next;
End;
End;
Finally
MiDataSet.EnableControls;
End;
SumarCampo := Suma;
End;
En este caso MiDataSet es típicamente un TQuery y MiDataSetCAMPO es un campo permanente correspondiente al campo de la base de datos que se desea sumar. Observa el uso de DisableControls y EnableControls; esto se hace para evitar refrescar la pantalla mientras se calcula la suma.
Creo que te será facil adaptar esta solución a varios campos.
Suerte