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;

4 respuestas

Respuesta
1
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: [email protected]
Germán
Respuesta
1
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.
Respuesta
1
Utiliza el componente FloatEdit de la librería "Trivial", la puedes encontrar en www.clubdelphi.com, hace lo que tu quieres sin tener que tocar código.
Lo estuve buscando en la sección de componentes pero no lo encontré, ayuda por favor
Dime tu email y te lo mando
En esta cuenta no te cabe, me ha devuelto el correo.
son 1.5mb
Pues haber si sirve esta dice que tiene 3m de capacidad
[email protected]
Lo siento, pero a esta cuenta le sucede lo mismo que a la anterior, me duvuelve el mensaje porque excede del limite de la capacidad de la cuenta.
Respuesta
1
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;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas