CTreeCtrl



  • Weiss jemand ob es bei einem TreeControl (Dialog basiert - Mfc - Class:CTreeCtrl) möglich ist ihn gleich mit allen subtrees anzuzeigen ?
    oder anders: derzeit muss ich noch über die +Buttons alle childs und subtrees öffnen bzw. anzeigen lassen, und das würde ich gerne schon am anfang haben.
    das von hand öffnen kostet zuviel zeit.ich hoffe dazu kann jemand was sagen.
    zumindest bei den fenster einstellungen habe ich nichts gefunden.
    danke im voraus.



  • Hallo !

    Mit Expand(...) kannst du einen Knoten aufklappen.
    Ich habe hier gerade eine Methode, die mir einen ganzen Baum aufklappt (musst nur beim ersten Aufruf den Root-Knoten übergeben):

    void COrdnen::BaumAufklappen(HTREEITEM TreeItem)
    {
        m_Tree_1.Expand(TreeItem, TVE_EXPAND);
    
        if(m_Tree_1.ItemHasChildren(TreeItem) != 0)
        {
            TreeItem = m_Tree_1.GetChildItem(TreeItem);
    
            while(TreeItem != NULL)
            {
                BaumAufklappen(TreeItem);       // wow, rekursiv !!!
                TreeItem = m_Tree_1.GetNextSiblingItem(TreeItem);
            }
        }
    }
    

    Tschüss



  • nich schlecht die function.RESPEKT !
    hilft mir sogar insoweit super da mein tree rekursiv erstellt wird.
    das mit expand hatte ich denn auch rausgefunden, nur böse probs weil ich erstens mit dem syntax nich klar kam, und zweitens die root nich so wirklich greifbar war (rekursion !;-))
    also denn danke nochmal !



  • Oder kürzer:

    void COrdnen::BaumAufklappen(HTREEITEM TreeItem)
    {
      m_Tree_1.Expand(TreeItem, TVE_EXPAND);
      for( TreeItem=m_Tree_1.GetChildItem(TreeItem); TreeItem; TreeItem=m_Tree_1.GetNextSiblingItem(TreeItem))
        BaumAufklappen(TreeItem);       // wow, rekursiv !!!
    }
    

    Nachteilig hieran ist allerdings, dass er von aussen nach innen aufklappt, wenn man also SetRedraw nicht auf FALSE gestellt hat, sieht man, wie sich der Baum iterativ aufklappt. Günstiger ist es, von innen nach aussen, weil dann erst der Baum angezeigt wird, wenn die inneren Zweige schon expandiert sind.

    void COrdnen::BaumAufklappen(HTREEITEM hti)
    {
      for( hti=m_Tree_1.GetChildItem( hti); hti; hti=m_Tree_1.GetNextSiblingItem( hti))
        BaumAufklappen( hti);       // wow, rekursiv !!!
      m_Tree_1.Expand( hti, TVE_EXPAND);
    }
    

    [ Dieser Beitrag wurde am 02.10.2002 um 15:18 Uhr von RenéG editiert. ]


Anmelden zum Antworten