Ver Mensaje Individual
  #1  
Antiguo 27-06-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Reputación: 19
MaMu Va por buen camino
Formato de separador decimal

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  // #3 = Copiar (Ctrl + C)
   begin                                 // #22 = Pegar (Ctrl + V)
     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
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita