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 :

controle total sur le texte d'un Tedit


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut controle total sur le texte d'un Tedit
    Bonjour,

    Pour protéger la saisie d'un TEdit j'utilise OnKeyPress. J'interdis par exemple les caractères accentués. Ceci est efficace sur la saisie par clavier (forcément!). Cependant, comment faire pour le copier/coller ou même la saisie sur une tablette pc via la reconnaissance d'écriture (écriture à main levée)?

    Il parait qu'en java cela est possible mais cela me fait une belle jambe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void insertString(int offs, String str, AttributeSet a) throws BadLocationException{          
            //Ne pas autoriser les majuscules
            //str = str.toLowerCase();
     
            //Contrôle répétitions de lettres 
            String txt = getText(0, getLength());
            if(! repetition(str.charAt(0), offs, txt))
                super.insertString (offs, str, getStyle ("styleNormal"));
     
        }
    des idées? A part bricoler/galérer avec onChange...

    D'avance merci.

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Ton idée de travailler avec le OnChange est la bonne. Je ne vois pas pkoi ce serait la galère.

  3. #3
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    @Salut,

    Tu peux aussi faire ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      if not CharInSet(Key, ['0','1','2','3','4','5','6','7','8','9',
      'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
      'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',  Chr(VK_BACK)])
      then Key := #0;

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    @philnext car le texte a déjà été changé et qu'il n'est pas certain que les changements "ne se voient pas" à l'écran

    un beforeOnChange aurait été mieux mais ça n'existe pas mais si n'y a vraiment aucune autre solution ce qui m'étonne j'utiliserai effectivement onChange

    @BuzzLeClaire cela ne s'applique qu'à l'évènement clavier non?

  5. #5
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Bonjour,

    tu dois avoir de très bons yeux ou un micro très lent

    car en faisant cela

    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
    22
    procedure TForm1.Edit1Change(Sender: TObject);
    var
      Taille: Byte;
      Chaine : String ;
      i : Integer ;
      cc  : Char ;
      BB : set of Char ;
    begin
      BB :=  [' ','0','1','2','3','4','5','6','7','8','9',
      'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
      'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V',
      'W','X','Y','Z',  Chr(VK_BACK)] ;
      Taille := Edit1.GetTextLen ;
      Chaine  := Edit1.text ;
      For i := Taille Downto 1 do
         Begin
            cc := Chaine[i] ;
            If not (cc in BB)    Then delete(Chaine,i, 1 ) ;
         End ;
      Edit1.text := Chaine ;
      Edit1.SelStart := Edit1.GetTextLen ;
    end;
    moi je ne vois pas grand chose ni en copier/coller, ni en frappe directe

    Cordialement

    Charly

  6. #6
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Je confirme pour le OnChange : je l'utilise pour ce genre de choses et on ne remarque rien à l'écran.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    @charly910 je porte de bonnes lunettes c'est pour ça

    plus sérieusement merci ça a l'air de bien fonctionner même si je dois encore vérifier avec la tablet PC.

    au début, n'ayant pas penser aux tablets PC (et vu que j'interdisais le C/C), j'utilisais ce qui était dans la FAQ http://delphi.developpez.com/faq/?pa...sieenmajuscule. De plus, quand je pensais que ça allait être pénible avec onChange, c'est parce que je pensais que le fait de modifier la valeur text allait recréer un appel onChange.

    merci @ceux qui ont répondus!

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

Discussions similaires

  1. Erreur sur champ text pour un index Full-Text
    Par Steph82 dans le forum Outils
    Réponses: 5
    Dernier message: 06/01/2011, 14h08
  2. LIKE sur un TEXT
    Par Original Prankster dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/09/2005, 13h59
  3. ALT sur du texte
    Par oli2a dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/11/2004, 14h13
  4. Agir sur le texte entré dans un éditeur
    Par FatalError dans le forum C++
    Réponses: 1
    Dernier message: 24/10/2004, 14h54
  5. tri sur champ texte
    Par ridan dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/08/2004, 16h28

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