Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
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 07-07-2003
oesteve oesteve is offline
Miembro
 
Registrado: jun 2003
Posts: 13
Poder: 0
oesteve Va por buen camino
Solo letras y numeros en edit

Hola amigos, os escribo porque no se como hacer para que dentro de un edit solo pueda poner letras y numeros y en caso de que el caracter introducido no sea ni letra ni numero, sacar un mensaje informativo advirtiendolo.

Gracias.
Responder Con Cita
  #2  
Antiguo 07-07-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 907
Poder: 15
andres1569 Va por buen camino
Hola:

Mírate este hilo, donde se dan diversas opciones para controlar la entrada de caracteres en un TEdit o en un TMaskEdit:

http://www.clubdelphi.com/foros/show...&threadid=1823

Posiblemente la parte que te interese sea la de interceptar el evento OnKeyPress y ahí controlas que los caracteres introducidos sean de tu gusto, si no lo son haces la asignación Key = #0, y anulas la pulsación. Revisa también los caracteres de las teclas Retroceso y Suprimir, que no debes anular normalmente.
__________________
Guía de Estilo
Responder Con Cita
  #3  
Antiguo 19-05-2010
migueweb migueweb is offline
Registrado
 
Registrado: may 2010
Posts: 8
Poder: 0
migueweb Va por buen camino
Post Solo números o solo letras

Hola amigos, estoy hace unos días tratando de lograr que en un edit, solo se puedan introducir texto o solo números y no lo he logrado, he probado las variantes aquí vistas y no me han funcionado, yo trabajo con delphi 7, necesito su ayuda pues es un proyecto de mi escuela.
Responder Con Cita
  #4  
Antiguo 19-05-2010
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 13
fidel Va por buen camino
Si buscas en el foro encontrarás algo como esto

En el evento OnKeyPress del edit pones:

para solo números
Código Delphi [-]
  if ( StrScan('0123456789'+chr(7)+chr(8), Key) = nil ) then  Key := #0;

sustituye 0123456789 por los caracteres que quieras que solo admita
Responder Con Cita
  #5  
Antiguo 19-05-2010
migueweb migueweb is offline
Registrado
 
Registrado: may 2010
Posts: 8
Poder: 0
migueweb Va por buen camino
Post Solo números o solo letras

Perfecto, muchas gracias, ya esta haciendo lo que deseaba con el edit para solo admitir numeros, ahora como hago para que solo me admita letras, porque de usar este tendría que utilizar o mejor dicho poner todas las vocales del abecedario tanto las minusculas como las mayusculas y seria muy grande el codigo
Responder Con Cita
  #6  
Antiguo 20-05-2010
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 13
fidel Va por buen camino
Tampoco son tantas, alrededor de 50, pero si no hazlo así, con pitido incluido en caso de no pulsar letra.
Código Delphi [-]
if not (key in ['a'..'z','A'..'Z', #7, #8, #13]) then 
begin 
  Key := #0; 
  Beep; 
end;
Responder Con Cita
  #7  
Antiguo 20-05-2010
migueweb migueweb is offline
Registrado
 
Registrado: may 2010
Posts: 8
Poder: 0
migueweb Va por buen camino
Post Solo números o solo letras

Gracias ya todo esta resuelto por esa parte ahora explicame algo si yo quiero sacar el promedio de números que se encuentran en tres edit distintos y que me muestre el resultado en un cuarto como seria
Responder Con Cita
  #8  
Antiguo 20-05-2010
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 13
fidel Va por buen camino
Deberías saber sacar la media de tres números: se suman los tres y se divide entre 3

Si son números enteros lo que entras en los edits, si no cambia StrToInt por StrToFloat
Código Delphi [-]
ShowMessage( FloatToStr ( StrToInt(Edit1.Text) + StrToInt(Edit2.Text) + StrToInt(Edit3.Text) ) / 3 ) );
Va de memoria y sin comprobar, revisa los paréntesis.
Responder Con Cita
  #9  
Antiguo 20-05-2010
migueweb migueweb is offline
Registrado
 
Registrado: may 2010
Posts: 8
Poder: 0
migueweb Va por buen camino
Post Solo números o solo letras

Gracias colega me fue de mucha ayuda, ya resolvi la tarea completa aquí te dejo como resolvi lo del promedio o la forma en que lo hice

Edit10.Text := FloatToStr((StrToFloat(Edit2.text)+StrToFloat(Edit5.text)+StrToFloat(Edit8.text))/3)

Y este es el codigo completo de lo que hice:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg, Mask, ToolEdit, CurrEdit;

type
TForm1 = class(TForm)
Bevel1: TBevel;
Button1: TButton;
GroupBox1: TGroupBox;
Panel1: TPanel;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
Edit3: TEdit;
GroupBox3: TGroupBox;
Panel3: TPanel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Edit4: TEdit;
Edit6: TEdit;
GroupBox2: TGroupBox;
Panel2: TPanel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit7: TEdit;
Edit9: TEdit;
Bevel2: TBevel;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Button2: TButton;
Image1: TImage;
Edit2: TEdit;
Edit5: TEdit;
Edit8: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
procedure Edit8KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit9KeyPress(Sender: TObject; var Key: Char);
procedure Edit6KeyPress(Sender: TObject; var Key: Char);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit7KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);


private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
I: Integer;
begin
for i := 0 to ComponentCount -1 do
if Components[i] is TEdit then
TEdit(Components[i]).Text := '';
end;

procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
if ( StrScan('0123456789,'+chr(7)+chr(8), Key) = nil ) then Key := #0;
end;

procedure TForm1.Edit8KeyPress(Sender: TObject; var Key: Char);
begin
if ( StrScan('0123456789,'+chr(7)+chr(8), Key) = nil ) then Key := #0;
end;

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if ( StrScan('0123456789'+chr(7)+chr(8), Key) = nil ) then Key := #0;
end;

procedure TForm1.Edit9KeyPress(Sender: TObject; var Key: Char);
begin
if ( StrScan('0123456789'+chr(7)+chr(8), Key) = nil ) then Key := #0;
end;

procedure TForm1.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
if ( StrScan('0123456789'+chr(7)+chr(8), Key) = nil ) then Key := #0;
end;



procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['a'..'z','A'..'Z',' ','á','é','í','ó','ú','ü','Á','É','Í','Ó','Ú','Ü', #7, #8, #13]) then
begin
Key := #0;
Beep;
end;
end;

procedure TForm1.Edit7KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['a'..'z','A'..'Z',' ','á','é','í','ó','ú','ü','Á','É','Í','Ó','Ú','Ü', #7, #8, #13]) then
begin
Key := #0;
Beep;
end;
end;

procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['a'..'z','A'..'Z',' ','á','é','í','ó','ú','ü','Á','É','Í','Ó','Ú','Ü', #7, #8, #13]) then
begin
Key := #0;
Beep;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit10.Text := FloatToStr((StrToFloat(Edit2.text)+StrToFloat(Edit5.text)+StrToFloat(Edit8.text))/3)
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Edit11.Text := FloatToStr((StrToFloat(Edit3.text)+StrToFloat(Edit9.text)+StrToFloat(Edit6.text))/3)
end;

procedure TForm1.Button5Click(Sender: TObject);
var
ma:real;
begin
ma:=StrToFloat(Edit2.text);
if ma<StrToFloat(Edit5.Text) then
ma:=StrToFloat(Edit5.Text);
if ma<StrToFloat(Edit8.Text) then
ma:=StrToFloat(Edit8.Text);
Edit12.Text:= FloatToStr(ma);
end;
end.
Responder Con Cita
  #10  
Antiguo 20-05-2010
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 13
fidel Va por buen camino
Si pones código delphi metelo entre las etiquetas, tienes aquí donde escribes las consultas un icono de delphi (el penúltimo), click sobre el y te salen dos etiquetas de principio y fin, pegas el código entre ellas, de esa forma se puede ver bien, si no es un lio.

El procedimiento de entrar solo números basta con que lo escribas una sola vez desde un edit, en el resto de los edits que lo utilizan vas a la ventanilla de su OnKeyPress y seleccionas el nombre del evento del primero y ya está.

Lo mismo para el procedimiento de entrar solo letras, con uno basta, el resto se pone el nombre del que ya está hecho.
Responder Con Cita
  #11  
Antiguo 20-05-2010
migueweb migueweb is offline
Registrado
 
Registrado: may 2010
Posts: 8
Poder: 0
migueweb Va por buen camino
Solo números o solo letras

La primera partec de lo que me dijiste no lo entiendo la segunda si
Responder Con Cita
  #12  
Antiguo 21-05-2010
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 13
fidel Va por buen camino
Me refiero a cuando pongas código aquí en este foro, te quedaría así

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  I: Integer;
begin
  for i := 0 to ComponentCount -1 do
  if Components[i] is TEdit then
  TEdit(Components[i]).Text := '';
end;

procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
  if ( StrScan('0123456789,'+chr(7)+chr(8), Key) = nil ) then Key := #0;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['a'..'z','A'..'Z',' ','á','é','í','ó','ú','ü','Á','É','Í','Ó','Ú','Ü', #7, #8, #13]) then
  begin
    Key := #0;
    Beep;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Edit10.Text := FloatToStr((StrToFloat(Edit2.text)+StrToFloat(Edit5.text)+StrToFloat(Edit8.text))/3)
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  Edit11.Text := FloatToStr((StrToFloat(Edit3.text)+StrToFloat(Edit9.text)+StrToFloat(Edit6.text))/3)
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  ma:real;
begin
  ma:=StrToFloat(Edit2.text);
  if mathen
    ma:=StrToFloat(Edit5.Text);
  if mathen
    ma:=StrToFloat(Edit8.Text);
  Edit12.Text:= FloatToStr(ma);
end;

end.
Responder Con Cita
  #13  
Antiguo 21-05-2010
migueweb migueweb is offline
Registrado
 
Registrado: may 2010
Posts: 8
Poder: 0
migueweb Va por buen camino
Post Como puedo quitar lo que esta después de la coma o redondear el número

Solo me falta arreglar algo en el programita que hice, necesito saber como yo puedo quitar en el promedio de edad todo lo que hay después de la coma es decir en ocaciones me queda el promedio de edad 35,66667, yo quiero que solo me quede 35 o que me redondee a 36, es esto posible
Responder Con Cita
  #14  
Antiguo 21-05-2010
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 13
fidel Va por buen camino
Mira en la ayuda
Fix
Round
FormatFloat

y utiliza la que te interese
Responder Con Cita
  #15  
Antiguo 21-05-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 9.736
Poder: 27
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 behold
Hola migueweb.

Esta función que utiliza Round,
Código Delphi [-]
function Redondea(Num: Double; NDec:Byte): Double;
begin
  Result:= Round(Num * Exp(ln(10)*NDec)) / Exp(ln(10)*NDec);
end;
te devuelve el número real con la cantidad de cifras decimales que le indiques en el parámetro NDec.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #16  
Antiguo 21-05-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 9.736
Poder: 27
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 behold
Hola de nuevo.

Me acordé que si no sos partidario del fundamentalismo, podes usar la función SimpleRoundTo, pero debes incluir la unit Math.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #17  
Antiguo 24-05-2010
migueweb migueweb is offline
Registrado
 
Registrado: may 2010
Posts: 8
Poder: 0
migueweb Va por buen camino
Post Solo números o solo letras

Después de mucho trabajo, pude ver la ayuda de delphi 7 porque tengo Seven instalado y no me abria la ayuda y no logro saber como funciona todo lo que me han dicho que pruebe, ahora les voy a explicar detalladamente que deseo

yo tengo este procedimiento

procedure TForm1.Button4Click(Sender: TObject);
begin
Edit11.Text := FloatToStr((StrToFloat(Edit3.text)+StrToFloat(Edit9.text)+StrToFloat(Edit6.text))/3)
end;

y deseo que el resultado me lo de como un número entero sin decimales, es decir 35, 34, 32 como podría hacerlo.
Responder Con Cita
  #18  
Antiguo 24-05-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 9.736
Poder: 27
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 behold
Hola de nuevo.

En tu caso, basta con agregar lo que te pongo en negrita:
Código:
   Edit11.Text := FloatToStr(Round((StrToFloat(Edit3.text)+StrToFloat(Edit9.text)+
     StrToFloat(Edit6.text))/3));
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #19  
Antiguo 25-05-2010
migueweb migueweb is offline
Registrado
 
Registrado: may 2010
Posts: 8
Poder: 0
migueweb Va por buen camino
Post

Gracias a los que me han ayudado en la realización de este pequeño proyecto que me ayudaron a hacer

Ahora tengo otra pregunta quiero que este procedimiento

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit10.Text := FloatToStr((StrToFloat(Edit6.Text)+StrToFloat(Edit8.Text)+StrToFloat(Edit9.Text))/3)
end;

Me muestre solo 2 lugares después de la coma(,) es decir 456,25
Responder Con Cita
  #20  
Antiguo 25-05-2010
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 13
fidel Va por buen camino
Con Round poniendo los decimales que quieres.
Con FormatFloat te formatea también los miles si quieres
FormatFloat('##,####,##0.00', valor);
puedes añadir un literal de lo que es
FormatFloat('##,####,##0.00 metros', valor);
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


La franja horaria es GMT +2. Ahora son las 13:27:19.


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