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

WinDev Discussion :

Interdire la saisie dans certaines parties de champ


Sujet :

WinDev

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut Interdire la saisie dans certaines parties de champ
    Bonjour,

    Je suis en train de faire un test de faisabilité.
    L'application sera basée sur de l'XML et des textes saisis soit RTF soit HTML

    Il faut que certaines parties de texte ne puissent pas être modifiées.

    Si j'implémente les évènements Touche enfoncée ou (et) Touche appuyée avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SI SAI_Texte_HTML..Curseur < 20 ALORS
    //	_EVE.Retour = 0
    //	_EVE.wParam = 0
    	RENVOYER 0
    FIN
    J'ai essayé toutes les possibilités.
    J'ai aussi essayé RENVOYER Faux
    Le programme entre bien dans le code mais la saisie est toujours prise en compte.

    Y-a-t-il une astuce ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour.

    Citation Envoyé par Delphi-ne Voir le message
    Il faut que certaines parties de texte ne puissent pas être modifiées.
    Scinder le champ de saisi en plusieurs autre champs de saisies dont certains d'entre eux ne seront pas modifiables?

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Au niveau ergonomie cela ne semble pas acceptable.
    Tous les langages sont capables de faire cela. WinDev doit bien pouvoir le faire aussi.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 552
    Points : 1 193
    Points
    1 193
    Par défaut
    Bonjour,

    D'après l'extrait de votre code, je vois 2 méthodes possible :
    - faire ce qu'on appelle un 'hook' clavier
    - supprimer le caractère saisi avant de sortir du champ

    Le hook est la méthode la plus propre car vous intercepter avant windev l’évènement d'appui sur une touche. Donc vous pouvez décider si vous voulez que l'action de la touche se déroule ou non. Mais elle est plus complexe à mettre en oeuvre.

    La suppression du caractère superflu est plus facile à mettre en oeuvre il suffit d'enlever le dernier caractère du champ de saisie et de replacer le curseur à la fin du champ.

    Cordialement.

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Demande originale ! (de mon point de vue en tout cas).

    Et je viens de tester ce bout de code : ça marche à peu près.

    1. Je crée une variable XXX de type chaîne
    Dans le code 'Entrée dans Sai_xxx :
    Dans le code 'A chaque Modification de sai_xxx, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SI MoiMême..Curseur < 20 ALORS 
    	moimeme = xxx
    SINON
    	xxx = moimeme 
    FIN
    pour l'ergonomie, on peut peut-être rajouter un moimeme..curseur = quelque chose après la ligne 2.
    Et on doit pouvoir créer un super-champ avec notre champ de saisie et cette chaîne xxx si le besoin est fréquent.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Bonjour,

    Merci.
    Finalement j'ai utilisé la solution de TBC92, le hook clavier me semblait un peu complexe.

    Cela fonctionne.
    En tête de module j'ai fait une déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	LT_FiltreModifType est une Structure
    		LC_Contenu  est une chaîne
    		LN_Position est un entier
    	FIN	
    	LT_FiltreModif est un LT_FiltreModifType
    et dans l'évènement de modification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SI MoiMême..Curseur < 20 ALORS 
    	MoiMême = LT_FiltreModif.LC_Contenu
    	MoiMême..Curseur = LT_FiltreModif.LN_Position
    SINON
    	LT_FiltreModif.LC_Contenu  = SAI_Texte_HTML
    	LT_FiltreModif.LN_Position = SAI_Texte_HTML..Curseur
    FIN
    Un seul champ dans toute l'application devra se comporter ainsi, le superchamp ne me semblait pas justufié.
    Je ne comprends pas pourquoi la solution consistant à renvoyer 0 dans l'évènement de frappe de touche ne fonctionne pas, cela fera sans doute l'objet de l'amélioration 980 de WD80. On verra...

    En ce qui concerne l'originalité de la demande c'est pour modifier de façon interactive des courriers générés par une application d'éditique. L'utilisateur doit pouvoir personnaliser un courrier mais pas accéder à certains éléments comme l'adresse, les mentions légales, etc...
    Au final seules quelques parties du courrier pourront être modifiées

    En tout cas merci.

  7. #7
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    J'ai quand même un gros doute.

    J'ai testé avec 4 au lieu de 20 ; c'est plus facile.
    Ma chaîne est initialisée avec "abc def ghi"

    Je ne peux pas toucher à a ni b : normal.
    Bizarrement, j'arrive à saisir des modifications entre b et c :::> "abxyzc def ghi"
    Et pire, si je veux retirer les xyz, je peux supprimer y et z, mais pas x !!!

    Je ne peux pas revenir à la chaîne initiale !

    EDIT :
    Finalement, je m'en sors en modifiant le test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    si gauche(moimeme, 3) <> "abc" alors
    au lieu du test sur moimeme..curseur.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Oui j'ai peur qu'on parte dans le bricolage.
    D'où l'essai de faisabilité. A défaut j'utilise Delphi ou VS mais j'aimerais bien essayer WinDev quand même.

    en ajoutant ExécuteTraitement(SAI_Texte_HTML, trtModification) au niveau de l'évènement touche enfoncée ça semble correct.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/06/2016, 16h34
  2. Interdire la saisie dans un champs en JavaScript
    Par bubulemaster dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/02/2010, 13h54
  3. Interdire la saisie dans certaines cellules excel via un Userform
    Par smurf007 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/07/2009, 14h58
  4. Réponses: 4
    Dernier message: 22/10/2006, 00h23
  5. comment interdire la saisie dans une combolist
    Par awatif dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 06/10/2006, 23h03

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