Validar datos

Tengo el siguiente código para validar que la entrada de datos sean números reales, el problema es que si quiero borrar con la tecla retroceso no lo hace, unicamente me funciona con suprimir como hacer para que me acepte la tecla retroceso, supongo que hay que agrer su respectivo # en el intervalo aceptado pero no se cual, o si conoces una mejor manera para validar entrada de datos podrías explicarme de preferencia con un ejemplo, gracias:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key in ['0' ..'9','.'] then
else
begin
key := #0;
end;
end;

3 respuestas

1
Respuesta de
Hola,
si quieres validar a medida que el usuario teclea es esa una forma de hacerlo, una sugerencia que te puedo hacer es poner ese código en un componente (trealedit por ej) que herede de tedit, así no tienes que copiar el código en cada lugar que uses un componente de esos.
El código ascii que te falta es el #8
Si tienes alguna otra duda volvé a preguntarme.
Germán
gracias, perome intereso eso que me dijiste sobre la herencia lo que pasa es que no tengo mucho conocimiento sobre ese tema, podrías explicarlo con mayor detalle, si es posible paso;
El código del componente que te digo quedaría algo así:
unit uRealEdit;
interface
Uses
Dialogs, Windows, Messages, SysUtils, Classes, Controls, StdCtrls;
type
TRealEdit = class(TEdit)
private
{ Private declarations }
protected
{ Protected declarations }
public
procedure KeyPress(var Key: Char); override;
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Maker', [TRealEdit]);
end;
procedure TRealEdit.KeyPress(var Key: Char);
begin
inherited;
if not(Key in ['0'..'9', '.', #8]) then
Key := #0;
end;
end.
Te convendría copiarlo en el directorio \lib de delphi e instalarlo con "install component"
Cualquier cosa me podes contactar por messenger en: colladoger@hotmail.com
Germán
Añade un comentario a esta respuesta
1
Respuesta de
La tecla de retroceso es #8.
Una mejor forma de validar datos sería con un control TMaskEdit (pero es poco flexible, para mi gusto) o si no, conseguiste "las rusas" (así se le llama a las librerías RXLib), que tienen controles especializados sobre todo en entradas numéricas (me parece, fíjate). Las podes bajar desde www.clubdelphi.com, o si no, fíjate por Internet que las tenés que encontrar. Son gratuitas y vienen con el código fuente incluido. Fíjate las que sean compatibles con tu versión de Delphi.
Si te sirvió, califícame en TodoExpertos. Si no, avisame y veo en qué más te puedo ayudar.
Marcelo
Añade un comentario a esta respuesta
1
Respuesta de
La tecla para borrar es #8, tu código quedaría mejor así:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If Key<>#8 Then
if Not (key in ['0' ..'9','.']) then
key := #0;
end;
Espero te sirva...
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Delphi o hacer tu propia pregunta: