Ver la Versión Completa : Edits solo acepte numeros y , .
este es mi pequeño problema
estoy viendo que un edit me acepte
solo numero y sus delimitadores como son
, .
algo asi. 100.20
ó
100,20
5, 500.50
5, 500,50
5.500.50
encontre este codigo pero no se bien como adaptarlo
if not(Key in ['0'..'9',#8]) then
begin
Key:=#0;
end;
José Luis Garcí
27-02-2011, 08:32:59
ese código es para que lo pongas en el evento OnkeyPress del edit, así cada vez que pulses una tecla, comprobara que este dentro de ese rango, si no no la admite y no la representa.
newtron
27-02-2011, 09:24:43
Hola.
El controlar por código en cada uno de los edits que vayas a usar el tipo de campo que va a admitir, cadena, numérico, fecha, etc se te puede volver bastante engorroso en el momento que tengas unos cuantos edits, cosa que será lo habitual.
Yo te recomendaría crear, o en su defecto, usar algún componente para los edits que ya tengan implementada esas propiedades y te ahorrarás bastante faena y problemas.
Saludos
José Luis Garcí
27-02-2011, 10:11:31
Busca mi componente en el Club, TEditDefault, si quieres usar un componente, claro..
ecfisa
28-02-2011, 00:42:50
Hola JXJ.
Para que solo admita números y los delimitadores '.' y ',' , basta con poner este código en el evento OnKeyPress de los Edits.
procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in [#8,'0'..'9',',','.']) then
begin
MessageBeep(MB_ICONERROR);
Key:= #0;
end;
end;
Pero existe la posibilidad de que duplique un delimitador u otra inconsistencia que realize por copiar/pegar. Por lo que deberías complementar con este código en el evento OnExit de los Edits.
procedure TForm1.EditExit(Sender: TObject);
var
d: Double;
begin
if not TryStrToFloat(TEdit(Sender).Text,d) then
begin
MessageBeep(MB_ICONERROR); //o el mensaje que quieras
TEdit(Sender).SetFocus;
end;
end;
Un saludo.
ecfisa
Eres grande.
Un saludo.
vBulletin v3.6.8, Derechos ©2000-2013, Jelsoft Enterprises Ltd.