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 :

Position d'un champ de saisie dans un autre champ de saisie [WD14]


Sujet :

WinDev

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut Position d'un champ de saisie dans un autre champ de saisie
    Bonjour,
    Je souhaite sélectionner un mot dans un champ de saisie multiligne, par exemple le 4ième mot du champ de saisie(Sai_saisie1). Pas de problème, voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Machaine est une chaîne
    Machaine=ExtraitChaîne(Sai_saisie1,4," ") //séparateur--> espase
    LongChaine est un entier
    LongChaine=Taille(Machaine)
    //Je sélection la chaine dans le champ Sai_saisie1
    SAI_Texte..Curseur = Position(Sai_saisie1, Machaine,1) //Début sélection
    SAI_Texte..FinCurseur = Position(Sai_saisie1, Machaine,1)+LongChaine //Fin sélection
    Ensuite je veux remplacer le mot sélectionné, par le contenu d'un autre champ de saisie (Sai_saisie2) mais... je veux que ce champ sai_saisie2 se positionne exactement au dessus du mot sélectionné dans le champ Sai_saisie1. En résumé Sai_saisie2 doit masquer la sélection.
    Je ne sais pas comment faire pour positionner sai_saisie2 à l'emplacement voulu, c'est à dire déterminer sai_saisie2..X et sai_saisie2..Y. (Sai_saisie2..largeur ne pose pas de problème).
    J'espère avoir été clair.
    Merci si vous pouvez m'aider.

  2. #2
    Membre éprouvé Avatar de miripesage
    Homme Profil pro
    gerant
    Inscrit en
    Novembre 2009
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : gerant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 725
    Points : 1 156
    Points
    1 156
    Par défaut
    Bonjour, essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SI SAI_Texte..TexteSélectionné = SAI_Texte..FinCurseur ALORS
       SAI_Texte..TexteSélectionné = Sai_Saisie2
    FIN

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci miripesage mais ça ne fonctionne pas.

  4. #4
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,

    C'est juste une idée...

    Passe par ihauteurtexte et ilargeurtexte pour déterminé la largeur et la hauteur
    Je m'explique..

    Tu cherche la largeur de ton texte avant le début de ta sélection mais pour ta ligne sélectionné...
    quand tu te positionne sur ton 4ème mot tu regarde le nombre de RC qui se trouve avant, ensuite tu extrait les caractères entre de dernier RC et ton 4ème mot. de la tu défini la largeur de ce texte avec ilargeurtexte.

    Pour la hauteur tu a le nombre de ligne que tu multiplie par ihauteurtexte...

    Je suis un peu brouillon mais c'est une piste

  5. #5
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    730
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 730
    Points : 1 648
    Points
    1 648
    Par défaut
    Pour les fenêtres les fonctions sont TexteLargeur et TexteHauteur.
    Vous n'avez pas à compter les RC, TexteHauteur s'occupera de tout.

    Donc utilisez ces 2 fonctions sur tout le texte précédant le mot à remplacer et visible. Si quelqu'un sait comment récupérer la position du 1er caractère visible ou même la position de la barre de défilement verticale...

  6. #6
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    dans ce cas voici un code qui marche

    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
    sChaineAvantSélection est une chaîne		//	tout le texte avant le début de la sélection
    sChaineSurLigneSélection est une chaîne		//	texte se trouvant sur la meme ligne avant la sélection
    nPositionDernierRCAvantTexteSélectionner est un entier
     
    sChaineAvantSélection = SAI_Saisie1[[ A Position(SAI_Saisie1, Machaine,1)-1]]
    nPositionDernierRCAvantTexteSélectionner = Position(sChaineAvantSélection,RC,0,DepuisFin)
    SI nPositionDernierRCAvantTexteSélectionner = 0 ALORS
    	nPositionDernierRCAvantTexteSélectionner = 1
    SINON
    	nPositionDernierRCAvantTexteSélectionner +=2
    FIN
    sChaineSurLigneSélection = sChaineAvantSélection[[nPositionDernierRCAvantTexteSélectionner A]]
     
    SAI_Saisie2..X = SAI_Saisie1..X + TexteLargeur(SAI_Saisie1,sChaineAvantSélection + " ",tMultiligne)
    SAI_Saisie2..Y = SAI_Saisie1..Y + TexteHauteur(SAI_Saisie1,sChaineAvantSélection,tMultiligne) - TexteHauteur(SAI_Saisie1,"a",tMultiligne) //	on enlève une hauteur sinon on se place sur la ligne en dessous
    SAI_Saisie2..Largeur = TexteLargeur(SAI_Saisie1,Machaine)
    DonneFocus(SAI_Saisie2)

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci à vous Hibernatus34 et mail.spam.
    Vous avez parfaitement résolu mon problème.
    Encore merci

  8. #8
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    attention...

    il faut faire des essaie pour tous les cas
    ex ça ne marche pas si le texte sélectionner est le premier.
    il faut aussi faire des essaie dans le cas d'un champ de saisie multi-ligne avec ascenseur..

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci mail.spam pour ces précisions. Je vais effectivement être prudent...

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Bonsoir,
    En regardant de plus près, je ne réussis pas à faire fonctionner le code de mail.spam. Tout va bien si le mot est sur la première ligne, mais pb dès que le mot est sur la 2ième ligne du champ.
    Je pense que le problème est lié au fait que les lignes du champ multiligne ne se terminent pas par des RC.
    Avez-vous une idée?

  11. #11
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    730
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 730
    Points : 1 648
    Points
    1 648
    Par défaut
    Ligne 14, il faut mettre sChaineSurLigneSélection à la place de sChaineAvantSélection, mais à part cette petite inversion je pense que ce code marche. (à condition de ne pas avoir d'ascenseur dans le champ)

  12. #12
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    je n'ai pas tester mais c'est une idée.
    tu peux aussi faire un contrôle sur la longueur du texte avant sélection.
    si cette longueur est supérieur à la largeur de ton champ c'est que tu est sur une autre ligne.
    Mais fait quand même attention au retour chariot.

  13. #13
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Je viens de faire un essai avec le champ de saisie principal qui se compose de 5 lignes qui se terminent par des RC. Dans ce cas, le positionnement du second champ est correct.

  14. #14
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    730
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 730
    Points : 1 648
    Points
    1 648
    Par défaut
    Ah oui, j'avais pas percuté que sChaineSurLigneSélection est faux quand il y a un retour à la ligne automatique sur cette ligne.
    Là tout de suite je vois bien une solution, mais un peu lourde :
    En partant de la fin, supprimer des mots jusqu'à ce que la hauteur du texte soit différente de celle calculée au départ.
    La mots supprimés sans changement de la hauteur appartiennent à la dernière ligne et constituent sChaineSurLigneSélection.

    Et bien sûr, toujours aucune solution pour les ascenseurs.
    Vous devriez peut-être repenser votre IHM pour vous simplifier la vie.

  15. #15
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Je suis d'accord avec Hibernatus34,

    Je ne me prendrai pas la tête pour positionner le second champ de saisie.
    Sauf si tu veux mettre plusieurs champs au dessus du texte à remplacer en même temps (je suis un peu brouillon dans ce que je dis).
    Dans ce cas Ok je comprend. mais c'est beaucoup de prise de tête.

  16. #16
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Bonjour,
    Merci pour vos réponses.
    Voici plus précisément mon objectif :
    -Choisir aléatoirement n mots dans un champ de saisie.
    -Sélectionner successivement chacun de ces mots pour les remplacer par le contenu d'un autre champ de saisie qui se positionne sur le mot sélectionné.
    Compte tenu de vos réponses, je vais réfléchir à un autre cheminement (ne pas superposer le second champ,récupérer chaque ligne puis concaténer ???..)
    A voir donc

  17. #17
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 998
    Points
    1 998
    Par défaut
    Hello,
    N'y aurait-il pas quelque chose de plus simple avec les fonctions RTF (même si le champs d'origine n'est pas RTF)?
    Le champs d'origine alimente un champs RTF et ensuite, pour faire la recherche de chaine, à partir d'un autre champs, utilisation de RTFCHERCHE et RTFREMPLACE...
    Puis quand c'est fini, faire un RTFVERSTEXTE pour envoyer le résultat dans la chaine d'origine, et voilà...
    Ca prend tout au plus une dizaine de ligne, c'est portable et applicable à bon nombre de sujet...
    Si j'ai tout bien compris... la solution doit être là (où ailleurs)...

  18. #18
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Bonjour et merci "EDM-TAHITI"
    Ca ne me pose pas de problème d'avoir un champ d’origine RTF, effectivement l'utilisation de champs RTF est possible pour la recherche et le remplacement...
    Ma difficulté est que le champ de saisie contenant le mot remplaçant, doit se situer sur le mot remplacé, c'est à dire qu'il doit masquer le mot remplacé contenu dans le champ d'origine. Ma difficulté est de positionner ce champ remplaçant.

  19. #19
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 998
    Points
    1 998
    Par défaut
    Hello,
    Désolé si je ne comprend pas tout, et tout de suite (rire - il est 20h44 ici).
    Bien, le fait de stocker ta chaine orifgine dans un champs, puis de faire un rtfremplace va 'masquer' en remplacant ta chaine d'origine et donc, cacher artificiellement le/les mots remplacé/s.
    Ou alors, tu veux vraiment déplacer un champs avec ses coordonnées X:Y sur le champs d'origine, si c'est cela, j'avoue que là, surtout pour plusieurs occurrences, ca va pas être de la tarte (au citron).
    mais peut-être que je suis en dehors des clous...

  20. #20
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    OUI EDM-TAHITI, je veux déplacer physiquement le champs remplaçant (avec ses coordonnées X:Y) sur le mot remplacé du champs d'origine.
    MERCI

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Afficher un contenu d'un champ de saisie dans un autre
    Par chicogrifa dans le forum Langage
    Réponses: 8
    Dernier message: 09/04/2013, 14h02
  2. Réponses: 3
    Dernier message: 09/02/2012, 22h24
  3. Réponses: 13
    Dernier message: 06/08/2008, 14h36
  4. [Conception] valeur d'un identifiant dans un autre champ
    Par suya95 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 03/07/2006, 21h27
  5. Deux saisie dans un même champ?
    Par Kyrha dans le forum Access
    Réponses: 3
    Dernier message: 21/04/2006, 11h46

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