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 23-09-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola arespremium
Lo que te han dicho los maestros es muy cierto, pero si necesitas que sea muy sencillo, pues no necesitas nada.
Sin cambiar nada en el edit, lo unico que necesitas es usar el evento OnChage.
Supongamos que tienes 2 edits, en uno quieres colocar un solo caracter o numero y cuando esto pase cambie el foco al siguiente, pues haces esto:
En el evento OnChange del Edit1:

Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
edit2.SetFocus;
end;



Como ves, simplisimo, no hay manera de que se coloque mas de un caracter o numero en el edit1.
Ahora si necesitas que solo sean numeros, yo prefiero usar este componente, que funciona igual que el edit solo que no acepta letras.
Saludos
Pero me parece que con ese código, si el usuario entra de nuevo en Edit1, podrá escribir un segundo caracter y así sucesivamente...

En eso estoy con Delphius, es mejor acotar el número de caracteres permitidos con MaxLength.
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #2  
Antiguo 23-09-2007
MON___ MON___ is offline
Miembro
 
Registrado: abr 2007
Ubicación: Salamanca (España)
Posts: 84
Poder: 18
MON___ Va por buen camino
Existen muchas formas. Cuando he querido que en un TEDIT sólo se introduzca un valor numérico (0 a 9) siempre he empleado este código:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9', char(VK_BACK)]) then
begin
key := #0;
messageBeep(0); // un pitido para indicar que no se ha introducido un carácter válido
end;
end;
Responder Con Cita
  #3  
Antiguo 23-09-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Es muy cierto.
La maravilla de delphi, se pueden hacer las mismas cosas de muchas maneras.
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
 edit2.SetFocus;
 edit1.ReadOnly:= true;
end;
No es que tenga nada en contra de la propiedad MaxLength, solo trato de dar opciones, asi aprendemos mas.
Saludos
Responder Con Cita
  #4  
Antiguo 24-09-2007
CamiloU CamiloU is offline
Miembro
 
Registrado: dic 2005
Ubicación: Sincelejo - COlombia
Posts: 59
Poder: 19
CamiloU Va por buen camino
Hola. hay un hilo que se llama "Problemas para capturar valor de OnKeyPress". Revísalo, te puede servir.
Responder Con Cita
  #5  
Antiguo 24-09-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Cita:
Empezado por Caral Ver Mensaje
Hola
Es muy cierto.
La maravilla de delphi, se pueden hacer las mismas cosas de muchas maneras.
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
 edit2.SetFocus;
 edit1.ReadOnly:= true;
end;
No es que tenga nada en contra de la propiedad MaxLength, solo trato de dar opciones, asi aprendemos mas.
Saludos
Y si luego quiero modificar el valor que ya puse en ese edit por que me doy cuenta que no era ese el que iba? Con tu código ya no podría hacer ese cambio...

Lo mejor es usar la propiedad ya sugerida... MaxLenght que para eso está...


Saludos...
Responder Con Cita
  #6  
Antiguo 25-09-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
Cita:
Empezado por maeyanes Ver Mensaje
Hola...

Y si luego quiero modificar el valor que ya puse en ese edit por que me doy cuenta que no era ese el que iba? Con tu código ya no podría hacer ese cambio...

Lo mejor es usar la propiedad ya sugerida... MaxLenght que para eso está...

Saludos...
Ya lo había pensado también, pero si se trataba de aprender, siempre habrán soluciones como volver a habilitar el Edit1, o no bloquearlo y hacer que cuando el usuario entre se borre lo que ya tiene, en fin...

Siempre se pueden hacer las cosas de distintas maneras, eso es algo inherente a la programación (no sólo de Delphi)... Aunque a la larga, de la gama de soluciones, es lógico que ocupemos aquella solución que sea más simple de llevar a cabo.
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #7  
Antiguo 26-09-2007
Avatar de courtois
courtois courtois is offline
Miembro
 
Registrado: abr 2006
Ubicación: Mexico DF
Posts: 200
Poder: 19
courtois Va por buen camino
O tambien podrian usar un TMaskEdit y ponerle una mascara de modo que acepte solo un numero o una letra
Responder Con Cita
  #8  
Antiguo 26-09-2007
Avatar de arespremium
arespremium arespremium is offline
Miembro
 
Registrado: jul 2007
Posts: 48
Poder: 0
arespremium Va por buen camino
Hola gracias por su apoyo el "MaxLenght" funciona, todo bien, pude limitar el numero de ingreso y dar un salto al siguiente Edit.

pero no entiendo sobre como modificar el ingreso ya que una ves que se ingresa no se puede modificar queda fijo.

Gracias !! son muy amables
Responder Con Cita
  #9  
Antiguo 26-09-2007
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
Mira a ver si te sirve esto, solo lo he probado una vez y parece que funciona, te permite meter un solo dígito numérico en Edit1 y pasar automaticamente al siguiente componente (sea edit u otro) y si vuelves al edit te permite reemplazar el dígito numérico por otro si lo seleccionas, o borrarlo y escribir otro nuevo.

Edit1 debe tener su propiedad MaxLength a 1 para no permitir entrar más de un dígito.

Si lo que quieres es que solo adimita letras o un determinado número de caracteres reemplaza los números 0123456789 por lo que necesites en la linea
if ( StrScan('0123456789'+chr(7)+chr(8), Key) = nil ) then

Pon esto en el evento OnKeyPress del Edit1

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if ( StrScan('0123456789'+chr(7)+chr(8), Key) = nil ) then
    //controlar entrada solo dígitos numéricos 0..9
    begin
      key := #0;
    end
  else
    begin
      if (key <> #7) and (key <> #8) then
        //si se entró un número se pasa al siguiente componente
        perform(wm_nextdlgctl,0,0);
    end
end;

Última edición por fidel fecha: 26-09-2007 a las 20:03:06.
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
Limitar número de usuarios concurrentes mlara Firebird e Interbase 0 25-11-2006 21:13:38
Una de paranoias. ¿Que pueden saber de mi solo conociendo mi numero de movil? papulo Humor 12 23-09-2005 09:23:18
Ingreso de fechas miguelb Varios 4 15-02-2005 11:55:11
Limitar el numero de Registro de una Consulta en FireBird 1.5 Abel Garcia Firebird e Interbase 3 08-12-2004 23:57:31
validar que solo entren numero luigi Varios 8 29-03-2004 21:04:44


La franja horaria es GMT +2. Ahora son las 16:35:55.


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