SoloCodigo

Programación General => Delphi => Trucos => Mensaje iniciado por: Ayla en Jueves 30 de Junio de 2005, 18:37

Título: Colocar El Separador Decimal
Publicado por: Ayla en Jueves 30 de Junio de 2005, 18:37
Muchas veces no sabemos que separación decimal tiene la máquina en que va a correr nuestra aplicación. Con esta función, tenemos solucionado el problema:

Código: Text
  1.  
  2. function fSepDecimal(tecla: char) : char;
  3. begin
  4.   if DECIMALSEPARATOR = ',' then begin
  5.      if tecla = '.' then Result:= ','
  6.      else Result := tecla;
  7.   end
  8.   else begin
  9.      if tecla = ',' then Result:= '.'
  10.      else Result := tecla;
  11.   end;
  12. end;  
  13.  
  14.  

Sólo tenemos que llamar a la función en OnKeyPress de cualquier componente en el que vayamos a utilizar decimales. Por ejemplo, en un TDBEdit:

Código: Text
  1.  
  2. procedure Tform.DBEditKeyPress(Sender: TObject; var Key: Char);
  3. begin
  4.   key := fSepDecimal(key);
  5. end;
  6.  
  7.  
Título: Re: Colocar El Separador Decimal
Publicado por: lopman en Jueves 18 de Agosto de 2005, 14:46
Sencillo pero eficaz, gracias por el truco, me ha venido muy bien.
Título: Re: Colocar El Separador Decimal
Publicado por: bartolomeo en Jueves 18 de Agosto de 2005, 15:07
Esta Rebueno, tres urras para Ayla.

hip hip Urra  ;)  hip hip Urra  :P  hip hip Urraaaaaa  :devil:
Título: Re: Colocar El Separador Decimal
Publicado por: lopman en Lunes 22 de Agosto de 2005, 13:50
Como ampliación al práctico truco obsequio de Ayla, podemos terminar de convertir el TEdit en un campo numérico únicamente. Con lo cual ampliariamos su función del siguiente modo:
Código: Text
  1.  
  2. function TFormPatrones.fSepDecimal(tecla: char) : char;
  3. var
  4.   res: char;
  5. begin
  6.  res := tecla;
  7.  if DECIMALSEPARATOR = ',' then begin
  8.     if tecla = '.' then res:= ','
  9.     else res := tecla;
  10.  end
  11.  else begin
  12.     if tecla = ',' then res:= '.'
  13.     else res := tecla;
  14.  end;
  15.  if not (res in ['0'..'9',DECIMALSEPARATOR,#8]) then
  16.     res := #0;
  17.  Result := res;
  18. end;
  19.  
  20.  

De esta forma tan solo nos dejará escribir números, separadores, desplazarnos por el TEdit y borrar elementos.
Título: Re: Colocar El Separador Decimal
Publicado por: bartolomeo en Lunes 22 de Agosto de 2005, 17:26
De fabula llevaba buscando uno de esos hace rato
Título: Re: Colocar El Separador Decimal
Publicado por: Ayla en Jueves 25 de Agosto de 2005, 13:00
Assias Lopman por ampliar el truquillo.

 Aunque existen componentes (como algunos que vienes en las Rx) que sólo te dejan meter numeros  :rolleyes: .
 
 De todas maneras tomo nota  ;) .