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 :

Champ Arbre : récupérer le numero de ligne [WD17]


Sujet :

WinDev

  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut Champ Arbre : récupérer le numero de ligne
    Bonjour

    Je bute sur un problème qui me paraît si simple...
    Récupérer le numéro de ligne sélectionnée dans un arbre. Il y a sélection multiple.
    Mon arbre est rempli par programmation

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sFichier est une chaine
    nLigneSelectionnee  est un entier
    POUR i = 1 _A_ ArbreSelectOccurrence(ARBRE_ListePdf)
     
    	sFichier = ArbreSelect(ARBRE_Liste, Faux, i)
    	ArbreSelectPlus(ARBRE_Liste,sFichier)
    	nLigneSelectionnee = ARBRE_Liste
    	Trace(i + " - " + nLigneSelectionnee + " - " + sFichier)
    FIN
    Qu'est-ce que je loupe ???
    nligneselectionnée me renvoit la valeur affichée de la selecttion de l'arbre

    En plus j'ai rajouté arbreselectplus, ce que je ne trouve pas correct comme formule puisque la ligne est sélectionnée

    Merci

    Gancau

  2. #2
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    Re...

    J'ai déselctionné l'otion "Multisélection", vérifié que le résultat me renvoyait bien le numéro de ligne sélectionnée.
    Puis j'air emis l'option "multiselection".
    Au final, il me renvoit le nuùéro de la première ligne sélectionnée
    pour pallier à cela, j'ai mis le code suivant avec toutes les implications que cela entraîne...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    nLigneselect est un entier
    nBSelect est un entier = ArbreSelectOccurrence(ARBRE_ListePdf)
     
    sFichier est une chaîne
     
    POUR i = 1 _A_ nBSelect
    	sFichier = ArbreSelect(ARBRE_ListePdf, Faux, 1)
     
    	nLigneselect = ARBRE_ListePdf
    	Trace(i + " - " + nLigneselect + " - " + sFichier)
    	 ArbreSelectMoins(ARBRE_ListePdf,sFichier)
    FIN
    Bonne journée

    Gancau

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Citation Envoyé par gancau Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sFichier est une chaine
    nLigneSelectionnee  est un entier
    POUR i = 1 _A_ ArbreSelectOccurrence(ARBRE_ListePdf)
    	
    	sFichier = ArbreSelect(ARBRE_ListePdf, Faux, i)
    	ArbreSelectPlus(ARBRE_Liste,sFichier)
    	nLigneSelectionnee = ARBRE_ListePdf
    	Trace(i + " - " + nLigneSelectionnee + " - " + sFichier)
    FIN
    Qu'est-ce que je loupe ???
    Bonjour,

    Je crois qu'en utilisant le même nom de champ "Arbre_ListePdf" partout, tout devrait rentrer dans l'ordre.
    ArbreSelectPlus ne sert effectivement à rien.

    Par ailleurs, dans votre second code, il y a aussi une coquille : variable "i" et pas "1"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    POUR i = 1 _A_ nBSelect
    	sFichier = ArbreSelect(ARBRE_ListePdf, Faux, 1)
    	sFichier = ArbreSelect(ARBRE_ListePdf, Faux, i)
    Bon travail

    Hemgé

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 178
    Points : 416
    Points
    416
    Par défaut
    Bonjour,

    J'ai l'impression que vous vous engagez dans une voie sans issue, la notion d'indice, ou numéro de ligne, n'existe pas dans les arbres, elle n'est utilisée dans aucune des procédures liées à ce champ.
    Dans quel but souhaitez-vous récupérer cet indice ?

    Si vous tenez vraiment à récupérer un "indice", je vous conseillerais plutôt de l'enregistrer dans l'identifiant de la feuille lors du remplissage de votre champ.

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Si, si, cette notion existe, même si elle moins évidente que dans les listes, tables etc

    voir l'aide

    Manipuler directement les éléments d'un champ Arbre

    Pour manipuler directement un élément d'un champ Arbre

    Manipulation grâce à l'indice de l'élément :
    Il suffit d'utiliser la notation suivante : <Nom du champ Arbre> [ <Indice de l'élément>].
    Attention : Les indices spécifiés prennent uniquement en compte les éléments visibles.
    Exemple : Modification de la couleur du 5ème élément affiché dans un champ Arbre :

    ARBRE_MonArbre[5]..Couleur = RougeClair

    Manipulation grâce au chemin complet de l'élément :
    Il suffit d'utiliser la notation suivante : <Nom du champ Arbre> [ <Chemin de élément>].
    Le chemin de l'élément est une chaîne de caractères de la forme :

    "<Nom de la racine>" + TAB + ["<Nom du 1er noeud>" + TAB +...
    ["<Nom du 2ème noeud>" + TAB + [...]]]"<Nom de la feuille>" Exemple : Modification de la couleur de l'élément "Ananas".
    ARBRE_MonArbre["Recette" + TAB + "Dessert" + TAB + "Ananas"]..Couleur = RougeClair

    Il est également possible d'utiliser la notation suivante pour désigner l'élément en cours d'un champ Arbre :

    MoiMême[ArbreSelect(MoiMême)]

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 178
    Points : 416
    Points
    416
    Par défaut
    Au temps pour moi, mais alors du coup, à part pour modifier les attributs d'un élément, y'a-t-il une autre utilité ?

    La seule fonction renvoyant un numéro de ligne en direct, en tout cas que j'ai trouvé dans la doc en ouvrant tout comme un idiot et en regardant avec mes yeux, c'est ArbreInfoXY.
    Quant au code proposé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sFichier est une chaine
    nLigneSelectionnee  est un entier
    POUR i = 1 _A_ ArbreSelectOccurrence(ARBRE_ListePdf)
     
    	sFichier = ArbreSelect(ARBRE_ListePdf, Faux, i)
    	nLigneSelectionnee = ARBRE_ListePdf
    	Trace(i + " - " + nLigneSelectionnee + " - " + sFichier)
    FIN
    J'ai du mal à voir la valeur que pourrait renvoyer ARBRE_ListePdf dans la boucle, sachant que ArbreSelect renvoie une chaîne de caractère, à priori sans déplacer un pointeur quelconque sur le champ lui même, contrairement à ArbreSelectPlus et ArbreSelectOccurrence non plus.

    Maintenant si il y a un moyen d'utiliser des indices plutôt que des chemins que j'ai encore raté, je suis preneur, j'aime pas les chaînes remplies de tabulations ...

    Pour info, les fonctions acceptant en paramètre un indice :
    1. ArbreAffiche
    2. ArbrePosition

  7. #7
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    Bonjour
    Un peu tard...
    @themayu : Je voulais récupérer l'indice de mon arbre pour pouvoir gérer la sélection automatique de la feuille suivante dans mes traitements.

    @Hemgé :
    Pour ma "coquille", non il s'agit bien de "1" et pas de la variable "i"
    En effet la boucle est sur les éléments sélectionnés et pour chaque élément sélectionné, je le garde en mémoire dans une variable puis je dé-sélectionne l'élément dans l'arbre donc je reste toujours sur la valeur 1 de sélection dans l'arbre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    nLigneselect est un entier
    nBSelect est un entier = ArbreSelectOccurrence(ARBRE_ListePdf)
    
    sFichier est une chaîne
    
    POUR i = 1 _A_ nBSelect
    	sFichier = ArbreSelect(ARBRE_ListePdf, Faux, 1)
    	[...traitement...]
    	nLigneselect = ARBRE_ListePdf
    	Trace(i + " - " + nLigneselect + " - " + sFichier)
    	ArbreSelectMoins(ARBRE_ListePdf,sFichier)
    FIN
    Ainsi je garde bien la position du dernier élément sélectionné et cela me permet de positionner l'utilisateur directement sur l'élément suivant à traiter. et je désélectionne les éléments qu'il a déjà traité

    Merci

    Gancau

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

Discussions similaires

  1. Récupérer le numero de la ligne du code
    Par jameson dans le forum Langage
    Réponses: 6
    Dernier message: 25/03/2011, 14h40
  2. Réponses: 8
    Dernier message: 13/04/2005, 15h40
  3. Recuperer le numero de ligne d'une exception Python
    Par chrdou dans le forum Général Python
    Réponses: 4
    Dernier message: 28/02/2005, 16h58
  4. Réponses: 2
    Dernier message: 06/12/2004, 11h44
  5. Réponses: 2
    Dernier message: 19/05/2004, 10h13

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