Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Novata necesita Ayuda (https://www.clubdelphi.com/foros/showthread.php?t=44274)

day_eli 01-06-2007 23:30:59

Novata necesita Ayuda
 
Buen día compañeros del club....me aqueja una pequeña inquietud, la cual es la siguiente:

¿como hacer para validar que lo primero que un usuario pueda digitar en un TEdit sea la letra 'V' o la letra 'E', seguido de numeros?

Gracias de antemano ;)

BuenaOnda 01-06-2007 23:45:10

Código Delphi [-]
 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
      IF Trim(Edit1.Text)=''THEN
      BEGIN
           IF(Key=#69)OR(Key=#86)THEN //E=69 - V=86 .. Utiliza la propiedad "CharCase" en ecUpperCase
              Exit
           ELSE
              Key:=#0;
      END
      ELSE
      BEGIN
           IF Key = #8 THEN Exit; // Tecla 
           IF (Key<#48)OR(Key > #58) THEN
               Key:=#0;
      END;
end;


ESPERO QUE TE SIRVA..:D

AzidRain 02-06-2007 00:38:19

Usa mejor un contol TMaskEdit...la propiedad EditMask te permite ajustarla a tu gusto de acuerdo con lo que necesites validar. La ayuda viene muy completa y trae ejemplos además de que al momento de colocar la mascarilla puedes probarla para ver si es como la quieres.

roman 02-06-2007 00:55:32

Pero en este caso, una disyuntiva

Cita:

lo primero que un usuario pueda digitar en un TEdit sea la letra 'V' o la letra 'E',
¿puede usarse un MaskEdit?

// Saludos

BuenaOnda 02-06-2007 01:17:37

Claro me llama la atención, me podrías explicar compañero AzidRain como lo haces....:confused:.

gatosoft 02-06-2007 03:48:59

off-topic
 
Este es un paréntesis dentro de este hilo....

Solo quiero llamar la atención sobre algo muy peculiar aqui, sin ánimo de crear polemica... :D

Lo que quiero decir es que en "otras circunstancias", los moderadores habrian entrado a este hilo y le habrian "tirado las orejas" a quien inicio el hilo por no poner un titulo mas descriptivo sobre el problema, y lo hubieran remitido a la guia de estilo (sin responder la pregunta)....

Por el contrario ante un titulo tan sugestivo, todos hemos caido prestos en ayuda de la dama... :D (yo cai, pero vi que ya no necesitaba ayuda, jejejeje) :D

Bueno, pero eso esta bien... hay que ser caballero y a las damas se les perdona todo, sobre todo en nuestro club, en donde casi no hay...


Saludos.... ;) y esperamos verte mas por aqui day_eli, aqui todas son siempre bienvenidas...

Al González 02-06-2007 06:47:12

Este...
 
¡Hola a todos!

Para ser sincero, entré a leer este hilo por mera curiosidad de ver cómo se le respondía a nuestra amiga, sospechando lo que luego descubrí.

Cita:

Empezado por gatosoft
...en "otras circunstancias", los moderadores habrian entrado a este hilo y le habrian "tirado las orejas" a quien inicio el hilo por no poner un titulo mas descriptivo sobre el problema, y lo hubieran remitido a la guia de estilo (sin responder la pregunta)...

Lo mismo medité.

Pero esto:
Cita:

Empezado por gatosoft
...hemos caido prestos en ayuda de la dama... :D (yo cai, pero vi que ya no necesitaba ayuda, jejejeje) :D

Bueno, pero eso esta bien... hay que ser caballero y a las damas se les perdona todo, sobre todo en nuestro club, en donde casi no hay...todas son siempre bienvenidas...

Me dejó sin palabras. Sé que tu último comentario es bien intencionado Gatosoft, pero en lo personal me parece algo sexista. Mas sólo es una observación.

Me alegro que hayas recibido ayuda Day_eli, no dejes de plantearnos tus dudas sobre Delphi. Aquí son todos bienvenidos, sin preferencia de género. Pero te sugiero utilizar títulos más descriptivos para los mensajes, así será más fácil que alguien con experiencia en el tema se interese en responder.

Un abrazo de camaradas.

Al González. :)

Wellnic 02-06-2007 14:50:12

Quería llamar la atención sobre un pequeño detalle, y es que usando directamente el evento Edit1KeyPress, el código se ejecuta antes de actualizarse el TEdit (al menos en mi querido Delphi 3. ¿No sería mejor utilizar un Timer?:
Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
Timer1.Enabled:= True;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
      IF Trim(Edit1.Text)=''THEN
      BEGIN
           IF(Key=#69)OR(Key=#86)THEN //E=69 - V=86 .. Utiliza la propiedad "CharCase" en ecUpperCase
              Exit
           ELSE
              Key:=#0;
      END
      ELSE
      BEGIN
           IF Key = #8 THEN Exit; // Tecla 
           IF (Key<#48)OR(Key > #58) THEN
               Key:=#0;
      END;
end;

Timer1.Enabled:= False;
End;

Asimismo, en el Object inspector conviene ponerle al Timer las propiedades Enable a False e Interval a 1.

BuenaOnda 02-06-2007 21:04:37

:confused: .... sabes me resulta raro lo que dices...

AzidRain 03-06-2007 00:53:58

:o Tienes razón Román, me confundí con el equivalente de MaskEdit de DevExpress que viene mas completo...

Contestando a nuestra amiga:

Pon esto en el onKeyPress del Edit

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  // Si la tecla NO es una V o E y es el primer caracter...lo eliminamos
   If ((Key<>'E') and (key<>'V')) and (Length(Edit1.Text)=0) Then
     key:=chr(00);
   //Aqui pon la validacion para los numeros...me dio flojera poner todo el 
código...jeje

end;

Solo permite E como primer caracter y V como segundo, los demas pueden ser cualesquiera

Wellnic 03-06-2007 01:32:21

Cita:

Empezado por BuenaOnda
:confused: .... sabes me resulta raro lo que dices...

Si pones esto:
Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
Label1.Caption:= Edit1.Text;
end;
¿te aparece en el Label lo mismo que en el edit? A mí me sale con una pulsación de retraso. :rolleyes:

BuenaOnda 03-06-2007 01:38:53

okis pero para lo que tu expones yo utilizaria el evento Change del edit..

Wellnic 03-06-2007 02:03:26

¡Anda, pues es verdad! A veces me complico la vida sin motivo. No había caído en que Key trae la última tecla pulsada. Ahora todo concuerda.

BuenaOnda 03-06-2007 02:08:32

tambien puedes probar el evento KeyDown, aqui se puede controlar más teclas que en el evento KeyPress..

Lepe 03-06-2007 11:25:45

El evento keyUp, si no recuerdo mal, ya viene procesada la tecla, es el evento que utilizo siempre.

Saludos

Neftali [Germán.Estévez] 06-06-2007 12:03:33

Cita:

Empezado por gatosoft
Este es un paréntesis dentro de este hilo....
Lo que quiero decir es que en "otras circunstancias", los moderadores habrian entrado a este hilo y le habrian "tirado las orejas" a quien inicio el hilo por no poner un titulo mas descriptivo sobre el problema, y lo hubieran remitido a la guia de estilo (sin responder la pregunta)....

Paréntesis bien hecho por cierto....
Personalmente no reo que exista diferencia con otros hilos, simplemente que a veces se nos pasan algunos (como ha sido este el caso).

Relacionado con este yo quiero hacer otro paréntesis... :D
¿Porqué hay que ser moderador para sugerirle a un usuario que escriba un título descriptivo o revise la Guía de Estilo?
Estamos hablando de sugerir o aconsejar y eso podemos hacerlo todos...
Como muestra dos botones, 1 y 2.

day_eli 16-06-2007 23:08:57

Gracias...para la proxima tratare de colocar un titulo mas explicativo :), lo que pasó fue que en ese momento me sentía mas novata que de costumbre por no saber realizar algo que parece tan sencillo y eso hizo que se me ocurriera colocar un titulo así....
En realidad me han servido de gran ayuda muchachos, muy caballeros todos!!!.

David 16-06-2007 23:52:59

una duda me surge , como sabeis que #69 es la E , de donde obteneis el codigo para cada letra o tecla ?

Neftali [Germán.Estévez] 18-06-2007 10:56:09

Cita:

Empezado por David
una duda me surge , como sabeis que #69 es la E , de donde obteneis el codigo para cada letra o tecla ?

Hay infinidad de formas; Por ejemplo aquí, aquí,...

gabrielkc 29-06-2007 17:52:57

Saludos
 
en el evento OnKeyPress del edit1 pones el siguiente codigo

showmessage(inttostr(ord(key)));
Edit1.SetFocus ///se pone porque con el showmessage pierdes el foco


y luego seleccionado el edit presionas la tecla de la que kieras saber el ASCII


La franja horaria es GMT +2. Ahora son las 14:03:25.

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