PDA

Ver la Versión Completa : TEdit primer digito no sea número


alquimista
24-07-2013, 22:07:51
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.


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.



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) ??

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
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
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: