Yo para trabajar con importes monetarios uso el tipo
currency. Podes hacer algo como esto:
Código Delphi
[-]
procedure ...
var
TotalEfectivo, TotalCheques, ... : currency
begin
TotalEfectivo := StrToCurr(PesosArgentinos.Text) + StrToCurr(Dolares.Text) + ...;
TotalCheques := StrToCurr(Cheque1.Text) + StrToCurr(Cheque2.Text) + ...;
TotalHaber.Text:= CurrToStrF(TotalEfectivo + TotalCheques + ..., ffCurrency, 2);
end;
Luego quedaria a gusto tuyo el como tratar las excepciones, no se si realizas alguna validacion en otro evento, ahi se asume que "esta todo bien"
El CurrToStrF es para decirle a Delphi que ademas de convertir a string un valor monetario, que le de formato. En el ejemplo que puse yo trunca el valor mostrando solamente 2 decimales y le agrega el signo de la moneda configurada ($, U$S, etc)
Tranquilamente podes usar tambien CurrToStr o mandarle otros parametros (revisa los posibles valores ademas del ffCurrency)
Eso lo podes poner en el OnExit de los edit, o en el OnChange.
Saludos!