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 :

TTreeNode hide ? [D�butant]


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 164
    Par d�faut TTreeNode hide ?
    Bonjour � toutes et � tous,

    Voil�, j'ai une petite question qui me taraude. Y-a-t-il moyen en builder de cacher un noeud d'un TTreeView sans pour autant recharger celui-ci ?
    Par exemple, l'utilisateur ne voit pas certains noeuds en fonctions de certains crit�res, mais "physiquement" le noeud est pr�sent dans le treeview, mais seulement invisible ou cach� ?

    Merci par avance,

  2. #2
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par d�faut
    On mon avis non !
    Pourquoi cr�er un noeud, utiliser un handle, occuper de la m�moire si l'on sait � l'avance que l'on ne l'affichera pas ?
    Pour un arbre avec peu de niveau et peu de donn�es, le remplissage en une seule passe est envisageable
    Mais pour un explorateur de fichier ou de la BDR o� le volume et la profondeur sont grands mieux vaut un chargement au dernier moment pour r�partir les temps de chargement
    Idem si c'est li� � de la DB et que chaque niveau correspond � plus ou moins � une Table

    je te conseille d'utiliser des class ou struct dans la propri�t� Data du TTreeNode
    Ainsi lors du OnExpand d'un Noeud tu as les infos pour construire ses enfants � partir des noeuds du Parent

    Cette class peut tout simplement contenir des ID pour lier la DB si c'est ton cas

    Pense au BeginUpdate\EndUpdate pour am�liorer le temps de remplissage (si tu as BCP de noeud � cr�er d'un seul coup)
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 164
    Par d�faut
    Merci ShaiLeTroll,

    Effectivement, j'ai beaucoup de donn�es et de noeuds � traiter. Pour r�pondre � ta question, en fait, j'aimerais impl�menter un syst�me de filtre apr�s visualisation des donn�es ... pour que l'utilisateur puisse retrouver plus facilement ses donn�es; en fonction de param�tres d�finies par eux.
    En tout cas, c'est dommage que cela n'existe pas nativement, je dis peut �tre des b�tise, mais cela ne doit pas �tre possible en C# non plus ...

    Je regarde tout cela, et � terme, d�s que j'ai du temps, j'aimerais bien me faire un p'tit composant perso permettant de faire cela, quitte � supprimer des noeuds au fur et � mesure des crit�res de filtre, et les stocker "ailleurs" avec toutes les infos n�cessaires pour pouvoir remettre ces noeuds au bon endroit en cas de suppression de certains filtres ...

    Encore merci

  4. #4
    Expert �minent
    Avatar de ShaiLeTroll
    Homme Profil pro
    D�veloppeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur C++\Delphi
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par d�faut
    Tu peux aussi changer le ImageIndex, StateIndex, ... en jouant sur des images plus visibles (plus color�es), tu peux attirer l��il de l'utilisateur sur les �l�ments appartenants aux filtres

    Sinon, on revient � avoir un arbre en m�moire contenant la structure compl�te, le filtre consulte cet arbre pour construire les TTreeNode et Data pointe sur des feuilles de l'arbre
    Cet arbre peut aussi contenir une r�f�rence � ses TTreeNode pour facilement alterner de l'un � l'autre pour ton algo de construction\d�construction des noeuds

    J'ai bricol� ceci pour un petit outil permettant de consulter des fichiers ini (mon responsable abuse des ini) et d'en faciliter le d�ploiemente entre le r�pertoire des sources "tortois�es" et les r�pertoires des applications (3 en parall�le dans des r�pertoires diff�rents)

    le TreeView est rempli selon UN fichier INI, une seule passe
    Puis, j'ai un petit outil de recherche dans les noeuds

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    //---------------------------------------------------------------------------
    void __fastcall TIniFileEditorEditForm::EdSearchChange(TObject *Sender)
    {
      TimerSearch->Enabled = false;
      TimerSearch->Enabled = true;
    }
     
    //---------------------------------------------------------------------------
    void __fastcall TIniFileEditorEditForm::EdSearchKeyPress(TObject *Sender, System::WideChar &Key)
    {
      if (Key == VK_RETURN)
      {
        Key = 0;
        Search(true);
      }
    }
     
    //---------------------------------------------------------------------------
    void __fastcall TIniFileEditorEditForm::TimerSearchTimer(TObject *Sender)
    {
      Search();
    }
     
    //---------------------------------------------------------------------------
    void TIniFileEditorEditForm::Search(bool ForceNext/* = false*/)
    {
      TTreeNode *FoundNode = NULL;
     
      // Le noeud sélectioné contient déjà ce texte !
      if ( ! ForceNext && TreeViewIni->Selected && ContainsText(TreeViewIni->Selected->Text, EdSearch->Text))
        FoundNode = TreeViewIni->Selected;
     
      if ( ! FoundNode)
      {
        // Par de noeud en cours
        TTreeNode *SearchNode = TreeViewIni->Selected ? ForceNext ? TreeViewIni->Selected->GetNext() : TreeViewIni->Selected : TreeViewIni->Items->GetFirstNode();
        while (SearchNode && ! FoundNode)
        {
          if ( ! ContainsText(SearchNode->Text, EdSearch->Text))
            SearchNode = SearchNode->GetNext();
          else
            FoundNode = SearchNode;
        }
     
        // Si pas trouvé, remonte au début
        if ( ! FoundNode && TreeViewIni->Selected)
        {
          TTreeNode *SearchNode = TreeViewIni->Items->GetFirstNode();
          while (SearchNode && ! FoundNode && (SearchNode != TreeViewIni->Selected))
          {
            if ( ! ContainsText(SearchNode->Text, EdSearch->Text))
              SearchNode = SearchNode->GetNext();
            else
              FoundNode = SearchNode;
          }
        }
     
      }
     
      if (FoundNode)
      {
        TreeViewIni->Selected = FoundNode;
        FoundNode->MakeVisible();
      }
     
      TimerSearch->Enabled = false;
    }
    Aide via F1 - FAQ - Guide du d�veloppeur Delphi devant un probl�me - Pensez-y !
    Attention Troll M�chant !
    "Quand un homme a faim, mieux vaut lui apprendre � p�cher que de lui donner un poisson" Confucius
    Mieux vaut se taire et para�tre idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la m�diocrit� !

    L'exp�rience, c'est le nom que chacun donne � ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 164
    Par d�faut
    Effectivement, j'utilise la notion de "Data" dans les TTreeNode. Je suis en train de regarder pour ajouter une propri�t� "Hide" � chaques classes g�rant les noeuds, et donc, mettre � vrai/faux en fonction des crit�res de filtres ... et donc supprimer/ajouter les noeuds en fonction

    A suivre ...

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 164
    Par d�faut
    Citation Envoy� par Mercusyo Voir le message
    Effectivement, j'utilise la notion de "Data" dans les TTreeNode. Je suis en train de regarder pour ajouter une propri�t� "Hide" � chaques classes g�rant les noeuds, et donc, mettre � vrai/faux en fonction des crit�res de filtres ... et donc supprimer/ajouter les noeuds en fonction

    A suivre ...
    J'ai donc mis en pratique le post ci-dessus, cela fonctionne bien et acceptable en temps quand j'ai beaucoup de donn�es, mais ce n'est pas forc�ment le cas ... la plupart du temps, j'ai une liste de donn�es raisonnable et cette technique fonctionne.

    Encore merci,

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Comment stocker une r�f�rence vers un TTreeNode ds un DFM ?
    Par phplive dans le forum Composants VCL
    R�ponses: 1
    Dernier message: 19/07/2005, 12h33
  2. [TTreeNode] Suppression d'un object du champ data
    Par jmdeffet dans le forum Langage
    R�ponses: 2
    Dernier message: 02/06/2005, 12h41
  3. [C#] Form : Quelles m�thodes ? Close, Dispose, Show, Hide
    Par TheSeb dans le forum Windows Forms
    R�ponses: 9
    Dernier message: 30/05/2005, 16h42
  4. Couleur du texte d'un TTreeNode dans un TTreeview
    Par Vulcanos dans le forum Composants VCL
    R�ponses: 5
    Dernier message: 18/02/2005, 18h50
  5. Modifier l'icone d'un TTreeNode sur click
    Par ramseb dans le forum Composants VCL
    R�ponses: 6
    Dernier message: 06/08/2003, 13h55

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