Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   validar tedit que primer caracter no sea 0 (https://www.clubdelphi.com/foros/showthread.php?t=71218)

gonza_619 07-12-2010 15:58:21

validar tedit que primer caracter no sea 0
 
hola a todos , bueno tengo un problema con un tedit en el cual ya lo valide para q solo se ingrese numeros, pero necesitaria que el primer caracter no sea 0, que si ingresa 0 no lo permita, solo el primer caracter gracias. probe
Código Delphi [-]
 if not(Key in ['0'..'9',#8]) or (Edit2.SelStart=0)then
  begin
    Key:=#0;
    BEEP;
  end;
pero no me deja ingresar nada como deberia ser gracias de nuevo

escafandra 07-12-2010 16:09:00

Código Delphi [-]
begin
if not(Key in ['0'..'9',#8]) or (((Sender as TEdit).SelStart = 0) and (Key = '0')) then
    Key:=#0;
end;

Saludos.

Ñuño Martínez 07-12-2010 16:11:49

Creo que el problema está en "Edit2.SelStart". Elimina esa comprobación.

[edito] Se me adelantó "escafandra".

marcoszorrilla 07-12-2010 16:15:07

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

procedure TForm1.Edit1Change(Sender: TObject);
begin
 If Edit1.Text[1]='0' then
 begin
 ShowMessage('El primer valor no puede ser cero.');
 Edit1.Text:=Copy(Edit1.Text,2,Length(Edit1.Text));
 end;
end

Un Saludo.

ecfisa 07-12-2010 16:15:10

Hola gonza.

Otro modo puede ser:
Código Delphi [-]
 
  if not (Key in ['0'..'9',#8]) or ((Key='0') and (Length(TEdit(Sender).Text)=0)) then
  begin
     Beep;
     Key:=#0;
  end;

Saludos.

marcoszorrilla 07-12-2010 16:22:02

Hola Ecfisa, el problema que veo que con ese código es que si tecleas por ejemplo:

1234

y luego añades el 0 a la izquierda te deja saltarte la norma.

01234


Un Saludo.

ecfisa 07-12-2010 16:25:59

Cita:

Empezado por marcoszorrilla (Mensaje 384253)
Hola Ecfisa, el problema que veo que con ese código es que si tecleas por ejemplo:

1234

y luego añades el 0 a la izquierda te deja saltarte la norma.

01234


Un Saludo.

Pues... tenés toda la razón. :)

Un saludo.

marcoszorrilla 07-12-2010 16:41:51

He hecho algunos cambios porque detecté un fallo si se empieza tecleando un 0.
Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if not (Key in ['0'..'9',#8])  then
  begin
     Beep;
     Key:=#0;
  end;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  if length(Edit1.Text) > 0 then
  begin
   If Edit1.Text[1]='0' then
   begin
   ShowMessage('El primer valor no puede ser cero.');
     if Length(Edit1.text) > 1 Then
     Edit1.Text:=Copy(Edit1.Text,2,Length(Edit1.Text))
     else
     Edit1.Text:='';
   end;
  end;
end;
Un Saludo.

gonza_619 07-12-2010 16:53:36

gracias amigos, con la primera respuesta funciono de 10, ahora tengo otro prob, q en un dbedit muestro un horario de campo time, y cuando quiero moficiarlo desde el dbedit, puedo poner cualquier caracter lo cual no tendria q ser asi, es decir el dbedit me muestra = 11:00:00 p.m. , se puee mostrar el horario desde un datetimepicker o ahi alguna solucion para modificacion de horario? o como validar ese dbedit ? gracias a todos

marcoszorrilla 07-12-2010 16:59:35

Para esta nueva pregunta debes abrir otro hilo.

Un Saludo.


La franja horaria es GMT +2. Ahora son las 02:15:54.

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