TreeView Baum durchsuchen, ZeitPause

Abgesehen von Endurions Anmerkung: Es könnte auch sein, dass GetFirstVisible... usw. eventuell kollabierte Items ignoriert.

Schreib dir mal eine Routine, die (möglicherweise rekursiv) durch den ganzen Baum iteriert, beginnend beim Root-Item. Gib jedes Item eingerückt aus. Wenn das fehlerfrei klappt, kannst du auch auf diese Weise zum Suchen durch den Baum iterieren.

Ich würde dir einen entsprechenden Codeschnipsel zur Verfügung stellen, aber ich habe das immer mit MFC gemacht und keine Zeit, es zu ändern. Wenn du trotzdem interessiert bist (der Unterschied ist nicht sooo gross), kann ich ja mal was raussuchen.
 
Ich habe hier etwas gefunden. Allerdings C++-typisch als Methoden einer selbstgebauten Tree-Klasse. Sollte aber nicht zu knifflig sein, es mit normalen Funktionen zu tun:
Code:
HTREEITEM CEinTreeCtrl::GetAnyNextItem( HTREEITEM hItem )
{
  HTREEITEM hti = NULL;

  if ( ItemHasChildren(hItem) )
    hti = GetChildItem(hItem);

  if (hti == NULL)
  {
    while ( ( hti = GetNextSiblingItem(hItem) ) == NULL ) 
    {
	    if ( ( hItem = GetParentItem(hItem) ) == NULL )
        return NULL;
	  }
  }
  return hti;
}

HTREEITEM CEinTreeCtrl::FindItemByItemtext(  const CString& text )
{
  HTREEITEM hItem = GetRootItem();

  for ( ; hItem != NULL; hItem = GetAnyNextItem( hItem ) )
  {
    if ( text == GetItemText( hItem ) )
    {
      return hItem;
    }
  }

  //- nicht gefunden
  return NULL;
}
Habe es in dieser Form nicht kompiliert -- es können Fehler drin sein.
 

Neue Beiträge

Zurück