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

Composants VCL Delphi Discussion :

[TEdit]Empêcher l'écriture lorsqu'une chaîne est déjà saisie


Sujet :

Composants VCL Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Points : 13
    Points
    13
    Par défaut [TEdit]Empêcher l'écriture lorsqu'une chaîne est déjà saisie
    comment empecher l'ecritue dans un edit lorsque celui ci contient deja une chaine de caracter.
    merci

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Sur l'événement Onchange de l'edit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
    edit1.readonly:=edit1.text<>'' ;
    end;

  3. #3
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par Graffito
    Bonjour,

    Sur l'événement Onchange de l'edit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
    edit1.readonly:=edit1.text<>'' ;
    end;
    si je comprend bien ce code, dès la frappe du premier caractère, la zone d'édition passe en mode lecture seule, ce qui empêche d'ajouter quoi que ce soit!
    mais est ce bien ce que demande baddom ?
    Citation Envoyé par baddom
    comment empecher l'ecritue dans un edit lorsque celui ci contient deja une chaine de caracter.
    merci
    car alors on ne pourra jamais saisir plus d'un caractère dans la zone d'édition, or à ce que je sache une chaine de caractères en comporte plusieurs.

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Je n'ai fait que répondre formellement à la question.
    Sinon, Evarisnea a raison.

  5. #5
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Bonjour,

    Le titre de votre message doit être le plus explicite possible.

    Je l'ai changé de

    edit

    à

    [TEdit]Empêcher l'écriture lorsqu'une chaîne est déjà saisie

    Merci de lire ce sujet
    http://www.developpez.net/forums/viewtopic.php?t=172285

    Pour revenir à la question, je trouve la question un peu ... ambigüe ! Le contenu du TEdit proviendra d'où ? On ne peut écrire qu'une seule fois ? Parce qu'effectivement une fois que tu auras saisie quelque chose, ce sera impossible de saisir autre chose par la suite.

    Faudrait décrire un peu plus le problème, je pense.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Points : 13
    Points
    13
    Par défaut edit
    en fait j'ai un edit ou je saisie une info et x edis ou je l'ecris.
    le but du jeu est que l'ecriture se fasse seulement dans un edit libre et m'avertisse que l'ecriture n'est plus possible si tous les edit sont remplis.

    désolé si je ne suis pas assez clair mais je ne suis pas un crack.Merci en tout cas a ceux qui se donne la peine de me répondre.

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Utilises le onexit de l'édit, tu vérifies si tout correspond et tu mets en readonly, tu comptes le nombre de readonly et voilà!

  8. #8
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    A la creation, définir un tableau d'edit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var Tabedit : array of tedit ;
    ...
    setLength(TabEdit,x) ;
    TaBEdit[0]:=Edit1 ;TaBEdit[1]:=Edit2 ; ...
    for i:=0 to x-1 do TabEdit[i].readonly:=true ;
    Puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    firstok:=-1 ;
    for i:=0 to x-1 do if TabEdit[i].text='' then firstok:=i ;
    if firstok=-1 
       then showmessage('Plus de place') 
       else TabEdit[i].text:=myReadWriteEdit.text ;

  9. #9
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Attention graffito si tu places les edit en readonly direct, on ne pourra jamais rien écrire dedans!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for i:=0 to x-1 do TabEdit[i].readonly:=true ;
    mais plutot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for i:=0 to x-1 do TabEdit[i].readonly:=false ;

  10. #10
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Le seul edit dans lequel on écrit "myReadWriteEdit" ne fait pas partie du tableau.

  11. #11
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Sorry! J'ai relu mieux ce qu'il veut faire, un edit où il entre la donnée et qui les places dans des edits, alors OK!

    Tiens une idée, l'utilisateur d'un tel programme risque de foncer dans n'importe quel edit pour y entrer des données et ne pas comprendre qu'il ne peut pas entrer de données, pourquoi ne pas créer un edit en readonly à chaque entrée (ou un label) voire utiliser une liste.

  12. #12
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Je placerais tous mes Edits dans un panel MonPanel.

    Sur le Enter de tous les edit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         with TEdit( Sender )
           do ReadOnly := Trim( Text ) <> '';
    comme l'a fait graffito, mais sur le Enter pour changer tranquillement le Edit

    Sur le Exit des tous mes edit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
         BPrevenir := True;
         for i := 0 to MonPanel.ControlCount - 1 do
           if MonPanel.Controls[ i ] is TEdit then
             if not TEdit( MonPanel.Controls[ i ] ).ReadOnly then
               begin
               BPrevenir := False;
               Break;
               end;

Discussions similaires

  1. vérifier si une chaîne est un nombre
    Par cmoibal dans le forum C
    Réponses: 12
    Dernier message: 09/02/2008, 09h01
  2. [DBF] Tester si une chaîne est vide
    Par ®om dans le forum JDBC
    Réponses: 7
    Dernier message: 26/07/2007, 16h30
  3. Que faire lorsqu'une surface est détruite ?
    Par gege2061 dans le forum SDL
    Réponses: 11
    Dernier message: 18/07/2007, 14h27
  4. Voir si une chaîne est composée de nombre
    Par Destiny dans le forum C#
    Réponses: 2
    Dernier message: 26/04/2007, 09h56
  5. Calcul Stock Actuel mm lorsqu'une valeur est null
    Par priest69 dans le forum Access
    Réponses: 3
    Dernier message: 12/09/2005, 18h58

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