Delphi - Edit con SOLO NUMEROS

 
Vista:

Edit con SOLO NUMEROS

Publicado por R3DRUM (15 intervenciones) el 25/04/2007 11:20:33
Hola:

Necesito saber como en un ' Edit ' de Dephi no se puedan insertar letras, es decir, es un
' Edit ' donde va el valor del precio de un artículo, en el cual puede admitir SOLO NÚMEROS.

Hay una forma con la que más o menos se hace esto, que es con una 'mascara' pero esta no me gusta, porque te aparece en principio con una raya (____,__) y eso para mí, estropea el diseño del formulario.

Venga se que alguno lo sabéis, pasarmelo...
...por favor,
...s'il vous plait,
...please

MUCHAS GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Edit con SOLO NUMEROS

Publicado por nombre (106 intervenciones) el 25/04/2007 15:49:32
En el evento on create del form para que alinee los números a la derecha

//alinear edits a la dcha
SysLocale.MiddleEast := true;
EUno.BiDiMode := bdRightToLeft;

En el OnKeyPress del edit para dejar entrar solo signos númericos, y borrar

procedure TFMira.Edit1KeyPress(Sender: TObject; var Key: Char);
var
i: integer;
begin
//controlar entrada solo números y punto decimal
if ( StrScan('0123456789.' + chr(7) + chr(8), Key) = nil ) then Key := #0;
//cambiar punto decimal por coma
if key = '.' then key := ',';
//controlar entrada una sola coma
for i := 1 to length(Edit1.Text) do
if ( copy(Edit1.Text,i,1) = ',' ) and not ( StrScan(',', Key) = nil ) then Key := #0;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Edit con SOLO NUMEROS

Publicado por R3DRUM (15 intervenciones) el 26/04/2007 21:14:33
Muchas Gracias "correo":

Tengo unas pequeñas dudas:

Entre 'comillas' están puestos los dígitos que va a aceptar, ok; pero
a que corresponden:
chr(7)
chr(8)

En fin, SI TIENE TIEMPO, me gustaría que me explicara como se desarrolla este esquema.

Me ha AYUDADO mucho, MUCHAS GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Edit con SOLO NUMEROS

Publicado por nombre (106 intervenciones) el 27/04/2007 00:14:13
if ( StrScan('0123456789.' + chr(7) + chr(8), Key) = nil ) then Key := #0;

chr(7) y chr(8) son para permitir borrar, con las dos teclas de borrado <- y Supr .

Key es la tecla pulsada, si no corresponde, "nil", con algo de lo que pongas ahí se iguala a #0 o sea, que es como si no has pulsado nada.

....

if key = '.' then key := ',';

Si la tecla pulsada es el punto se sustituye por una coma

´´´´

for i := 1 to length(Edit1.Text) do

Se recorre la cadena del edit

....

if ( copy(Edit1.Text,i,1) = ',' )

se va cogiendo caracter a caracter y si es una coma

....

and not ( StrScan(',', Key) = nil ) then Key := #0;

y NO (NO hay otra coma) entonces se ignora la pulsación

Lo más dificil de comprender quizás sea lo último, NO + NO se convierten en SI, algo como ... y si hay ya una coma en la cadena se ignora la pulsación.

Un equivalente sería quitar el NOT y cambiar el = por <>

and ( StrScan(',', Key) <> nil ) then Key := #0;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Edit con SOLO NUMEROS

Publicado por R3DRUM (15 intervenciones) el 24/05/2007 22:17:09
Bueno, ahora se me ha presentado otro problema con esto
y es que se pueden poner mas de 2 decimales, hasta que llegue al
máximo que le he puesto en ese "edit".

¿Como puedo establecerlo a que solo me admita 2 decimales?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Edit con SOLO NUMEROS

Publicado por keepemseparated (2 intervenciones) el 27/04/2007 13:43:54
Yo lo haria diferente:

En el evento onkeypress coje el keyword (o char , no recuerdo) q te da y hay una funcion por ahi.,...

isNumeric(char) q te devuelve un booleano....

entonces si no es numerico: ABORT; y para el evento keypress

el efecto es q al pulsar una tecla, si no es un numero no se incluye en el texto :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Juan
Val: 71
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Edit con SOLO NUMEROS

Publicado por Juan (25 intervenciones) el 25/06/2019 18:36:55
Ya encontre la soluccion de asignar string a un Edit , hay que crer una clase , un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Juan
Val: 71
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

Edit con SOLO NUMEROS

Publicado por Juan (25 intervenciones) el 25/06/2019 16:39:37
Buenas tardes. Tengo el mismo problema que tu , necesito asignar un numero a una letra que entra por un edit , pero el compilador se queja , encontraste la soluccion , gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar