Creo que el problema esta en la línea:
Código Delphi
[-]
if ( copy(Edit.Text,i,1) = ',' ) and not ( StrScan(',', Caracter) = nil ) then Caracter := #0;
En esa línea de codigo haces referencia directa al objeto Edit. Prueba a cambiarla de esta forma para hacerlo más genérico:
Código Delphi
[-]
if ( copy((Sender as TrDBEdit), i , 1) = ',' ) and not ( StrScan(',', Caracter) = nil ) then Caracter := #0;