Lo unico que se me ocurre es lo sgte (algo facil), pero no muy efectivo:
HAcer que edit solo acepte numeros y el punto, poner su propiedad selectall en true y en el evento onexit:
Código Delphi
[-] if LeftStr(edit1.Text,1) <> '$' then
begin
edit1.Text:=FormatFloat('$##,##0.00',StrToFloat(edit1.Text));
end;