Как вариант, можно запретить пользователю набрать неправильное значение, написав примерно такой обработчик OnKeyPress:
Код
procedure TfmAdd.edVmKeyPress(Sender: TObject; var Key: Char);
begin
if Not(Key in ['0'..'9',',','.','-',' ',#8])
then begin Key:=#0; exit; end;
if Key in [',','.',' ']
then Key:=DecimalSeparator;
if (Key='-') and
(Pos('-',TEdit(Sender).Text)>0)
then Key:=#0;
if (Key=DecimalSeparator) and
((TEdit(Sender).Text='') or (Pos(DecimalSeparator,TEdit(Sender).Text)<>0))
then Key:=#0;
end;
Он автоматически исправит точку, запятую или пробел на DecimalSeparator - эта стандартная переменная типа char в Delphi и принимает свое значение в зависимости от региональных настроек.
Заодно приведенный код блокирует ввод недопустимых символов.
Подредактируй под свои нужды.