IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

tester la valeur de plusieur edits


Sujet :

Delphi

  1. #1
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut tester la valeur de plusieur edits
    bonjour,
    est il possible de tester si la valeur de plusieur edits est vide ou non conforme au besoin de l'application sans avoir a tester chaque edit seule pour savoir si il est vide.

    exemple
    j'ai 3 edits , aucun ne doit etre vide,

    dois je absolument faire if edit1.text='' then showmessage ('champd vide')

    if edit2.text=('') then etc..

    je veux juste savoir si il pas une methode plus rapide et moins longue merci.


    a+
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Points : 754
    Points
    754
    Par défaut
    Le but est en quelque sorte de valider un formulaire.
    Donc crées une fonction qui prend un TEdit en parametre et qui contient le code de validation (Result := aEdit.Text <> ''; ).
    Ensuite tu listes chaque composant de la fiche et tu appelles cette fonction pour chaque Tedit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i := 0 to ComponentCount -1
      if Components[i] is TEdit
        with Component[I] as TEdit do
          LaFonction(TEdit(Component[I]));

  3. #3
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    merci de la reponse

    mais ca fait tres longtemp que j'ai pas fais de delphi et encore plus des fonction.

    je vais faire des teste pour me remettre a niveau

    merci
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  4. #4
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    bon comme je suis pas bon ca marche pas
    j'ai reussi qu a cree une fonction addition.

    le reste ca plante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
        function vide (s:tedit):string;
         begin
     
       s.Text:=''   ;
         Result := s    ;
    de plus j'ai un indice hors limite

    je comprend ce que tu as voulu me dire mais j'arrive pas a le traduire.

    c'est prende chaque edit, le teste avec la fonction vide
    si edit=vide je sors de la prcedure valide.
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 147
    Points : 164
    Points
    164
    Par défaut j'ai testé et la solution de Fabrice est correct
    J'aurai fait comme fabrice (a part des fautes de frappes lol)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    function TForm1.IsValid(Edit :TEdit) :boolean;
    begin
      if Trim(Edit.Text)='' then
        result := false
      else
        result := true;
    end;
    procedure TForm1.Btn_ValidClick(Sender: TObject);
    var
      i: integer;
    begin
      for i := 0 to ComponentCount -1 do
        if Components[i] is TEdit then
            if not IsValid(TEdit(Components[i])) then
            begin
              ShowMessage('Champs '+ TEdit(Components[i]).Name +'Vide');
              TEdit(Components[i]).SetFocus; 
              exit; // je force la sortie pour evite d'avoir plusieurs messages
            end;
    end;

  6. #6
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    peut on passer outre la fonction en testant chaque edit ds la boucle?
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  7. #7
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    merci
    EPJSoft

    ca marche feu de dieu , je regarde pour mieux comprendre le code

    merci
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  8. #8
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    ben j'ai un peu de mal a tout saisir, mais ca va quand meme

    Il faut que je me remette dedans mais c 'est dur car je ne fais que de l'admin reseaux maintenant

    merci encore
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 147
    Points : 164
    Points
    164
    Par défaut Pas de fonction
    sans la 'function'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for i := 0 to ComponentCount -1 do // on liste tous les composants de la fiche
        if Components[i] is TEdit then     // si c'est un composant TEdit
           // le récupère le text du composant sans les espaces (d'ou le trim)
            if Trim(TEdit(Components[i]).text)='' then 
            begin
              // la j'affiche le nom interne du composant 
              ShowMessage('Champs '+ TEdit(Components[i]).Name +'Vide');
              // on force le focus sur le champs vide
              TEdit(Components[i]).SetFocus; 
              // on sort de la boucle 
              exit; 
            end;

  10. #10
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    j'ai crie victoire trop vite, comme je me suis apercu que ca listait tout les composants, ca marche pas top avec mon applis qui utilise pagecontrole avec ttabsheet.

    Chaque tabsheet contient des edits, et la fonction les liste tous, mais certain sont vide car ne sont pas utilises.
    ex

    tabsheet1 sert a valide un nouveau eleves
    tabsheet 2 un nouveaux tarif
    tabshhet3 sert a faire des recherche

    etc..

    donc certain sont vide et inactif.

    je vais devoir tester si la page est active avant de tester les objet ou revoir ma copie.

    pas grave ,c'est un faisant des erreur qu on apprend non!!!!

    merci
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  11. #11
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Citation Envoyé par neuneu1
    est il possible de tester si la valeur de plusieur edits est vide ou non conforme au besoin de l'application sans avoir a tester chaque edit seule pour savoir si il est vide.
    Les solutions données jusqu'ici sont bonnes. Mais je conseille vivement à tous d'essayer, dans la JVCL, TJvValidators et ses deux acolytes.

    Ca c'est vraiment génial pour cette utilisation.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  12. #12
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    j'ai telecharger , peux tu donne un peu d explication pour le beothien que je suis

    j'ai teste l exemple je pense avoir saisie mais lorsque je veux essaye sur une a pplis j'ai des erreur avec ca reResults



    merci

    le cas de figure si dessus est tjrs d actualitee

    merci
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  13. #13
    Membre confirmé

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Points : 508
    Points
    508
    Par défaut
    Pour limiter le test aux composants contenus dans l'onglet actif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      with PageControl1.ActivePage do
        for i := 0 to controlCount - 1 do // on liste tous les composants de l'onglet 1
          if Controls[i] is TEdit then     // si c'est un composant TEdit
            // le récupère le text du composant sans les espaces (d'ou le trim)
            if Trim(TEdit(Controls[i]).Text) = '' then
            begin
              // la j'affiche le nom interne du composant
              ShowMessage('Champs ' + TEdit(Controls[i]).Name + 'Vide');
              // on force le focus sur le champs vide
              TEdit(Controls[i]).SetFocus;
              // on sort de la boucle
              exit;
            end;
    Au lieu de ComponentCount et Components[], on utilise ControlCount et Controls[] ainsi que with PageControl1.ActivePage do pour éviter d'avoir à préfixer toutes les références à ControlCount et Controls[]

  14. #14
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Eh bien sur la fiche formulaire où tu dois valider la présence de certains edits, tu poses un TJvValidators et un TJvErrorIndicator. Tu positionnes la propriété ErrorIndicator de JvValidators1 à JvErrorIndicator1.

    Puis tu double-cliques sur le TJvValidators, pour afficher la gestion des validateurs. Tu en crées un nouveau de type Required Field Validator, et tu sélectionnes les propriétés comme suit :
    ControlToValidate = ErrorControl = l'edit à contrôler
    ErrorMessage = Vous devez remplir ce champ (ou ce que tu veux comme message d'erreur)
    PropertyToValidate = Text (la propriété du contrôle qui doit être non vide).

    Et tu crées un validateur dans cette liste pour chaque contrôle.

    T'as plus qu'à, dans ButtonOKClick ou je ne sais comment tu l'appel, faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not JvValidators1.Validate then exit;
    Après je te laisse admirer le résultat
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  15. #15
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    merci pour les precision sur page control et controls, j'avais bien essaye ca mais avec copoments.

    pour jvlc j'ai pas encorer reussi.

    j'ai reussi pas fait gaffe a tout.

    mais pour plusieur controle on met plusieur requieredfield , ca charge un peu non, sinon j'aime bien
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  16. #16
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    je reviens encore c 'est vraiment tres cool.

    merci
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  17. #17
    Membre régulier Avatar de fabred
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 180
    Points : 119
    Points
    119
    Par défaut
    dr
    Merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 21
    Dernier message: 20/05/2011, 01h53
  2. [XL-2003] Tester si une valeur réapparait plusieurs fois dans une cellule
    Par apnw7931 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/04/2011, 15h10
  3. [XSLT] Tester la valeur de plusieurs attributs
    Par NicaeaCivitas dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 23/10/2006, 17h25
  4. Tester la presence de plusieurs fichiers
    Par Little_Goldo dans le forum Linux
    Réponses: 4
    Dernier message: 17/03/2004, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo