Resulta que yo tengo un formulario en donde cargo el importe y cargo la cantidad, y multiplicando ambos obtengo el Subtotal de dicho concepto. Pero me pasa, que limite el TEdit a que solo puedan ingresar numeros reales, para evitar todo margen de error por parte del usuario. Pero tengo un problema, yo cargo este resultado en el campo de una tabla cuyo formato es Currency, y dependiendo el tipo de configuración de cada computadora en donde ejecute el programa, me toma como separador de decimales de la moneda, un punto "." o una coma ",". Lo cual, yo por medio de este procedimiento, restrinjo el TEdit de la siguiente manera:
Código Delphi
[-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var sNumAnterior:string;
begin
sNumAnterior := (sender as TEdit).Text;
if (key <> #3) and (key <> #22) then begin if key in ['-','.'] then
begin
if (pos(key,(sender as TEdit).Text) > 0) and
(pos(key,(sender as TEdit).SelText) = 0)
then key:=#0;
case key of
'-': if ((sender as TEdit).SelStart > 0) then key:=#0;
'.': if ((sender as TEdit).SelStart = 0) or
(((sender as TEdit).SelStart = 1) and
((sender as TEdit).Text[1] = '-'))
then key:=#0;
end;
end
else if not (key in ['0'..'9',#8]) then key:=#0;
end;
if key = #22 then
try
key := #0;
(sender as TEdit).PasteFromClipBoard;
StrToFloat((sender as TEdit).Text);
except
(sender as TEdit).Text := sNumAnterior;
(sender as TEdit).SelStart := Length((sender as TEdit).Text);
end;
end;
Pero me pasa que, en una computadora, si utilizo el punto "." me anda bien, pero en otra, tengo que usar la coma ",", ya que sino, no me permite agregar el registro, dependiendo de si en Edit2.Text utilice punto "." o coma "," como separador decimal:
Código Delphi
[-]
QCaja.Insert;
try
if ComboBox1.Text='EGRESO'
then QCaja.FieldByName('conceptoDEBE').AsString:=ComboBox2.Text
else QCaja.FieldByName('conceptoHABER').AsString:=ComboBox2.Text;
QCaja.FieldByName('movimiento').AsString:=ComboBox1.Text;
QCaja.FieldByName('cantidad').AsInteger:=StrToInt(SpinEdit2.Text);
QCaja.FieldByName('importe').AsCurrency:=StrToCurr(Edit2.Text)*StrToInt(SpinEdit2.Text);
QCaja.FieldByName('fecha').AsDateTime:=DateTimePicker1.DateTime;
QCaja.Post;
except
QCaja.Cancel;
end;
Tengo alguna forma de detectar que separador decimal tengo que usar segun la configuración actual de la computadora en que ejecute la aplicación??
Saludos