Si decides mantener los Edits con cadenas vacías por cuestiones estéticas, te dejo una función que convierte String a Float. Si no puede devuelve un valor por defecto.
Código Delphi
[-]
function StrToFloatDef(s: string; Default: double): double;
begin
try
s := Trim(StringReplace(s, ThousandSeparator, '', [rfReplaceAll]));
if (s = '') then
Result := Default
else
Result := StrToFloat(s);
except
Result := Default;
end;
end;
var
Precio : double;
begin
Precio := StrToFloatDef(EditPrecio.Text, 0);
end;