Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Validación en Delphi. (https://www.clubdelphi.com/foros/showthread.php?t=1823)

Ana Iris Guille 29-06-2003 16:41:38

Validación en Delphi.
 
Actualmente, estoy comenzando ha programar con delphi, pero tengo ciertas dudas, quisiera que me ayuden y me indiquen como validar la entrada de datos en delphi, por ejemplo: si deseo introducir la Cédula: V-12.837.967, que no admita otra letra diferente a la V,v,E,e; ni otro distinto de (-), y solo numeros despues. En los tipos texto que admita solo letras. Ayuda Por Favor.....:confused:

Adios. ;)

andres1569 29-06-2003 22:44:37

Hola:

Puedes utilizar un componente TMaskEdit, que permite acotar el tipo de caracter que corresponde a cada posición de la cadena introducida. En tu caso tendrías que poner esto en la propiedad EditMask:

EditMask = L\-00\.000\.000;1;_

La L indica que espera un caracter alfabético, la barra \ indica que el siguiente caracter es literal (el guión y los puntos de millar), y luego sólo se permiten cifras mediante ceros, (en la ayuda de Delphi explica cómo funcionan las máscaras). Lo que no puedes es indicarle qué valores alfabéticos deseas en concreto, en tu caso la V y la E, así que deberás interceptar el evento OnKeyPress del MaskEdit y anular cualquier caracter que no te sirva:

Código:

procedure TForm1.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin
  if NOT (Key in ['0' .. '9']) AND (UpCase(Key) <> 'V') AND
    (UpCase(Key) <> 'E') then Key := #0;
end;

En la propiedad EditMask, el 1 que hay hacia el final indica que quieres que se almacene el valor tal como lo ves en pantalla (guiones y puntos incluídos); si sólo quisieras que los caracteres introducidos por el usuario, en tonces habría que poner un 0.

madriles 30-06-2003 09:30:45

hola Ana, como estas empezando, es posible que no conozcas Trucomania, te recomiendo que visites esta pagina WWW.q3.nu
Te digo esto porque muchas soluciones y trucos las encontraras aqui antes de volverte loca.
concretamente la validacion de una cedula como tu quieres. no se trata solo de introducir de forma mas o menos bonita los datos, de hecho solo deberias introducir los numeros y que la letra te la facilitase directamente delphi. esto es un algoritmo que en cada pais seguramente es diferente y su programacion , aunque no es excesivamente complicada si puede ser un poco liosa.
ten en cuenta que la letra se puso como una forma de control para saber que los numeros estaban bien introducidos, sino no tendria sentido.
bueno despues de tanto rollo lo dicho , visita esa pagina y veras tres ejemplos de validacion (chile, argentina y españa ) entre otros muchos
espero que te sirva

roman 30-06-2003 17:25:02

Una forma de hacerlo es utilizando la función MatchesMask de la unidad Masks:

Código:

const
  Mask = '[Vv]-[0-9][0-9].[0-9][0-9][0-9].[0-9][0-9][0-9]';

begin
  if not MatchesMask(Edit1.Text, Mask) then
    Application.MessageBox('Formato incorrecto', 'Error', MB_OK or MB_ICONSTOP);
end;

Este código podrías ponerlo en el evento OnExit del Edit1. Busca en la ayuda de Delphi acerca de esta función para entender cómo funciona. Básicamente MatchesMask comprueba que cada caracter de la cadena (Edit1.Text en este caso) coincida con el caracter correspondiente de la máscara o con uno de los caracteres en el conjunto encerrado por corchetes []. En tu caso la máscara compara el primer caracter y verifica que sea 'v' o 'V', el segundo debe ser un guión, el tercero y cuarto un número, el quinto un punto, etc.

// Saludos


La franja horaria es GMT +2. Ahora son las 20:55:12.

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