Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Punto decimal

49 views
Skip to first unread message

MªCarmen Gómez de la Santa Cruz

unread,
May 6, 1998, 3:00:00 AM5/6/98
to

Hola :

He desarrollado una aplicación en Delphi 2.0 en la cual se trabaja con
muchas cifras decimales, el problema que tengo es que a la hora de
introducirlos no me deja utilizar el punto sino que debo utilizar la coma.
Esto aunque no es un problema grave resulta incómodo debido a que se trata
de muchas cifras y resultaría mucho más cómodo y rápido para los usuarios
utilizar únicamente el teclado numérico.

Espero que alguien pueda darme una solución.

Muchas gracias. MªCarmen

Atuo

unread,
May 6, 1998, 3:00:00 AM5/6/98
to

Hola!

Convertir una entrada con punto decimal en salida con coma decimal para que
lo entienda un Format, un StrToFloat o similar:
En Edit1KeyPress se entra y con Edit1KeyDown se valida. El resultado sale en
Edit2.Text
.....
var SoloUno:Boolean = True; {variable global}
.....
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (pos('.',Edit1.Text)=0) then SoloUno := True else SoloUno:= False;
if SoloUno = True then begin if not (key in ['0'..'9','.',#8]) then
key:=#0; end
else if not (key in ['0'..'9',#8]) then key:=#0;
{ el #8 es la tecla BackSpace y el #0 es el carácter nulo }
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var r:String[10];
begin
if Key = VK_RETURN then
begin
{ decimal entra con punto }
r := Edit1.text;
if (pos('.',Edit1.text) > 0) then
begin
insert(',',r, pos('.',Edit1.text));
delete(r,pos('.',r),1);
end;
{ decimal ha salido con coma y ya puede formatear }
if (r <> '') then Edit2.text := Format('%7.2f',[StrToFloat(r)]);
end;
end;

Si se desea entrar con Intro en vez del ratón:
procedure TDlgNuevo.MaskEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_RETURN then
begin
DlgNuevo.ModalResult := mrOk;
end;
end;
donde DlgNuevo es el nombre del Form donde está MaskEdit


--
Saludos, Arturo (Valencia-Spain)
D3Pro & Win95

MªCarmen Gómez de la Santa Cruz escribió:

Josep Garriga

unread,
May 6, 1998, 3:00:00 AM5/6/98
to MªCarmen Gómez de la Santa Cruz

En el BDE existe la opción de configurar los decimales con el carácter que
quieras, aunque a veces , como ocurre con el formato de las fechas, lo que
tienes que modificar es la "configuración regional" del panel de control.
Otro problema es que así tendrás que modificar las configuraciones de cada uno
de estos usuarios si quieren usar solo el teclado numérico

Pedro

unread,
May 6, 1998, 3:00:00 AM5/6/98
to

// Si son todas las entradas numéricas en el Grid esto te sirve.
// Se cambia la pulsación punto por coma en el evento Keypress del Grid
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#46 then key:=#44;
end;

Saludos


MªCarmen Gómez de la Santa Cruz <carg...@mot.upv.es> escribió en artículo
<6ipcro$d...@maia.cc.upv.es>...

José María González Ondina

unread,
May 6, 1998, 3:00:00 AM5/6/98
to

>He desarrollado una aplicación en Delphi 2.0 en la cual se trabaja con
>muchas cifras decimales, el problema que tengo es que a la hora de
>introducirlos no me deja utilizar el punto sino que debo utilizar la coma.
>Esto aunque no es un problema grave resulta incómodo debido a que se trata
>de muchas cifras y resultaría mucho más cómodo y rápido para los usuarios
>utilizar únicamente el teclado numérico.


Simplemente pon la línea:

DecimalSeparator:='.';

en el evento "OnCreate" del form.

José María González Ondina.

Mariano Fernandez

unread,
May 7, 1998, 3:00:00 AM5/7/98
to


MªCarmen Gómez de la Santa Cruz <carg...@mot.upv.es> escribió en artículo
<6ipcro$d...@maia.cc.upv.es>...
> Hola :
>

> He desarrollado una aplicación en Delphi 2.0 en la cual se trabaja con
> muchas cifras decimales, el problema que tengo es que a la hora de
> introducirlos no me deja utilizar el punto sino que debo utilizar la
coma.
> Esto aunque no es un problema grave resulta incómodo debido a que se
trata
> de muchas cifras y resultaría mucho más cómodo y rápido para los usuarios
> utilizar únicamente el teclado numérico.
>

> Espero que alguien pueda darme una solución.
>
> Muchas gracias. MªCarmen
>

Creo que la solucion que buscas es:

DecimalSeparator:='.';

A partir de donde pongas esta linea de codigo, todas las conversiones de
cadenas a numeros y de numeros a cadenas se haran con el punto como
separador
decimal.


Saludos.


Departamento de Software (Geroa Informatica, SL)

unread,
May 7, 1998, 3:00:00 AM5/7/98
to

Hola MªCarmen:

Por lo que deduzco tu problema esta en que el Delphi utiliza el Separador
Decimal definido por Windows en el Panel de Control | Internacional.

Lo que tienes que hacer para que tu programa utilice siempre el punto como
decimal es utilizar la variable de Delphi DecimalSeparator='.'. De esta
forma para tu programa el separador decimal será el punto y el de miles la
coma, independientemente de la configuración de Windows.

P.D. : Si utilizas la funcion VAL, creo que te exige siempre el punto como
separador decimal (tu caso), aunque es mas practico utilizar StrToFloat.

SALUDOS.

Francisco Garcia Sevilla

unread,
May 7, 1998, 3:00:00 AM5/7/98
to

MªCarmen Gómez de la Santa Cruz wrote:

Cambia la variable global: DecimalSeparator (o algo asi) que es de tipo char

0 new messages