[Delphi 4] Contrôle de validité d'un champ

Contrôle de validité d'un champ [Delphi 4] - Programmation

Marsh Posté le 29-10-2001 à 17:12:50    

Qui pourrait me dire comment contrôler la validité d'un champ alphanumérique avec un If
 
par exemple pour le téléphone, il faut accepter les nombres + "[ESPACE]" + "." + "/" + "+"
pour l'Email, il faut accepter tous les caractère alphanumérique sauf ":" + ";" + "'" + "?" + "?" + ??? (je sais plus quel caractère ne passe pas). Il faut aussi quel le champ contienne une seul "@" et au moins un "." après le "@"
 
Scusez-moi... mais je suis un vrai nioubie :D

Reply

Marsh Posté le 29-10-2001 à 17:12:50   

Reply

Marsh Posté le 29-10-2001 à 21:27:46    

tu testes dans le onkeyup, onkeydown, onkeypress ou onkeychange, au choix.
tu peux aussi utiliser le TMaskEdit (je l'ai jamais utilisé) pour imposer un formatage du champ je crois.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-10-2001 à 00:05:04    

pour les ifs, je te conseille les ensemble (donc du genre if caractere in ['1', '2', .... , ' ', '+' ... ] then ....

Reply

Marsh Posté le 30-10-2001 à 12:13:45    

C'est des champs dbedit.
ça marche.. mais que partiellement.
 
j'ai utiliser l'évènement on keyPress
//si le caractère est autorisé
if (Key in ['1','2','3','4','5','6','7','8','9','0','+','/',' ','.','(',';)']) or (Key=char(8)) or (Key=char(13)) then
//c'est ok
  else
  //y a un message d'avertissement
     Application.MessageBox('Caractère non autorisé !','Erreur de saisie',MB_OK+MB_ICONWARNING);
  ;
 
Le problème, c'est que le caractère passe quand même et que je n'ai pas trouvé de truc pour l'effacer.
Le mieux ça serai de contrôler tout le champ avec l'évènement OnExit... mais comment faire ce contrôle ?
If dbefNoTelPrive.Text=??? then
//afficher message d'erreur + obliger l'utilisateur à corriger

 

[edtdd]--Message édité par chev_alier--[/edtdd]

Reply

Marsh Posté le 30-10-2001 à 13:56:50    

un message à chaque caractère c'est très casse-pieds...
 
exemple d'un truc qui marche (je viens de tester) :

Code :
  1. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  2. begin
  3.   if not (key in ['0'..'9', char(VK_BACK), char(VK_TAB), char(VK_RIGHT), char(VK_LEFT)]) then
  4.   begin
  5.     key := #0;
  6.   end;
  7. end;


 
le key := #0 fait qu'il ne s'affiche rien dans l'edit si on appuie sur une mauvaise touche (contenu reste inchangé)
et pour ton '1','2','3', etc... y a '0'..'9' qui est nettement plus court comme syntaxe ;)

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-10-2001 à 15:26:54    

chev_alier a écrit a écrit :

Qui pourrait me dire comment contrôler la validité d'un champ alphanumérique avec un If
 
par exemple pour le téléphone, il faut accepter les nombres + "[ESPACE]" + "." + "/" + "+"
pour l'Email, il faut accepter tous les caractère alphanumérique sauf ":" + ";" + "'" + "?" + "?" + ??? (je sais plus quel caractère ne passe pas). Il faut aussi quel le champ contienne une seul "@" et au moins un "." après le "@"
 
Scusez-moi... mais je suis un vrai nioubie :D  




 
Utilise les MaskEdit :) c'est beaucoup plus simple. De plus les Edit dispose d'un attribut pour mettre en MAJ/Min les lettres direct (normalCase, Upcase... à chercher dans l'inspecteur d'objet pour les Edit seulement)

Reply

Marsh Posté le 30-10-2001 à 19:45:11    

une idée qu'il faudrait approfondir (ca veut dire que je n'ai pas cherché mais ca doit surement exister): utiliser les RegExp (il y doit y avoir des unit qui font ca Torry's ou sur la DSP) et apres tu valides tes champs sur le OnExit.
 
pour les simples verif. , ca n'est surement pas necessaire mais tu pourras ensuite facilement faire des verif. complex ( pour l'email, et pour ce dont tu auras besoin par la suite!)


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed