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

Windows Discussion :

Contrôle 'EDIT': Comment imposer une limite du nombre de caractères à saisir?


Sujet :

Windows

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Points : 54
    Points
    54
    Par défaut Contrôle 'EDIT': Comment imposer une limite du nombre de caractères à saisir?
    Bonjour,

    J'aimerais savoir s'il y a moyen avec un contrôle 'EDIT' d'imposer une limite du nombre de cractères à saisir? Je sais que l'on peut, lorsque l'on récupère ce qui a été saisi dans le contrôle, choisir combien de caractères maximum on va lire, mais ce que je voudrais, c'est que le contrôle empêche la saisie des caractères qui seront rejetés, afin que l'utilisateur ne perde pas son temps à taper pour rien.

    Est-ce possible?

  2. #2
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    Je dirais qu'il faut regarder du côté du message :
    EM_SETLIMITTEXT

    Ce qui donne, avec mon vieux C++ Builder adoré, qqchose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PostMessage(Edit1->Handle, EM_SETLIMITTEXT, 3, NULL);
    Par exemple ....

    En espérant t'aider,
    @ +

  3. #3
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Points : 54
    Points
    54
    Par défaut
    Oui, je viens de voir que c'est effectivement ce qui est dit sur la MSDN. Par contre je ne parviens pas à envoyer le message.

    J'ai mis la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        SendMessage(WindowHandle,EM_SETLIMITTEXT,(WPARAM) 12,0);
    dans la partie qui traite le message 'WM_CREATE', ça compile, mais ça ne limite pas le nombre de caractères.

    Dois-je mettre cette ligne ailleur?

    Au passage, lorsque j'utilise le contrôle 'EDIT' uniquement pour afficher (ES_READONLY), comment je peux faire pour interdire à l'utilisateur de sélectionner et copier le texte?

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    C'est sûr le handle du Edit qu'il faut le faire, pas sur le handle de la fenêtre.

    Quant à la privation de sélection, facilement, tu ne peux. Justement, on utilise des Edits read-only à la place des static pour permettre la sélection (et accessoirement le scrolling).

    Si tu n'as pas besoin de scrolling (mais d'après ton autre post, tu en as besoin), tu peux utiliser un static à la place de ton edit read-only. Sinon, il va falloir chercher plus loin...
    Ou alors, à la barbare, en utilisant une listbox et en séparant les lignes toi-même...


    PS: Pourquoi empêcher la sélection, au fait?
    C'est toujours utile, et l'empêcher n'empêche pas la recopie manuelle ou la capture d'écran...

  5. #5
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Médinoc
    C'est sûr le handle du Edit qu'il faut le faire, pas sur le handle de la fenêtre.
    Le handle du contrôle 'EDIT', est-ce que je l'obtient en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Handle=GetDlgItem(WindowHandle,ID_EDIT);
    SendMessage(Handle,EM_SETLIMITTEXT,(WPARAM) 12,0);
    Parce que ça ne marche toujours pas !

    PS: Pourquoi empêcher la sélection, au fait?
    C'est toujours utile, et l'empêcher n'empêche pas la recopie manuelle ou la capture d'écran...
    C'est pour afficher une notice dont la reproduction totale ou partielle est interdite. Bien sûr comme tu dis on peut toujours faire une recopie manuelle, mais c'est quand même dissuasif car il y a un bon pavé.

  6. #6
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Points : 54
    Points
    54
    Par défaut
    C'est bon j'ai trouvé. Il fallait mettre le SendMessage dans le
    et non pas dans le
    Merci pour ton aide!

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    En effet, dans une boîte de dialogue, la DLGPROC ne reçoit jamais le WM_CREATE.

    PS: Tu peux aussi faire directement un SendDlgItemMessage() qui fait à la fois le GetDlgItem() et le SendMessage()...

  8. #8
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2007
    Messages : 51
    Points : 54
    Points
    54
    Par défaut Pour allr plus loin
    Bonjour
    C'est parfait de pouvoir limiter le nombre de caractères mais serai t'il possible de faire le contraire.
    Voilà mon problème. Je crée un edit d'un certaine taille. Et le nombre de caractère maximum que je peux entrer dans mon edit est limité à la taille graphique de celui-ci.
    exemple :
    Je peux entrer 15 I: IIIIIIIIIIIIIII
    Mais pas 15 M : MMMMMMMMMMMMMMM

    => Les M prenne plus de place que les I pour s'afficher
    Si quelqu'un à déjà eu ce problème Merci

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Il faut rajouter un style à l'EDIT, ce doit être AutoHScroll (ES_AUTOHSCROLL).

  10. #10
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2007
    Messages : 51
    Points : 54
    Points
    54
    Par défaut Houou
    HA okay je viens de comprendre thread Merci je vais tester

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

Discussions similaires

  1. [Edit] Mot de passe - limitation du nombre de caractères
    Par bestorchidee dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 12/06/2009, 11h11
  2. Réponses: 2
    Dernier message: 17/08/2006, 12h36
  3. Réponses: 2
    Dernier message: 12/06/2006, 09h55
  4. limite du nombre de caractères dans une requete
    Par pheno82 dans le forum Access
    Réponses: 3
    Dernier message: 01/06/2006, 22h12

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