begin process at 2010 02 10 12:41:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Vérication longueur Fixe sur un TEdit


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Vérication longueur Fixe sur un TEdit

samedi 13 juin 2009 à 10:15:17 | Vérication longueur Fixe sur un TEdit

eli42

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
//-----------------------------------------------
samedi 13 juin 2009 à 10:48:54 | Re : Vérication longueur Fixe sur un TEdit

L_art_ment

Réponse acceptée !
Bonjour,
"vu que dans les propriété pas possible de fixer une longueur maxi" -> à quoi sert la propriété MaxLength alors ?


L'Armand joue, l'arme en joug... www.art-ment.com
samedi 13 juin 2009 à 10:56:28 | Re : Vérication longueur Fixe sur un TEdit

cirec

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
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 :


  Private
    
{ Déclarations privées }
    Procedure VERIF_EDIT_LONGUEUR(Const aEdit: TEdit);
  Public
    
{ Déclarations publiques }
  End;

Var
  
Form1: TForm1;

Implementation

{$R *.dfm}

Procedure TForm1.Edit1Exit(Sender: TObject);
Begin
  If
(Sender Is TEdit) Then
   
VERIF_EDIT_LONGUEUR(Sender As TEdit);
End;

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 ...

 
@+
Cirec

samedi 13 juin 2009 à 10:57:13 | Re : Vérication longueur Fixe sur un TEdit

cirec

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
arf j'ai été trop lent sur ce coup là

 
@+
Cirec

samedi 13 juin 2009 à 11:05:01 | Re : Vérication longueur Fixe sur un TEdit

L_art_ment

Réponse acceptée !
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


L'Armand joue, l'arme en joug... www.art-ment.com
samedi 13 juin 2009 à 11:56:58 | Re : Vérication longueur Fixe sur un TEdit

eli42

Réponse acceptée !

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.

Bonne Prog

samedi 13 juin 2009 à 16:47:24 | Re : Vérication longueur Fixe sur un TEdit

f0xi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !

si tu ne la vois vraiment pas :

procedure SetMaxLength(Edit: TEdit; const MaxLength: integer);
begin
  SendMessage(Edit.Handle, EM_LIMITTEXT, MaxLength, 0);
end;


SetMaxLength(Edit1, 5);
SetMaxLength(Edit2, 8);
SetMaxLength(Edit3, 3);

dimanche 14 juin 2009 à 19:51:03 | Re : Vérication longueur Fixe sur un TEdit

Bacterius

Membre Club
Personne a une version assembleur ? lol

Cordialement, Bacterius !


Cette discussion est classée dans : end, msg, begin, showmessage, nonedit


Répondre à ce message

Sujets en rapport avec ce message

pb avec direct x, y'a pas d'erreur mais ça marche pas ! :-( [ par dweis ] j'essaie de faire un truc assez simple mais j'ai du mal : je veux juste créer une fenetre et initialiser directx.je me suis inspiré de ce code http:// Problème Econversion Error lors de l'affichage d'une info bulle dans une fenetre MDIChild dans une DLL [ par DarkSky ] Salut a tous,j'ai créer un projet MDI avec Delphi 6 donc les fenetre MDi Filles sont dans une DLL.j'ai une erreur EConversionError a la place de l'aff Code 1 à tester [ par apz ] salut a tous,je voulais faire un filtrage sur une table en utlisant les numeros d'enregistrements pour marquer les record et ensuite applique une requ Champs Chamboulés [ par apz ] Salut,1- En voulant avoir une table *.DB à partir d'une table *.DBF, en utilisant le Module Base de Données (Outils/Utilitaires/Copier), j'avais dans Erreur incomprehensible [ par intello2001 ] j'ai lerreur suivante :Unsatisfied forward or external declaration: Tform1....je pesne que c une kestion de end et begin dans mon code : else if TServerSocket en Multithread [ par Cyrille2 ] Salut... je bloque à mort sur un bug... en faite, impossible de lire le socketstream voila la procédure : Code: procedure TServerThread.ClientExecute; probleme dans mon programme [ par tarik ] monsieur kerad je crois que j'ai un bug dans mon programme ci-dessousprocedure TForm1.Button1Click(Sender: TObject);begintable1.open;try Table1.First Datamodule et accès à partir d'une form [ par manudel ] Voilà, je voudrais avoir accès aux événements des objets figurant sur mon datamodule, mais je n'y arrive pas. J'ai l'erreur suivante : "le type de l'e Index d'un table Dbase [ par webazard ] Bonjour, je crée un base Dbase indiqué dans l'aide de delphi en remplacant ttparadox par ttdbase.en supprimant la construction d'index min prog marche Hints dans une DLL [ par almi ] J'ai une fenêtre (TForm) qui fonctionne parfaitement dans mon executable.Si je la place dans une DLL, j'obtiens le message :Ne peut assigner TFont à T


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales