cs_eli42
Messages postés143Date d'inscriptionmardi 24 décembre 2002StatutMembreDernière intervention11 juillet 2023
-
13 juin 2009 à 10:15
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 2016
-
14 juin 2009 à 19:51
Bonjour,
Voila j'ai une appli avec 95 Edit, vu que dans les propriété pas possible de fixer une longueur maxi, j'ai fait une procedure avec un case, tous les TEdit ont le Tag Correspondant à leur Taille Shouhaité, j'ai bidouiller pour ne pas taper WattMille lignes.
Il y aurait pas un truc plus pro???
Ces EDit sont déstiné à alimenter une Base de Donnée Interbase, Vous me direz pourquoi ne pas utiliser un TDEdit qui lui associé à un Champ de la base bloquera, mais alors ou serait l'intéret de la recherche?
* Nota pour que ce soit un minimun lisible j'ai renommer les Compo
je l'appelle ainsi :
Dans le KeyPress
VERIF_EDIT_LONGUEUR(Tedit(Sender).Tag, Tedit(Sender).Name);
Procedure TForm1.VERIF_EDIT_LONGUEUR(LONGUEUR: Integer; NOM: String);
Var nonEDIT: Tedit;
Msg: String;
Begin
With Form1 Do
Begin
// le Tag du EDIT doit Correspondre à la longueur Maxi
// Recupération du nom de l'Edit via variable NOM pour comparaison et Formatage
nonEDIT := Tedit(Findcomponent(NOM));
// Message pour le Showmessage
Msg := 'Saisie Trop Longue';
//------------------------------------------------------------------------------
Case LONGUEUR Of
//------------------------------------------------------------------------------
// Vérification si dépassement Edit > Case = Trop Long
2: If Length(nonEDIT.txt) > 2 Then
Begin
//Avertissement si dépasse le Tag
ShowMessage(Msg);
// Reformate Edit à la Bonne Taille
nonEDIT.text := Copy(nonEDIT, 0, 2);
//Curseur Fin de chaine
nonEDIT.Selstart := 2;
End;
//------------------------------------------------------------------------------
5: If Length(nonEDIT.txt) > 5 Then
Begin
ShowMessage(Msg); nonEDIT.text := Copy(nonEDIT, 0, 5); nonEDIT.Selstart := 5;
End;
//------------------------------------------------------------------------------
8: If Length(nonEDIT.txt) > 8 Then
Begin
ShowMessage(Msg); nonEDIT.text := Copy(nonEDIT, 0, 8); nonEDIT.Selstart := 8;
End;
//------------------------------------------------------------------------------
10: If Length(nonEDIT.txt) > 10 Then
Begin
ShowMessage(Msg); nonEDIT.text := Copy(nonEDIT, 0, 10); nonEDIT.Selstart := 10;
End;
//------------------------------------------------------------------------------
11: If Length(nonEDIT.txt) > 11 Then
Begin
ShowMessage(Msg); nonEDIT.text := Copy(nonEDIT, 0, 11); nonEDIT.Selstart := 11;
End;
//------------------------------------------------------------------------------
15: If Length(nonEDIT.txt) > 15 Then
Begin
ShowMessage(Msg); nonEDIT.text := Copy(nonEDIT, 0, 15); nonEDIT.Selstart := 15;
End;
//------------------------------------------------------------------------------
30: If Length(nonEDIT.txt) > 30 Then
Begin
ShowMessage(Msg); nonEDIT.text := Copy(nonEDIT, 0, 30); nonEDIT.Selstart := 30;
End;
//------------------------------------------------------------------------------
40: If Length(nonEDIT.txt) > 40 Then
Begin
ShowMessage(Msg); nonEDIT.text := Copy(nonEDIT, 0, 40); nonEDIT.Selstart := 40;
End;
//------------------------------------------------------------------------------
50: If Length(nonEDIT.txt) > 50 Then
Begin
ShowMessage(Msg); nonEDIT.text := Copy(nonEDIT, 0, 50); nonEDIT.Selstart := 50;
End;
//------------------------------------------------------------------------------
End; // Fin CASE
//------------------------------------------------------------------------------
End; // Fin With
//------------------------------------------------------------------------------
End;
//-----------------------------------------------
Bonne Prog à Tous Or Bonne Prog à Toutes
//-----------------------------------------------
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 13 juin 2009 à 10:56
Salut,
1°) il existe la propriété MaxLength pour les TEdit
Sinon pour répondre à ta question d'optimisation ... plutôt que de mettre ce contrôle (teste) dans l'évènement "OnKeyPress", qui sera exécuté à chaque touche appuyé, on peut le placer dans "OnExit" qui se déclenche lorsque que le composant perd le focus :
Procedure TForm1.VERIF_EDIT_LONGUEUR(Const aEdit: TEdit);
Var
Msg: String;
Begin
// Message pour le
Showmessage
Msg := 'Saisie Trop Longue pour
le contrôle %s'#13#13#10+
'Un maximum de
%d caractères sont autorisés';
//
Vérification si dépassement Edit > Case = Trop Long
If Length(aEdit.text) > aEdit.Tag Then
Begin
//Avertissement si dépasse le Tag
ShowMessageFmt(Msg, [aEdit.Name, aEdit.Tag]);
// Reformate Edit à la Bonne Taille aEdit.text : = Copy(aEdit.Text, 1,
aEdit.Tag);
//Curseur Fin de
chaine
aEdit.SetFocus;
aEdit.Selstart := aEdit.Tag;
End ;
End;
et c'est tout
mais comme dit plus haut la propriété MaxLength existe donc ...
L_art_ment
Messages postés302Date d'inscriptionvendredi 21 septembre 2007StatutMembreDernière intervention 6 février 2013 13 juin 2009 à 11:05
J'savais que j'allais me pas tarder à me faire devancer dans ma réponse et pour une fois que j'ai la réponse à une question sur le forum je me suis dépéché... :D
cs_eli42
Messages postés143Date d'inscriptionmardi 24 décembre 2002StatutMembreDernière intervention11 juillet 20231 13 juin 2009 à 11:56
Bonjour,
Je crois que je vais me mettre à la console, pas foutu de voir la propriete "MaxLength" est ce grave Doc.
Ca fera toujours une procedure en moins, merci a tous les deux de m'avoir ouvert les yeux.