TreeView - alle Items und Subitems speichern?
-
Hallöö!
Ich weiß nicht, wie ich das anstellen soll. Ich möchte alle Items und Subitems speichern und nachher wieder laden können. Habter Ahnung, wie man das anstellen kann?MfG
Christoph Kleiner
-
Üblicherweise wird ein TreeCtrl nur zum Anzeigen der Daten benutzt.
Man speichert also seine Daten und baut aus diesen Daten den Baum auf.Ansonsten wäre Rekursion das einfachste.
-
Jo... wie würdest Du vorgehen? Ich weiß nicht, wie ich alle items und subitems abspeichern soll, dass ich nachher auch wieder laden kann... wie weiß ich wo welches item nachher hingehört ....
-
root Item1 SubItem1 SubSubItem1 Item2 SubItem1 SubItem2
usw.
-
jo klar... aber so ein bisschen konkretere bräuchte ich das... wie genau speichere ich es... bzw. wie stelle ich es an, dass ich alle items durch gehe z.b in einer while schleife?
while(nextitem)
speichern!hmmmm
ich bekomme dann ROOT1 und speichere es
ROOT1
dann hat ROOT1 noch subitems... wie speichere ich diese dann? kann ich erkennen, ob es ein subitem ist oder... da komme ich nicht weiter...
-
selbst tüfteln geht über fragen und macht dabei noch viel mehr spaß
-
ich tüftel doch schon, nur wie soll ich die abspeichern in welcher sinnvollen reihenfolge dass ich sie auch wieder einfach "laden" kann und in das treeview einsetzen kann
danke schonmal für die bisherige hilfe falls ihr ab jetzt nicht mehr helfen wollt...chris
-
Ist mit MFC-Klassen geschrieben (Hatte keine Lust auf SendMessage...).
Das laden solltest ja dann hinkriegen...CString makeTab(int count) { CString tab; memset(tab.GetBuffer(count),'\t',count); tab.ReleaseBuffer(); return tab; } void saveTree(CTreeCtrl& tree,HTREEITEM item,CStdioFile& file,int& level) { while(item) { CString text(tree.GetItemText(item)); file.WriteString(makeTab(level) + text + "\r\n"); ++level; saveTree(tree,tree.GetChildItem(item),file,level); --level; item = tree.GetNextItem(item,TVGN_NEXT); } } void CTestDlg::OnButton1() { CStdioFile file("c:\\tree.txt",CFile::modeCreate | CFile::modeWrite); int level = 0; saveTree(m_tree,m_tree.GetRootItem(),file,level); }
-
DANKE damit kann ich echt was anfangen. vielen danke mal!!!