Si utilizas bases de datos, puedes generar campos calculados en vistas o directamente en el SQL
Código SQL
[-]
SELECT ARTICULO, UNIDADES, PRECIO, (UNIDADES * PRECIO) AS TOTAL
FROM DETALLE_PEDIDO
WHERE
NRO_PEDIDO = :NRO_PEDIDO
Por otro lado puedes crear campos calculados en un Dataset.
Luego, en el evento OnGetText del campo puedes poner cualquier cosa que puedas hacer con Delphi.
Código Delphi
[-]
procedure DataModule.DetallePedidosARTICULOGetText(...Text : string...);
begin
Text := UpperCase(DetallePedidosARTICULO.AsString);
end;
El Dataset también tiene un evento OnCalcFields en el que puedes dar valores a los campos calculados
Código Delphi
[-]
procedure DataModule.DetallePedidosCalcFields(...);
begin
DetallePedidosCOMISION.AsFloat := DetallePedidosPRECIO.AsFloat * 20 /100;
DetallePedidosGANANCIA.AsFloat := DetallePedidosPRECIO.AsFloat - DetallePedidosPRECIO_COSTE.AsFloat;
end;