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 :

Treeview: position d'un element par rapport à un autre de meme niveau?


Sujet :

Delphi

  1. #1
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut Treeview: position d'un element par rapport à un autre de meme niveau?
    bonjour...

    Voila j'ai une petite question sur le treeview...

    Je souhaite savoir si il y a un moyen simple de connaitre la position d'un élement du treeview par rapport au autres élément de meme niveau.
    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       racine
          |
          |-element1
          |        |-sous element1
          |        |-sous element2
          |-element2
                    |-sous element3
    en fait si je récupère la position du sous élément 3 je veux avoir 2... (car il y 2 éléments de meme niveau au dessus) et non pas 5 ou 0 comme je pourrais l'avoir avec index et absoluteIndex...

    Ah mon avis il doit y avoir moyen de s'en sortir avec level index et absolute index mais avant de faire un truc tordu je voudrais m'assurer qu'il n'y a pas une maniere simple de procéder...

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    On peut se construire son 'propre' index assez simplement en jouant avec les propriétés Level et AbsoluteIndex:
    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
     
    procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
    var
      i, MyOwnIndex: Integer;
    begin
      MyOwnIndex := -1;
      i := -1;
      with TTreeView(Sender) do begin
        repeat
          Inc(i);
          if Items[i].Level = Node.Level then Inc(MyOwnIndex);
        until (i = Items.Count - 1) or (Node.AbsoluteIndex = i);
      end;
      EditOwnIndex.Text := IntToStr(MyOwnIndex);
    end;
    @+

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    L'exemple de mon précédent post est rattaché à l'évenement OnChange, le mieux est de faire une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function GetNodeOwnIndex(tv: TTreeView; Node: TTreeNode): Integer;
    var
      i: Integer;
    begin
      Result := -1;
      i := -1;
      with tv do begin
        repeat
          Inc(i);
          if Items[i].Level = Node.Level then Inc(Result);
        until (i = Items.Count - 1) or (Node.AbsoluteIndex = i);
      end;
    end;
    Voilà
    @+

  4. #4
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    ok merci ca confirme donc ce que je pensé il fut que je passe par un algo . Et le tiens et plutot sympa et clair je vais m'en inspirer

    Merci beaucoup

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

Discussions similaires

  1. Position d'un div par rapport à un autre
    Par amnay dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 04/04/2013, 16h46
  2. Position d'une fenêtre par rapport à une autre
    Par aljessy dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 21/08/2012, 13h50
  3. Positionner un element par rapport à un autre
    Par takinelinfo dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 28/05/2009, 12h09
  4. [XPATH] Position d'un noeud par rapport à la racine ?
    Par DemonKN dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 22/10/2008, 18h51
  5. Position d'un div par rapport à un autre
    Par Shadow69 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/12/2006, 14h57

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