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

C++Builder Discussion :

[Ttreeview] Autoscroll? [Trucs & Astuces]


Sujet :

C++Builder

  1. #1
    Membre averti
    Avatar de Superstivix
    Inscrit en
    décembre 2003
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : décembre 2003
    Messages : 250
    Points : 397
    Points
    397
    Par défaut [Ttreeview] Autoscroll?
    Bonjour à tous,

    Voila le problème, j'ai réalisé un drag & drop sur un TTreeview, le problème est que lorsque je prends un noeud et que le pointeur de la souris dépasse le cadre supérieur de l'arbre il ne se passe, or je souhaiterais que les noeuds de l'arbre défilent de manière à pouvoir afficher les noeuds supérieurs.

    J'ai cherché une fonction du style autoscoll sans succès.
    J'espère que quelqu'un sait faire ça.

    Steve
    Modérateur Taverne et C++Builder
    Règles du Club - Règles de la Taverne
    FAQ BCB - sources
    Et je mords

  2. #2
    Invité
    Invité(e)
    Par défaut Autoscroll sur un Treeview
    Bonjour,

    Effectivement, avoir un défilement de l'arbre de vue quand on survole le haut ou le bas de l'arbre est intéressant (comme dans l'explorateur Windows par exemple).

    J'ai déjà fait des recherches sur ce problème ici :
    http://www.developpez.net/forums/vie...518&highlight=

    Je n'ais malheureusuement pas trouvé de solution satisfaisante.

    J'espère que tu trouveras...

    Bon courage !

  3. #3
    Invité
    Invité(e)
    Par défaut TopItem
    Ah, j'ai vu dans un sujet précédent pour un TListView que l'on pouvait utiliser la propriété TopItem, je vais essayer...

  4. #4
    Membre averti
    Avatar de Superstivix
    Inscrit en
    décembre 2003
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : décembre 2003
    Messages : 250
    Points : 397
    Points
    397
    Par défaut Re: Autoscroll sur un Treeview
    Citation Envoyé par Kaji
    Bonjour,

    Effectivement, avoir un défilement de l'arbre de vue quand on survole le haut ou le bas de l'arbre est intéressant (comme dans l'explorateur Windows par exemple).

    J'ai déjà fait des recherches sur ce problème ici :
    http://www.developpez.net/forums/vie...518&highlight=

    Je n'ais malheureusuement pas trouvé de solution satisfaisante.

    J'espère que tu trouveras...

    Bon courage !
    J'avais déja trouvé ce sujet mais malheureusement ça ne marche pas, j'essaye de l'adapter mais pour l'instant sans succès

    Si quelqu'un connait la solution je suis preneur, d'ici là je continue les recherches

    Steve
    Modérateur Taverne et C++Builder
    Règles du Club - Règles de la Taverne
    FAQ BCB - sources
    Et je mords

  5. #5
    Membre averti
    Avatar de Superstivix
    Inscrit en
    décembre 2003
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : décembre 2003
    Messages : 250
    Points : 397
    Points
    397
    Par défaut
    Rebonjour à tous,

    voila j'ai résolu mon problème, je donne le code pour ceux que ça peut intéresser.
    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
    18
    19
    20
    21
    22
     
    TTreeView *Organigramme;
    ...
    if (State == dsDragMove && Y > 0 && Y < Organigramme->Height)
    {
      TTreeNode * NoeudTampon;
      TTreeNode * DernierVisible;
      NoeudTampon = Organigramme->GetNodeAt(X,Y);
      DernierVisible = Organigramme->GetNodeAt(X,Organigramme->Height - 10);
      if(NoeudTampon != NULL)
      {
        if( NoeudTampon == Organigramme->TopItem )
        {
           Organigramme->TopItem = Organigramme->TopItem->GetPrev();
           Organigramme->Repaint();
        }
        else if( NoeudTampon == DernierVisible && DernierVisible->GetNext() != NULL)
        {
          Organigramme->TopItem = Organigramme->TopItem->GetNext();
          Organigramme->Repaint();
        }
      }
    C'est assez simple je pense mais si quelqu'un a la moindre question qu'il n'hésite pas, ce code est à mettre dans l'événement DragOver de l'arbre.

    A plus
    Steve
    Modérateur Taverne et C++Builder
    Règles du Club - Règles de la Taverne
    FAQ BCB - sources
    Et je mords

  6. #6
    Membre à l'essai
    Inscrit en
    octobre 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : octobre 2003
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Salut,

    une toute petite remarque : si jamais ton TreeView a une scrollbar horizontale (d'une épaisseur supérieure à 10), par exemple quand tu étends plusieurs sous-noeuds, il ne scrollera plus !

    Il vaut mieux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DernierVisible = Organigramme->GetNodeAt(X,Organigramme->ClientHeight - 10);
    plutôt que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DernierVisible = Organigramme->GetNodeAt(X,Organigramme->Height - 10);
    Voili, j'avais dit que c'était un détail

    Merci en tout cas pour ton code, ça ma permis d'ajouter cette facilité avant que le client ne me la demande !
    A++

  7. #7
    Membre averti
    Avatar de Superstivix
    Inscrit en
    décembre 2003
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : décembre 2003
    Messages : 250
    Points : 397
    Points
    397
    Par défaut
    Merci de ta précision,
    je n'y avais pas prété attention car dans les arbres que j'ai dans mon projet je ne peut pas avoir de ScrollBar horizontale, donc pas de souci pour moi.
    Par contre le code risque d'être réutilisé pour d'autres projets et la configuration pourra être différente donc mieux vaut prévenir que guérir comme on dit.

    De rien pour le code
    Vraiment ravi que ça puisse servir à d'autres.
    Bon courage
    A plus
    Steve
    Modérateur Taverne et C++Builder
    Règles du Club - Règles de la Taverne
    FAQ BCB - sources
    Et je mords

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

Discussions similaires

  1. [TTreeView] Problème avec les pointeurs d'objet
    Par BlackWood dans le forum Composants VCL
    Réponses: 2
    Dernier message: 02/07/2004, 15h31
  2. TTreeView
    Par lasconic dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/08/2003, 12h12
  3. TTreeView: AutoExpand
    Par nmathon dans le forum Composants VCL
    Réponses: 6
    Dernier message: 04/03/2003, 16h48
  4. TTreeView -> Comment ouvrir une unité ?
    Par DaLove dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/12/2002, 12h30
  5. Couleur des noeuds ds 1 TTreeView
    Par vincent DD dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/09/2002, 14h54

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