FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Problema con el TEdit y las comas
Hola, aunque el tema del TEdit ya se ha tratado (en relación de como cambiar las comas a puntos y viceversa) no he visto el de como hacer que solo se puedan introducir una coma, verán aunque les parezca una tonteria me he llevado podriamos decir toda la mañana y no he podido, he hecho funciones para contar las comas que hay en el TEdit pero al final solo me cuenta el ultimo carácter(NO VALE), he pasado el contenido de del TEdit caracter a caracter a un Array (y tampoco me ha servido porque a la hora de escribirlo tengo que poner Edit:=array[1]+array[2].... y si hay alguno vacio se vuelve loco), he analizado carácter por carácter pasando el contenido a una variable string pero el problema es que el Edit se actualiza a cada momento y el String va un paso por detrás. He probado con el modificando el formato con el format del Tedit pero después solo me deja modificar dentro un número. He probado con el EditMask pero no me hace la resta automática (solo el Tedit) y además no desaparece la coma cuando no le pongo decimales. No sé si esto es demasiado fácil y me complico demasiado la vida o que es realmente liado.
El caso compañeros es que hasta estoy mareado y cabreado porque era una cosa que yo suponia me llevaría un momento y me está resultando bastante difícil. ASí que si alguien sabe de alguna función, o algo para solucionar este problema. Muchas gracias.
__________________
"La perseverancia es el camino del éxito" |
#2
|
|||
|
|||
Lo que quieres que se pueda ingresar una sola coma? Pero que vas a meter en edit? Explicame para ver si te puedo ayudar....
__________________
if Vivir = Vivir + Aprender then Aprender = ? Alfredo Borges |
#3
|
||||
|
||||
Hola alfredosg19
¿Lo que quieres es que el contenido del edit sea numérico (integer o float)? Si es así, puedes definirte una función de este estilo:
Estoy escribiendo de memoria... A esta funcion la llamas desde el evento onKeyPress del Edit de esta forma:
Espero que te sirva...
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin) |
#4
|
|||
|
|||
Me da error
Hola, he aplicado el ejemplo que me dejaste pero me sigue dando error, aprovecho para explicar el problema mejor. Tengo un Tedit en el que solo quiero permitir entrar numeros, hasta aquí todo está bien porque pongo este coódigo en el
procedure Código:
FrmCanvi.edPagatKeyPress(Sender: TObject; var Key: Char); begin If (contarcomes(edPagat.Text)=0) then If Not (Key IN ['0'..'9',#8,',']) then key := #0; if (contarcomes(edPagat.Text)>0) or (key=',')then If Not (Key IN ['0'..'9',#8]) then key := #0; end; Código:
function TfrmCanvi.contarcomes(n:string): integer; var car: string; i,coma: Integer; begin coma:=0; For I:=0 to Length(n) do car:=copy(n,i,1); if car=',' then coma:=coma+1; result:=coma; end;
__________________
"La perseverancia es el camino del éxito" |
#5
|
||||
|
||||
No estoy muy seguro de entenderte...
Con lo que te he pasado evitas: - Que se introduzcan letras o espacios o cualquier cosa que no sea un número o el DecimalSeparator. - No permite que la primera sea una coma (o el separador decimal que sea) - No permite más de una coma (o el separador decimal que sea) Puede que tú problema (si me he enterado) esté en esa cuenta que haces según se introducen los dígitos... y sobre todo en el momento en el que el usuario inserta la coma... ¿Y si, cuando haces esa cuenta, si la última es la coma no la "obvias"? Me explico (estoy espeso): si cuando vas a hacer la cuenta, el número introducido es, por ejemplo, "12334,"... Quítale la "," y usa "12334" para la operación ¿Es eso?
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin) |
#6
|
|||
|
|||
Gracias Ohcan, pero...
Gracias Ohcan por tu ayuda, a ver el problema está en que me da error y no podido si quiera ver si lo que me dijiste funciona (que seguro que sí, quiero decir que no lo he podido probar), el fallo es que algo falta en la función y me dice esto:
[Error] UFRMCanvi.pas(111): Not enough actual parameters
__________________
"La perseverancia es el camino del éxito" |
|
|
|