Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Clase Admita Espacios En Delphi (https://www.clubdelphi.com/foros/showthread.php?t=55858)

sdiaz1983 29-04-2008 11:45:43

Clase Admita Espacios En Delphi
 
Código Delphi [-]
unit valletra;
interface
uses Classes, DBTables, QControls, SysUtils,Windows, Messages, Variants,Graphics, Controls, Forms, Dialogs, StdCtrls;
Type
Tvalletra= class(TWidgetControl)
private
letr: String;
bandera: Integer;
public
property letra: String read letr write letr;
property band: Integer read bandera write bandera;
procedure validarn(letra: String);
end;
implementation
procedure TValletra.validarn(letra:String);
var b: String;
var i: Integer;
var c: Integer;
begin
letr:=Letra;
bandera:=c;
c:=0;
for i:=1 to length(letra) do
begin
if not ((letra[i] in ['a'..'z'])or (letra[i] in ['A'..'Z'])) then
begin
c:=c+1;
end;
end;
bandera:=c;
if(c<>0) then
MessageDlg('INGRESO INCORRECTO',mtError,[mbOk],0);
end;
end.

Muy buenos dias compañeros del foro.

Resulta que la clase qu eesta arriba me valida si en el edit (evento onchange) lo que le ingreso son letras, de lo contrario me bota un error, pero el problema que tengo es que el error me lo bota tambien cuando oprimo la tecla retroceso y la tecla de espacio, lo que les queria pedir el favor es si ustedes me pueden ayudar diciendome como hago para que no me bote el error cuando oprimo esas dos teclas.

Mil gracias por su ayuda una vez mas.

Cordialmente,

SERGIO DIAZ

poliburro 29-04-2008 15:22:58

Que tal compañero, debes ampliar el rango de caracteres que deseas aceptar. Un Tip, en excel coloca los números del 1 al 254 y aplica en otra celda la función Caracter, eso te despleagrá el caracter de cada valor, y de esa manera podrás establecer que valores debe aceptar.

Suerte

sdiaz1983 29-04-2008 23:15:11

Respuesta
 
Compañero, no me interesa que me acepte mas caracteres, en este caso solo me interesa que cuando yo oprima el espacio no me haga esta validacion:
Código Delphi [-]
for i:=1 to length(letra) do
begin
if not ((letra[i] in ['a'..'z'])or (letra[i] in ['A'..'Z'])) then
begin
c:=c+1;
end;
end;
bandera:=c;
if(c<>0) then
MessageDlg('INGRESO INCORRECTO',mtError,[mbOk],0);
end;

Que no me dispare ese error, sino que me deje oprimir la barra espaciadora y la tecla retroceso no mas.

mil gracia suna vez mas

jandok238 29-04-2008 23:36:07

Hola...

creo que a lo que poliburro se refiere es que agregues el margen de los caracteres a aceptar... y como caracteres se incluyen Espacios, Tecla Enter, Tecla Backspace...

en otras palabras....

Código Delphi [-]
  
if not ((letra[i] in ['a'..'z'])
        or (letra[i] in ['A'..'Z'])
        or (letra[i] = #32)) then  //el #32 es el ESPACIO
begin
...
end;

otra forma seria ....

Código Delphi [-]
  
if not (letra[i] in ['a'..'z', 'A'..'Z', #32]) then  //el #32 es el ESPACIO
begin
...
end;


espero esto te sirva .....

y creo que a esto se referia el compañero poliburro

salu2!!!!!!!

sdiaz1983 29-04-2008 23:44:03

Saludos
 
Compañero buen dia.

De antemano disculpeme si no habia entendido bien la informacion que decia el compañero que primero respondio, ya salio lo que le comente, ya no em dispara ese error, pero a manera de aprendizaje me gustaria saber como e slo de la hoja de excel, y como la llamaria desde delphi, que fue lo que explico poliburro.

Mil gracia sy dios los bendiga por su ayuda, mil gracias


Sergio D

jandok238 29-04-2008 23:59:36

Cita:

Empezado por sdiaz1983 (Mensaje 283378)
Compañero buen dia. ... pero a manera de aprendizaje me gustaria saber como e slo de la hoja de excel, y como la llamaria desde delphi, que fue lo que explico poliburro.

Mil gracia sy dios los bendiga por su ayuda, mil gracias


Sergio D


No es que se tenga que llamar la hoja de excel hacia delphi...

lo que comentaba poliburro es que abrieras EXCEL ... y que escribieras en una columna (la que sea, puede ser la columna A) del 1 al 254 .... (obviamente hacia abajo, cada numero en una fila) ... y en otra columna (puede se la B o C o la que sea) pon esto =Caracter(A1) y asi te saldra la representacion de cada caracter... algo asi como ASCII code ....

asi puedes determinar que valor representa a cada caracter...

intentalo... y avisas que paso....

salu2!!!!!

sdiaz1983 30-04-2008 00:02:26

Intento
 
Buen dia de nuevo.

mañana intento eso y le digo que paso.

mil gracias


La franja horaria es GMT +2. Ahora son las 11:28:08.

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