Ver Mensaje Individual
  #1  
Antiguo 20-05-2004
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Reputación: 22
Giniromero Va por buen camino
Question onKeyPress es caracter no numérico

Hola,

Estoy trabajando con Delphi6 e interbase 7.

En mi aplicación, tengo una ventana en la que se puede buscar un cliente, de entre los que tengo en la BD.

Este se puede buscar por el número de cliente, o por el nombre.

También tengo un radioGroup, para que el usuario seleccione por que campo quiere buscar.

Tengo un TEdit, que es donde se escribe lo que quiero buscar.

El caso es que como me daba error al insertar letras, cuando estamos buscando por el campo numérico, le puse en el onkeypress código para que detectase que eran letras y no número, y diera un error.

Ahora tengo que ampliar el código, de modo que:
1) cuando se busque en el campo numérico, (numero de cliente), y se introduzcan letras, que se cambie el campo de busqueda al de nombre de cliente, y el radioGroup, también al nombre de cliente

2 cuando se busque en el campo varchar, (nombre de cliente), y se introduzcan números, que se cambie el campo de busqueda al de numero de cliente, y el radioGroup, también al numero de cliente.


El problema que tengo, es que, cuando quiero buscar en el campo texto, y tengo texto, pero me confundo al escribir y quiero borrar, al presionar la tecla de borrado, (del o supr), es como si me los considerase números y se me cambia el radioGroup al numero de cliente.

Mi código es:

Código:
procedure TFrmSeleAlu.EditBuscarKeyPress(Sender: TObject; var Key: Char);
begin

       //si está buscando por NUMALU
  IF (RCampo = 'NUMALU') THEN BEGIN
       //y no insertamos un número sino una letra
     If Not (Key In ['0'..'9',#8]) Then Begin
       //marcamos como campo de busqueda en el radioGroup APELALU
       RadioGroup1.ItemIndex := 0;
       //ponemos como campo por el que buscar APELALU
       RCampo := 'APELALU';
     End;
  END
  ELSE IF ((RCampo = 'APELALU') OR (RCampo = 'NOMALU')) THEN BEGIN
  //si elcampo por el que estoy buscando es apellido o nombre
  //y me insertan un dígito

     If (Key In ['0'..'9',#8]) Then Begin
       //marcamos como campo de busqueda en el radioGroup APELALU
       RadioGroup1.ItemIndex := 1;
       //ponemos como campo por el que buscar NUMALU pues estamos insertando
       //Datos
       RCampo := 'NUMALU';
     End;

  END

end;
Como puedo poner este " If (Key In ['0'..'9',#8]) Then Begin
" para que SÓLO ENTRE EN EL IF SI ES UN DÍGITO del 0 al 9, pero no si es cualquier otro caracter o tecla?

Muchisimas gracias,

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita