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. |
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. |
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.
|
Si buscas en el foro encontrarás algo como esto
En el evento OnKeyPress del edit pones: para solo números
sustituye 0123456789 por los caracteres que quieras que solo admita |
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
|
Tampoco son tantas, alrededor de 50, pero si no hazlo así, con pitido incluido en caso de no pulsar letra.
|
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
|
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 Va de memoria y sin comprobar, revisa los paréntesis. |
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. |
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. |
Solo números o solo letras
La primera partec de lo que me dijiste no lo entiendo la segunda si
|
Me refiero a cuando pongas código aquí en este foro, te quedaría así
|
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
|
Mira en la ayuda
Fix Round FormatFloat y utiliza la que te interese |
Hola migueweb.
Esta función que utiliza Round, te devuelve el número real con la cantidad de cifras decimales que le indiques en el parámetro NDec. Saludos. |
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. |
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. |
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)+ |
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 |
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); |
La franja horaria es GMT +2. Ahora son las 01:22:32. |
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