Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-07-2012
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 14
negrokau Va por buen camino
Talking Como cambiar "." por "," !!!

Hola a todos, me gustaria una pequeña ayuda, que es cuando presiono la tecla "." del teclado numerico, me aparezca en el tedit ,(coma), todo esto es a base de que quiero ingresar unos nros. con decimales, y es medio incomodo tener que presionar el boton de la coma del teclado, XQ presionando el .(punto) del teclado numerico no me reconoce como decimal.

Espero que hayan entendido mi pregunta... desde ya muchas gracias.....
Responder Con Cita
  #2  
Antiguo 04-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cambiar coma por punto o punto por coma... una simple búsqueda en los foros te devolverá la solución, se ha tratado tantas veces
Responder Con Cita
  #3  
Antiguo 04-07-2012
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Un ejemplo:
Código Delphi [-]
  //Solo partidas de IVA

  SPDatDiario.BaseImpo :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0)    ,16),',','.',[rfReplaceAll]);
  SPDatDiario.TIva     :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0)    ,05),',','.',[rfReplaceAll]);
  SPDatDiario.Trec     :=StringReplace(FillSpacesLeft(FormatFloat('0.00',0)    ,05),',','.',[rfReplaceAll]);

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 04-07-2012
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
La función FillSpacesLeft, la he creado yo mismo, la añado para más claridad.

Código Delphi [-]
 Function FillSpacesLeft(cVar:String;nLen:Integer):String;
 begin
 Result:=StringOfChar(' ',nLen - Length(cVar))+cVar;
 end;
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 04-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que negrokau se refiere a cuando se pulsa la tecla.

En el evento keypress

Código Delphi [-]
if key='.' then
 key := ',';
Responder Con Cita
  #6  
Antiguo 04-07-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por negrokau Ver Mensaje
Hola a todos, me gustaria una pequeña ayuda, que es cuando presiono la tecla "." del teclado numerico, me aparezca en el tedit ,(coma), todo esto es a base de que quiero ingresar unos nros. con decimales, y es medio incomodo tener que presionar el boton de la coma del teclado, XQ presionando el .(punto) del teclado numerico no me reconoce como decimal.

Espero que hayan entendido mi pregunta... desde ya muchas gracias.....
El punto no es reemplazar el punto por la coma. El punto es un problema de preferencias regionales. En algunos países, se utiliza la coma como separador de punto decimal. En otros, se usa el punto que es el estándar internacional.

Creo que no es necesario que en cada valor cambies el punto por una coma. Talvez bastaría con cambiar la variable de configuración regional que determina el separador de punto decimal. La variable global es DecimalSeparator. Si el valor de esa variable es el punto, tu programa empezará a reconocer el punto como separador decimal.

Hacer lo que quieres hacer introduce Bugs futuros en los programas. Estos casos ya se han visto muy a menudo acá en el club. Haz una búsqueda de escenarios dónde los desarrolladores se quejan de "mi programa funciona perfecto, pero no en X computadora...". La mayoría de los casos, es por no respetar las configuraciones regionales.

La solución que te propuse anteriormente es sólo superficial. No abarca todos los escenarios. Por ejemplo, que pasaría si un usuario escribe una coma en lugar de un punto como separador decimal? La solución propuesta por mí fallaría. Es por esta razón, que todas las funcionalidades que utilicen y manipulen de una u otra forma la configuración regional, tienen que implementarse con mucho cuidado para no introducir Bugs futuros.

Saludos!
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web

Última edición por Chris fecha: 04-07-2012 a las 18:55:11.
Responder Con Cita
  #7  
Antiguo 04-07-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Coincido con Chris. Cuando el usuario presiona un punto espera ver un punto y no una coma, no sea cosa que llame al técnico o cambie el teclado .

Una alternativa a cambiar el valor de DecimalSeparator es, realizar el cambio en la asignación:
Código Delphi [-]
var
  Valor: Double;
begin
  if DecimalSeparator = ',' then
    Valor:= StrToFloat(StringReplace(Edit1.Text, '.', ',',[]))
  else
    Valor:= StrToFloat(StringReplace(Edit1.Text, ',', '.',[]))
  ...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 04-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Desde luego, aunque la pregunta de negrokau fuese hacer el cambio al presionar la tecla '.', creo que casi todos tenemos alguna función del tipo: CambiarPuntoPorComa, CambiarComaPorPunto, etc.
Responder Con Cita
  #9  
Antiguo 04-07-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Desde luego, aunque la pregunta de negrokau fuese hacer el cambio al presionar la tecla '.'
Si, totalmente de acuerdo. La respuesta concreta a la pregunta original es la del mensaje #5 sin dudas:
Cita:
me gustaria una pequeña ayuda, que es cuando presiono la tecla "." del teclado numerico, me aparezca en el tedit ,(coma),

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 05-07-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Desde luego, aunque la pregunta de negrokau fuese hacer el cambio al presionar la tecla '.', creo que casi todos tenemos alguna función del tipo: CambiarPuntoPorComa, CambiarComaPorPunto, etc.
"Pos" yo no .

Yo lo que hago es, como apunta el amigo Chris, ajustar la configuración regional a mi gusto al abrir el programa y problema resuelto, igual no es la solución más técnica pero es simple y efectiva.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #11  
Antiguo 06-07-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Me sumo a Casimiro Notevi y aparte se comprueba si ya existe la coma, si es un edit que utilice número decimales.
Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  // Comprobar si se ha pulsado un "." y cambiarlo por ","
  if (Key = #46) then
    Key := #44;

  // Ésta comprobación es para números decimales.
  // Comprobar si ya existe la "," y ponerlo en nulo.
  if (Pos(Key, Edit1.Text) > 0) then
    Key := #0;

  ...
  ...
end;

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #12  
Antiguo 06-07-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por olbeup Ver Mensaje
Me sumo a Casimiro Notevi y aparte se comprueba si ya existe la coma, si es un edit que utilice número decimales.
Vale, ¿y haces eso en todos los edits numéricos?
__________________
Be water my friend.
Responder Con Cita
  #13  
Antiguo 06-07-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Cita:
Empezado por newtron Ver Mensaje
Vale, ¿y haces eso en todos los edits numéricos?
Si, en cada uno de los Edit que tenga que introducir números con decimales.

Un Saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #14  
Antiguo 06-07-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por olbeup Ver Mensaje
Si, en cada uno de los Edit que tenga que introducir números con decimales.
Eso tiene mucha faena. ¿Por qué no te haces o pillas algún edit "tuneado" que te permita elegir el tipo de campo que estás introduciendo y que lo controle el componente?, eso simplifica mucho las cosas.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #15  
Antiguo 06-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por newtron Ver Mensaje
Vale, ¿y haces eso en todos los edits numéricos?

No, en mi caso es sólo en el keypress del formulario, si el 'sender' es un tipo de campo entonces se cambia.
Controlarlo en cada edit sería una barbaridad.
Responder Con Cita
  #16  
Antiguo 06-07-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No, en mi caso es sólo en el keypress del formulario, si el 'sender' es un tipo de campo entonces se cambia.
Controlarlo en cada edit sería una barbaridad.
Vale, pues te pregunto lo mismo que al amigo olbeup, ¿no es más fácil prepararse un edit "tuneado" para estas cosas?
__________________
Be water my friend.
Responder Con Cita
  #17  
Antiguo 06-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por newtron Ver Mensaje
Vale, pues te pregunto lo mismo que al amigo olbeup, ¿no es más fácil prepararse un edit "tuneado" para estas cosas?
Por supuesto que sí. Lo que he explicado antes es pensando en la pregunta inicial que abrió este hilo.
Es preferible usar un componente edit que permita controlar directamente lo que se teclea.
Responder Con Cita
  #18  
Antiguo 06-07-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Por supuesto que sí. Lo que he explicado antes es pensando en la pregunta inicial que abrió este hilo.
Es preferible usar un componente edit que permita controlar directamente lo que se teclea.
ok ok ok ok

(iba a poner solo dos ok pero esto no me deja, no soy tan pesado )
__________________
Be water my friend.
Responder Con Cita
  #19  
Antiguo 06-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por newtron Ver Mensaje
ok ok ok ok
(iba a poner solo dos ok pero esto no me deja, no soy tan pesado )
je, je, je, je... (idem de la longitud )
Responder Con Cita
  #20  
Antiguo 08-07-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Cita:
Empezado por newtron Ver Mensaje
Eso tiene mucha faena. ¿Por qué no te haces o pillas algún edit "tuneado" que te permita elegir el tipo de campo que estás introduciendo y que lo controle el componente?, eso simplifica mucho las cosas.

Saludos
La verdad seria perfecto, pero hasta hoy, cada formulario lleva su KeyPress y según para que se utilize, (Número, Número con decimales, Letras y Número, etc..), lleva trabajo, pues un h...vo.

Ya lo estoy reduciendo bastante, pero bastante.

Antes utilizaba componentes de terceros desde la versión 3.0 y al pasar a la versión 5.0 ya no valian por incompatibilidad y te dejaban tirado, desde ese momento, aprendi a no utilizar componentes de terceros y sólo los que traia el propio delphi, me las ingeniaba para salir adelante

Soy chapada a la antigua, yo me lo guiso yo me lo como.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
El programa se queda "colgado" mientras copia y luego "despierta" NeWsP OOP 5 10-03-2010 22:05:40
"OBJECT OR CLASS TYPE REQUIRED" en "APPLICATION EXENAME" Xavierator Varios 3 27-10-2008 09:09:50
Como hacer que se vea "Si" en vez de "TRUE" en un DBGrid lu9eui C++ Builder 2 07-08-2007 04:03:13
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53


La franja horaria es GMT +2. Ahora son las 02:59:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi