Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   TEdit primer digito no sea número (https://www.clubdelphi.com/foros/showthread.php?t=83765)

alquimista 24-07-2013 22:07:51

TEdit primer digito no sea número
 
Muy buenas...

¿Cual seria el mejor sitio (evento o método) para comprobar que el primer dígito de un Tedit no sea un número?
He puesto en el keypress que solo sean caractereres alfanumericos.

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If not (Key in ['A'..'Z','a'..'z','0'..'9','e','E','.','-','+','_',#8]) then Key:=#0;
end;

Casimiro Notevi 24-07-2013 22:51:28

Quizás te convenga mejor usar una máscara, un TEditMask
Porque de esa manera tienes que comprobar que es el primer dígito y sería más fácil hacerlo en el onexit o en el onchange del edit.
Por eso, mejor, cambia el tedit por un teditmask.

ecfisa 24-07-2013 23:06:49

Hola alquimista.


Código Delphi [-]
procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
  with Sender as TEdit do
    ReadOnly := (SelStart + SelLength = 0) and (Key in ['0'..'9']);
end;


Saludos :)

Casimiro Notevi 25-07-2013 00:05:32

No se me habría ocurrido hacerlo así :eek:
Es más, ¿eso funciona? :D

alquimista 25-07-2013 00:09:04

Y le añado lo primero que puse???

Y si quiero limitarlo a un número determinado de caracteres???
vale con poner: or (SelStart + SelLength >x) ??

Código Delphi [-]
procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
  with Sender as TEdit do
    ReadOnly := (SelStart + SelLength = 0) and (Key in ['0'..'9']) OR ((SelStart + SelLength >longitud);
end;

PD: Me parece impresionante...

Gracias..

Casimiro Notevi 25-07-2013 00:14:13

Cita:

Empezado por alquimista (Mensaje 464476)
Y le añado lo primero que puse???

No
.
:)

alquimista 25-07-2013 00:21:34

Es que si no no me deja borrar caracteres.

En realidad solo quiero este juego de caracteres y que el primero sea letra o _ y limitado a 32 caracteres (numeros o letras o _ solo)
if not (Key in ['A'..'Z','a'..'z','0'..'9','_',#8]) then Key:=#0;
Pero lo pongo detras de lo de ecfisa.

PD:Lo de limitarlo no me va ya que al rebasar la longitud no me deja ni borrar.

Sorry: lo de la longitud se hace con la propiedad MAxLength

oscarac 25-07-2013 00:24:26

Cita:

Empezado por Casimiro Notevi (Mensaje 464475)
No se me habría ocurrido hacerlo así :eek:
Es más, ¿eso funciona? :D

si funciona, lo curioso es que en ninguna literatura encontre esas propiedades :eek:


La franja horaria es GMT +2. Ahora son las 09:40:04.

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