PDA

Ver la Versión Completa : no repetir 2 comas(,) en un edit


CarlosHernandez
13-05-2007, 19:58:47
:cool: hola a todos los Delphianos del foro..

una pregunta que me carga loco,

¿Como hago que en un edit solo pueda tener una sola coma (un caracter) y que no se me repita sin importar cuantas veces presione la tecla?

ejemplo: es para utilizarla en numeros decimal: 125,14 y lo que no quiero que suceda es: 125,14,,,,3 es decir que solo me reconozca una sola y que no se pueda repetir.

droguerman
13-05-2007, 21:32:23
en el evento onkeypress :

procedure TfmCompra.editKeyPress(Sender: TObject; var Key: Char);
begin
if (key= #44) and (pos(',',edit.text)>0) then key:= #0;
end;

CarlosHernandez
13-05-2007, 21:36:45
droguerman gracias, eso era lo que queria :)

delphi.com.ar
13-05-2007, 21:57:56
Un detalle que puede ser de importancia: Recuerda que los editores no solo acaptan entradas desde el teclado, también puede haber ingresos desde el clipboard con un simple "copy+paste". Si quieres el ingreso de números decimales consistentes, te recomiendo utilizar el CurrencyEdit de las RxLibs.

Saludos!

CarlosHernandez
14-05-2007, 01:29:19
Si quieres el ingreso de números decimales consistentes, te recomiendo utilizar el CurrencyEdit de las RxLibs.

me podrias dar mas informacion que no conozco nada sobre eso por favor.....:confused:

dec
14-05-2007, 01:36:56
Hola,

Federico se refiere a que los componentes "TEdit", entre otros, aceptan las combinaciones de teclas tal que "CTRL+C", "CTRL+V", que, como sabes, permiten copiar y pegar contenido desde o al "ClipBoard" de Windows.

En otras palabras, no puedes confiar en que el usuario tecleará en un "TEdit", porque puede usar "CTRL+V" para copiar texto del portapapeles, o utilizar el menú contextual que le aparecerá si hace clic con el botón derecho de un "TEdit", por ejemplo.

Entonces, existen soluciones varias, estoy seguro, pero, Federico apunta al uso de algún componente "especializado", precisamente, en no admitir sino una serie de caracteres, incluso con algún formato específico, de modo que así puedes asegurar que en dicho componente existirá un valor que cumple con los requisitos que te sean menester.

Componentes podrás encontrar muchos, por ejemplo, en páginas como "Torry's Delphi Pages (http://torry.net/)". El compañero Federico apunta directamente a uno de los componentes que se incluyen en la RX Library (http://sourceforge.net/projects/rxlib/), que es un paquete de componentes, entre otras cosas, bastante popular y utilizado en Delphi.

Claro que podrías tratar de utilizar un "TEdit", bien heredando de él o bien "hackeándolo" un poco, aunque, tal vez te convendría usar un componente "especializado", como el que menciona Federico, por ejemplo.

PD. En todo caso la solución propuesta por el compañero droguerman me pareció muy elegante. Que conste. :)

CarlosHernandez
14-05-2007, 18:28:15
gracias dec, asi tengo un poco de cultural general, jaja, no de verdad gracias porque asi tengo informacion sobre eso y no estar tan ignorante sobre el tema, voy a revisar todas las opciones a ver que aprendo y cualuier cosa les comentos. de todas manera el codigo que me dio droguerman es el que use, y me sirvio a la perfeccion......