Hola
La idea es buena, solo que tienes que tener en cuenta que se trata de DBEdits, no de EDits.
Esto lo comento por que al hacer un replace lo hara en el DBEdit y podra sr un problema en la BD.
Para solucionar eso simplemente usa variables que contengan el dato, asi:
Código Delphi
[-]
var a,b: string;
begin
if dbedit4.text < dbedit10.text then
begin
a:= StringReplace(dbedit10.text, '$', '', [rfReplaceAll]);
b:= StringReplace(dbedit4.text, '$', '', [rfReplaceAll]);
dbedit5.textt:= FloatToStr(StrToFloat(a) - StrToFloat(b));
end;
Revisa el ejemplo.
Saludos