Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-02-2019
tarco35 tarco35 is offline
Miembro
 
Registrado: sep 2003
Posts: 208
Poder: 16
tarco35 Va por buen camino
Varios TEdit solo numericos

Hola, como puedo hacer para que varios TEdit del form solo acepten datos numericos Hay soluciones por aqui, pero tendria que hacer un procedimiento en el evento OnKeyDown por cada uno de los TEdit, y la idea seria hacer uno y despues el resto de TEdit en el evento que llamaran al procedimiento para validar la entrada.
Gracias
Responder Con Cita
  #2  
Antiguo 11-02-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 29.273
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Puedes usar el mismo evento para todos los edit.
Responder Con Cita
  #3  
Antiguo 11-02-2019
tarco35 tarco35 is offline
Miembro
 
Registrado: sep 2003
Posts: 208
Poder: 16
tarco35 Va por buen camino
Si, eso es lo que deseo, pero como le sumo el caracter de la tecla pulsada al Tedit que sea??
Responder Con Cita
  #4  
Antiguo 11-02-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 29.273
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Deduzco que estás haciendo una calculadora.
Tienes diversas formas, por ejemplo, en la propiedad de cada tecla pones su número. En el tag del 1 pones un 1, en el tab del 2 pones un 2, etc.
Luego, en el evento común a todas las teclas, al hacer click, detectas su tag y actuas en consecuencia.
Código Delphi [-]
TeclaPulsada( Sender:Tbutton );
var iTecla:int;
begin
  iTecla = sender.tag;
  if iTecla=1 then
   ...
  else if iTecla=2 then
   ...
  etc.
end;

Última edición por Casimiro Notevi fecha: 11-02-2019 a las 13:09:17.
Responder Con Cita
  #5  
Antiguo 11-02-2019
tarco35 tarco35 is offline
Miembro
 
Registrado: sep 2003
Posts: 208
Poder: 16
tarco35 Va por buen camino
Gracias Casimiro
No es una calculadora, son 9 Tedit para que el usuario meta (o no) datos numericos y si pulsa una tecla que no sea numero, coma, supr, del, pues no haga nada y ni siquiera aparezca en el text del Tedit que corresponda
Responder Con Cita
  #6  
Antiguo 11-02-2019
tarco35 tarco35 is offline
Miembro
 
Registrado: sep 2003
Posts: 208
Poder: 16
tarco35 Va por buen camino
Muestro como lo he resuelto:
Código Delphi [-]
procedure TFormNuevaVisita.Edit2KeyPress(Sender: TObject; var Key: Char);
var
  cd:string;
begin
  If Key='.' then Key:=',';
  cd :=(Sender as TEdit).Text;  // variable intermedia para clarificar codigo
  If ((Pos(',',Cd))<>0) AND (Key=',') Then Key:=#0;  // solo se permite un signo de puntuacion
  (Sender as TEdit).ReadOnly := not (key in [#8,#46, ',','0'..'9']);  // sentencia encontrada por el foro, no recuerdo de quien
end;

Ahora ya puedo asignarle al evento OnKeyPress de los 9 TEdit la misma rutina
Gracias a todos.
Responder Con Cita
  #7  
Antiguo 11-02-2019
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.133
Poder: 15
movorack Va camino a la famamovorack Va camino a la fama
Para que no te enredes con lo del formato...

Código Delphi [-]
procedure TForm1.NumericKeyPress(Sender: TObject; var Key: Char);
  var
    lExTemp: Extended;
begin
  if not TryStrToFloat(TEdit(Sender).Text+Key, lExTemp) then
    Key := #0;
end;
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #8  
Antiguo 11-02-2019
tarco35 tarco35 is offline
Miembro
 
Registrado: sep 2003
Posts: 208
Poder: 16
tarco35 Va por buen camino
Gracias, aunque Delphi6 no la tiene, tiene una parecida.
Muy buena aportacion.
Responder Con Cita
  #9  
Antiguo 11-02-2019
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.211
Poder: 31
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Te aconsejo usar un código similar en los eventos OnExit de los Edits para verificar los datos que pudieran ingresar por copiado/pegado.

Ej.:
Código Delphi [-]
procedure TForm1.EditsExit(Sender: TObject);
var
  ed: TEdit;
  v: Extended;
begin
  ed := TEdit(Sender);
  if (ed.Text > '') and not TryStrToFloat(ed.Text, v)  then
  begin
    ed.SetFocus;
    raise Exception.Create('Número inválido');
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Solo una llamada a Onchange de tedit. ¿Se puede? jotaeme Varios 4 06-03-2009 11:43:04
TEdit, que admita sólo números con 2 decimales David OOP 5 09-02-2008 17:09:58
¿Cómo pasar varios datos de un TEdit a un DbGrid? day_eli Conexión con bases de datos 3 29-05-2007 22:22:29
TEdit que acepte solo integer Dave B. Varios 2 09-09-2004 01:14:48
un tEdit que sólo tome datos de tipo integer? Giniromero Conexión con bases de datos 9 25-09-2003 17:04:54


La franja horaria es GMT +2. Ahora son las 05:41:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi