Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   validar el ingreso a un Edit solo numeros (https://www.clubdelphi.com/foros/showthread.php?t=56258)

jedinds 12-05-2008 21:22:39

validar el ingreso a un Edit solo numeros
 
hola

como puedo validar el ingreso a un Edit, solo ingreso de numeros
y si no se ingresa nada que salga un mesaje que no a ingresado numeros

saludos

brakaman 12-05-2008 21:54:28

Cita:

Empezado por jedinds (Mensaje 286134)
hola

Edit, solo ingreso de numeros
y si no se ingresa nada que salga un mesaje que no a ingresado numeros

saludos

Algo como esto.
Código Delphi [-]
procedure TForm1.EDit1KeyPress(Sender: TObject; var Key: Char);
begin
    if not (key in ['0'..'9','.',#8]) then
    begin
      key:=#0;
      showmessage('Por favor introduzca numeros')
    end
end;

Saludos

BlueSteel 12-05-2008 23:20:44

Hola,

Tambien puedes utilizar el componente de la JVC (Jedi).. el JvValidateEdit.. es muy bueno

y con respecto a esto

Cita:

Empezado por brakaman (Mensaje 286143)
Algo como esto.

Código Delphi [-]
procedure TForm1.EDit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9','.',#8]) then
begin
key:=#0;
showmessage('Por favor introduzca numeros')
end
end;
Saludos


creo que falta intervenir en el evento onExit del Edit1... para dar solución a esto

Cita:

y si no se ingresa nada que salga un mesaje que no a ingresado numeros
ya que si no presiona ninguna tecla, el mensaje anterior no aparecerá...

Código Delphi [-]
If Edit1.Text = '' Then
   ShowMessage('Debe ingresar un dato');

Salu2:p:D

ContraVeneno 12-05-2008 23:23:11

EL TjvValidateEdit ya viene preparado para manejar solo números, es gratis y muy funcional.

Loreiev 03-12-2008 02:40:38

Validar un edit que sólo pueda tener números naturales
 
Hola, yo tengo un problema parecido, necesito validar un edit que puede tener sólo valores naturales desde el 1 hasta el 250 y quiero que, de ingresar un valor incorrecto lo corrija por 1. Hice este código:

Código Delphi [-]
 if not((Frmcartones.LbSelectorCarton.Text>=#49)and(Frmcartones.LbSelectorCarton.Text<=#57)) then Frmcartones.LbSelectorCarton.Text:=#49;
editformato;
EditarCarton(strtoint(LbSelectorCarton.Text));


Pero me salta el error:
Código:

EConverterror with message "is not a valid integer value"
porqué sigue apareciendo? no me estoy asegurando de que el valor sea entero?

El código del procedimiento EditarCarton es:


Código Delphi [-]
Procedure EditarCarton (num:integer);
var
i,j,k,l:integer;
Begin
 k:=0;
 l:= num - 1;
 for i:=0 to 8 do
 begin
  for j:=0 to 2 do
  begin
   numerocarton[l,k]:= strtoint(frmCartones.GrillaCarton.Cells[i,j]) ;
   inc(k);
  end;
 end;
end;

Loreiev 09-12-2008 00:37:15

Validar números naturales
 
Hola, nadie me ha contestado todabía, alguna sugerencia? No entiendo porque me sigue dando el mensaje de error después de haber validado los números.

Desde ya muchas gracias


Loreiev

Fenareth 09-12-2008 01:05:30

Por el error que arroja me suena a que estás tratando de validar un Edit que está vacío...

Por lo tanto te dice que '' (espacio vacío) no es valor entero válido...

Saludos, :)

Loreiev 10-12-2008 11:58:21

Error al validar por edit vacío
 
Cita:

Empezado por Fenareth (Mensaje 330204)
Por el error que arroja me suena a que estás tratando de validar un Edit que está vacío...

Por lo tanto te dice que '' (espacio vacío) no es valor entero válido...

Saludos, :)

Hola, gracias por contestarme:). Es probable que sea como vos decís, un error debído a que está ingresándose un número vacío. Pero, mi pregunta es, con la instrucción que yo coloqué no debería evitar ese error? debo agregar algo más o el problema tiene que estar en otra parte?:confused:

Muchas gracias

Saludos

ContraVeneno 10-12-2008 16:12:26

Prueba a agregar la función Trim, puede que el usuario esté escribiendo solo espacios, es decir:
Código:

'    '
, con lo que tu validación fallaría.

Lo mejor sería utilizar un control que este diseñado específicamente para manejar números, con el TjvValidateEdit solo cambias dos propiedades y listo, no tendrías que hacer ninguna validación, ni hacer conversiones, ni programar nada.

Loreiev 11-12-2008 21:07:33

Cita:

Empezado por ContraVeneno (Mensaje 330306)
Prueba a agregar la función Trim, puede que el usuario esté escribiendo solo espacios, es decir:
Código:

'    '
, con lo que tu validación fallaría.

Lo mejor sería utilizar un control que este diseñado específicamente para manejar números, con el TjvValidateEdit solo cambias dos propiedades y listo, no tendrías que hacer ninguna validación, ni hacer conversiones, ni programar nada.

Hola, gracias por contestar a mi duda. Probé agregar la función Trim pero no cambió nada. Agregué la instrucción:

Código Delphi [-]
if not((Frmcartones.LbSelectorCarton.Text <> '')and(Frmcartones.LbSelectorCarton.Text>=#49)and(Frmcartones.LbSelectorCarton.Text<=#57)) then Frmcartones.LbSelectorCarton.Text:=#49;
editformato;
auxiliar:= strtoint(Trim(LbSelectorCarton.Text));
EditarCarton(auxiliar);

y tampoco dió resultado. La verdad que estoy totalmente perdida, nose más que probar:confused:.
La opción de usar el componente TjvValidateEdit estaría muy buena, pero, aunque estube buscando por todos lados, dentro y fuera del foro. No logro instalarlo del paquete de jvcl -jedi. Si alguien me podría explicar de manera clara (estoy recién empezando en esto de programar con Delphi) le estaría muy agradecida. Y si no si se les ocurre que puedo probar, porque me quedé estancada en este punto y no puedo avanzar y calculo que es una pavada :(.

Desde ya muchas gracias

Fenareth 11-12-2008 21:16:14

Porqué no haces la validación después de comprobar que el Edit no contiene un espacio vacío ???

Código Delphi [-]
if Edit.Text <> '' then
begin
   // Hace comprobación de que sean números
end;

Es una idea que podría ayudarte...

Saludos :)

Caral 11-12-2008 21:22:03

Hola
Yo uso el componente NumEdit.
Este componente contiene dos edit uno para int y otro para float.
La verdad es que son muy practicos.
Por si lo quieres aqui esta.
Saludos
Pd: se instala como cualquier componente, no es un paquete.

ContraVeneno 11-12-2008 21:28:30

las JVCL la puedes encontrar aquí: http://sourceforge.net/project/showf...ckage_id=42327

La versión 3.35 es solo para delphi 2009, para las demás versiones debes de bajar la versión 3.34

El archivo que bajas tiene dos carpetas, JCL y JVCL, dentro de cada una de ellas, tienes un archivo que se llama "Install.bat". Primero ejecutas el Install.bat de la carpeta jcl (JCL\JCL\Install.Bat)y después ejecutas el install.bat de la JVCL (JVCL\Install.Bat) y en teoría eso sería todo.

Loreiev 11-12-2008 23:10:07

Error al validar por edit vacío
 
Muchas gracias a todos por sus respuestas. Finalmente puede instalar los componentes jedi!!!:) No sabía que la última versión era solo para delphi 2009, ese era el problema.
Ahora estoy utilizando el componente TJvValidateEdit pero aún sigue dando el mismo error:eek:. Debe haber algo mal en el código, porque la validación tiene que estar bien, no?
Ya probé verificar que el edit no tiene valor nulo cuando cambia su valor.
Bueno, voy a seguir probando, si alguien tiene alguna idea para darme será bien recibida.:(

Saludos

ContraVeneno 13-12-2008 16:30:26

si ya estas utilizando un TjvValidateEdit, ya no es necesario ni validar nada, ni hacer conversiones, ni programar nada...

ahora, ¿en que parte del código te marca que error?

fidel 14-12-2008 19:36:00

Para validar edits vacíos y que no te de error al convertirlos en entero basta con poner un 0 (cero) delante del texto a convertir:

.... auxiliar:= strtoint(Trim( '0' + LbSelectorCarton.Text))

Loreiev 16-12-2008 00:21:29

Sigue el error de edit vacío
 
Cita:

Empezado por fidel (Mensaje 330856)
Para validar edits vacíos y que no te de error al convertirlos en entero basta con poner un 0 (cero) delante del texto a convertir:

.... auxiliar:= strtoint(Trim( '0' + LbSelectorCarton.Text))

Hola, que tal? prové con eso de poner 0 pero tampoco funciona, sique saltando el error de que '' no es un valor entero válido.

Este error salta cuando cierro el formulario que muestra los cartones de lotería y te permite editarlos, al aceptar los cambios da error y marca el último close dentro de este procedimiento:

Código Delphi [-]
procedure TFrmCartones.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
 if MessageDlg('Desea guardar los cambios en el cartón?',
    mtConfirmation, [mbYes, mbNo], 0) = mrYes then
 begin
  if contfila then
  begin
   if not contnum then
   begin
    showmessage('El cartón debe tener 15 números',);
    exit;
   end
   else
   begin
    if not cartondistinto then showmessage('Ese cartón ya existe')
    else
    begin
     editformato;
     EditarCarton(0+lbNumeroCarton.Value);
    end;
   end;
  end;
 end;
 Close;
end;

El código de Editar cartón es:

Código Delphi [-]
Procedure EditarCarton (num:integer);
var
i,j,k,l:integer;
Begin
 k:=0;
 l:= num - 1;
 for i:=0 to 8 do
 begin
  for j:=0 to 2 do
  begin
   numerocarton[l,k]:= strtoint(frmCartones.GrillaCarton.Cells[i,j]) ;
   inc(k);
  end;
 end;
end;


Bueno, si necistás más información avisame. Porque yo sigo igual de perdida con esto.

Gracias por sus respuestas

ContraVeneno 16-12-2008 00:38:44

cambia el "Close" donde te marca el error por "Action := caFree;"

Loreiev 17-12-2008 02:17:22

Cita:

Empezado por ContraVeneno (Mensaje 331060)
cambia el "Close" donde te marca el error por "Action := caFree;"

Hola, prové lo que me dijiste pero sigue dando el mismo error, sólo que ahora marca la sentencia: Action := caFree;
Se te ocurre que puede ser?

Desde ya muchas gracias

fidel 17-12-2008 18:59:29

un 0 (cero) delante de un valor númerico no sirve para nada
EditarCarton(0+lbNumeroCarton.Value);

Tienes que ponerlo como caracter, entre comillas a la hora de
transformar el string a número para que si el edit estáa vacio
no de error al transformar un string vacio.
Creo que serría en esta línea.
numerocarton[l,k]:= strtoint('0' + frmCartones.GrillaCarton.Cells[i,j]) ;


La franja horaria es GMT +2. Ahora son las 21:23:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi