Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-05-2008
axlrafael axlrafael is offline
Miembro
 
Registrado: abr 2008
Posts: 36
Poder: 0
axlrafael Va por buen camino
Como validad 324 TEdit's, no null?

Hola amigos miren en mi aplicación me interesa validar todos mis TEdit's, lo que quiero es que no queden vacios sino me marca error porque en el evento OnChange puse un código que me vaya sumando todos los valores de los TEdit's y se refleje en un TLabel, el problema es que son 324¡¡, pongo este código en el evento OnKeyPress (seleccione todos los TEdit's y di doble click en el evento):

Código:
procedure TGerencia_Reg.Edit1KeyPress(Sender: TObject; var Key: Char);
var
cero, i: integer;
begin
   if not (key in ['0'..'9',#8,#13]) then
key:=#0;
for i:=1 to 324 do
begin
If ((Findcomponent('Edit'+IntToStr(i)) as TEdit).Text=null) then //si oporimes el enter y el edit2 tiene algo escrito entonces
  Begin
  cero:=0;
  (Findcomponent('Edit'+IntToStr(i)) as TEdit).Text:=inttostr(cero);
  end;
  end;
end;
Ademas me interesa saber si el código ASCII de la tecla "Sup" es el mismo que la tecla "Delete"?

Saludos y suerte en sus proyectos

Última edición por axlrafael fecha: 14-05-2008 a las 18:51:03.
Responder Con Cita
  #2  
Antiguo 14-05-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cool

Cita:
Empezado por axlrafael Ver Mensaje
Hola amigos miren en mi aplicación me interesa validar todos mis TEdit's, lo que quiero es que no queden vacios sino me marca error porque en el evento OnChange puse un código que me vaya sumando todos los valores de los TEdit's y se refleje en un TLabel, el problema es que son 324¡¡, pongo este código en el evento OnKeyPress (seleccione todos los TEdit's y di doble click en el evento):

Código:
procedure TGerencia_Reg.Edit1KeyPress(Sender: TObject; var Key: Char);
var
cero, i: integer;
begin
   if not (key in ['0'..'9',#8,#13]) then
key:=#0;
for i:=1 to 324 do
begin
If ((Findcomponent('Edit'+IntToStr(i)) as TEdit).Text=null) then //si oporimes el enter y el edit2 tiene algo escrito entonces
  Begin
  cero:=0;
  (Findcomponent('Edit'+IntToStr(i)) as TEdit).Text:=inttostr(cero);
  end;
  end;
end;
Ademas me interesa saber si el código ASCII de la tecla "Sup" es el mismo que la tecla "Delete"?

Saludos y suerte en sus proyectos

Hola axlrafael

utiliza el componente JvValidateEdit de la JVC (jedi)... ese te permite un mejor control.. además que te permite validar la entrada de solo numeros... tipo de dato moneda, con decimales, etc.

creo que debes asignarle a cada Edit el valor 0, como valor por defecto... en el caso de que no se ingrese nada... así evitaras que de error en la aplicación...

Salu2
__________________
BlueSteel
Responder Con Cita
  #3  
Antiguo 14-05-2008
axlrafael axlrafael is offline
Miembro
 
Registrado: abr 2008
Posts: 36
Poder: 0
axlrafael Va por buen camino
Hola BlueSteel gracias por responder.

Efectivamente a cada TEdit le puse de valor por default "0" para evitar eso, pero como el usuario puede llegar a equivocarse y dejar un campo nulo la aplicación le marcará error y es lo que quiero evitar.

Sobre los componentes jedi ya descarge los componentes pero no se como instalarlos es por eso que no los ocupo.

Saludos
Responder Con Cita
  #4  
Antiguo 14-05-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Cita:
Empezado por axlrafael Ver Mensaje
Sobre los componentes jedi ya descarge los componentes pero no se como instalarlos es por eso que no los ocupo.
Vale, hubieses preguntado aquí y te habriamos ayudado acto seguido.

Saludos .
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #5  
Antiguo 14-05-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Deberias comprobarlo en el momento en que necesitas un numero. La manera correcta de comprobarlo es usando excepciones (el usuario tb puede que haya puesto una letra, una O por un 0, cosas asi...)
La manera correcta para coger estos errores es usando :

Código Delphi [-]
try
     a_sumar := strtofloat(Edit1.Text);
  // Lo que se va a probar si provoca error o no
except
  // Lo que quieras que pase si da un error...un mensaje, un valor por   
  //defecto...si no pasa ningun error, el trozo este no se ejecutara.
end;

aqui un ejemplo: lo puedes colocar en un boton 'Suma'

Código Delphi [-]
var
  i : integer;
  a_sumar : double;
  resultado : double;
begin
  resultado := 0;
  for i := 0 to 324 do 
  begin
    try
     a_sumar := strtofloat((FindComponent('Edit'+inttostr(i)) as TEdit).Text);
     except  // Si hay error....
         a_sumar := 0;
         ShowMessage('Error en el Editbox nº' + inttostr(i));
     end;
     resultado := resultado + a_sumar;
  end;
  ShowMessage(FormatFloat('0.00',Resultado));
end;

venga, a ver si te sirve
Responder Con Cita
  #6  
Antiguo 14-05-2008
axlrafael axlrafael is offline
Miembro
 
Registrado: abr 2008
Posts: 36
Poder: 0
axlrafael Va por buen camino
Cita:
Empezado por coso Ver Mensaje
Deberias comprobarlo en el momento en que necesitas un numero. La manera correcta de comprobarlo es usando excepciones (el usuario tb puede que haya puesto una letra, una O por un 0, cosas asi...)
La manera correcta para coger estos errores es usando :


Código Delphi [-]
try
a_sumar := strtofloat(Edit1.Text);
// Lo que se va a probar si provoca error o no
except
// Lo que quieras que pase si da un error...un mensaje, un valor por
//defecto...si no pasa ningun error, el trozo este no se ejecutara.
end;






aqui un ejemplo: lo puedes colocar en un boton 'Suma'


Código Delphi [-]
var
i : integer;
a_sumar : double;
resultado : double;
begin
resultado := 0;
for i := 0 to 324 do
begin
try
a_sumar := strtofloat((FindComponent('Edit'+inttostr(i)) as TEdit).Text);
except // Si hay error....
a_sumar := 0;
ShowMessage('Error en el Editbox nº' + inttostr(i));
end;
resultado := resultado + a_sumar;
end;
ShowMessage(FormatFloat('0.00',Resultado));
end;






venga, a ver si te sirve

Hola gracias coso, voy a adaptar mi código a este que me acabas de escribir haber si puedo, cualquier cosa yo les aviso va.

Saludos
Responder Con Cita
  #7  
Antiguo 14-05-2008
axlrafael axlrafael is offline
Miembro
 
Registrado: abr 2008
Posts: 36
Poder: 0
axlrafael Va por buen camino
Lo que intento hacer es como en la calculadora de Windows, que cuando uno borra algun dato automaticamente me aparece "0" para no hechar a perder la operación, asi es conmigo, no puedo dejar algun campo vacio por que me hecha a perder el código OnChange al sumar todos los campos.

Última edición por axlrafael fecha: 14-05-2008 a las 20:31:01.
Responder Con Cita
  #8  
Antiguo 14-05-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola axlrafael, primero inicializa todos tus edit con un valor 0, y pon el codigo que tienes paar que reciba solo numeros en uno de tus edit y despues ese evento de ese edit lo asocias a los demas edit, para que no repitas codigo.

Código Delphi [-]
procedure TGerencia_Reg.Edit1KeyPress(Sender: TObject; var Key: Char);
 begin
  if not (key in ['0'..'9',#8,#32,#13]) then
   key:=#0;
end;

y en el evento OnExit de tu edit, puedes verificar que no se salga de dicho edit si esta vacío y este evento también lo asocias a todos tus edits.

Código Delphi [-]
procedure TGerencia_Reg.Edit1Exit(Sender: TObject);
begin
 if TEdit(Sender).Text='' then
  begin
   showmessage('Debe introducir un número');
   TEdit(Sender).SetFocus;
  end;
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #9  
Antiguo 14-05-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Para saber el codigo ascii de cualquier tecla, prueba de poner ShowMessage(inttostr(Key)) en el evento OnKeyDown (no el OnKeyPress) de un editbox, p.e.

Última edición por coso fecha: 14-05-2008 a las 19:39:49.
Responder Con Cita
  #10  
Antiguo 14-05-2008
axlrafael axlrafael is offline
Miembro
 
Registrado: abr 2008
Posts: 36
Poder: 0
axlrafael Va por buen camino
Hola Caro, de nueva cuenta gracias por responder a mi ayuda.

Solo que esta vez no me sirvio tu truco , ya que al dejar el campo vacio automaticamente me aparece el error de que no son compactibles los datos enteros a los tipos string de los TLabel's.

Ya he probado con varios códigos y no me sirven.

Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como crear un bucle con TEdit's axlrafael OOP 12 08-05-2008 19:22:48
Pasar demas datos de un DBGRID a TEDIT's Ericato Varios 5 09-03-2007 17:44:05
cambiar campo null a not null andressanchez Firebird e Interbase 8 18-09-2006 22:00:09
Como valido un null?? jbetancurt Firebird e Interbase 2 11-11-2004 16:19:39
Como puedo grabar un NULL en la BD? furniman Varios 2 23-03-2004 11:36:36


La franja horaria es GMT +2. Ahora son las 07:38:11.


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
Copyright 1996-2007 Club Delphi