Sign in to follow this  

[.net] Save and Load treeView nodes using a text file and how to filter data

This topic is 3663 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi I am a newb in Visual C++ Express Edition 2005. I am having trouble of saving treeView nodes into a TEXT file. For details, I will explain below: My application is a company data application. It consists of a treeView and a listView. Nodes of the treeView represent the company name and employee name only. So the treeView looks like this: -ALL -Microsoft -Robert -Tony -IBM -Johny -Apple -Gary It only store like that. The listView display all details of each person above. Company Name | Employee Name | Age |Gender | Address | City | ZIP | Phone ========================================================== Microsoft | Robert | 30 | Male | 1 ABC | Seattle | 64543 | 355135 Microsoft | Tony | 25 | Male | 1 DEF | Seattle | 64543 | 1343141 IBM | Johnny | 44 | Male | 1 XYZ | NY | 1235 | 355135 Apple | Gary | 23 | Male | 1 PQR | LA | 12344 | 363588 So it looks like that. The listView items will be saved to a text file with CSV format which are: Company name,employee name,age,gender,address,city,ZIP,phone So it is like this: Microsoft,Robert,30,Male,1 ABC,Seattle,64543,355135 Microsoft,Tony,25,Male,1 DEF,Seattle,64543,1343141 IBM,Johnny,44,Male,1 XYZ,NY,1235,355135 Apple,Gary,23,Male,1 PQR,LA,12344,363588 1. The PROBLEM is the treeView nodes MUST also saved to this file. How to do that? Or if anybody have ever tried this can I have the code copy? And how to load it when the application started? I have succeeded in saving and loading the listView items. 2. How to do this: If I click the company name on the treeView, for example Microsoft, then the listView will FILTER that ONLY Microsoft and its employee data will be shown up on the listView. If I click the employee name on the treeView, for example Gary, then only Gary's data will be shown up on the listView. If I click the root node (ALL) there is no FILTERING. How to do that? 3. If I delete the data on the listView then the node on the treeView will also be DELETED. I am having problem in searching the nodes of the treeView. I have tried this lines of code from the IDE Help, but it was error. It should have worked. Here is the code : private: void PrintRecursive( TreeNode^ treeNode ) { // Print the node. System:iagnostics:ebug::WriteLine( treeNode->Text ); MessageBox:how( treeNode->Text ); // Print each node recursively. System::Collections::IEnumerator^ myNodes = (safe_cast<System::Collections::IEnumerable^>(treeNode->Nodes))->GetEnumerator(); try { while ( myNodes->MoveNext() ) { TreeNode^ tn = safe_cast<TreeNode^>(myNodes->Current); PrintRecursive( tn ); } } finally { //IDisposable^ disposable = dynamic_cast<System::IDisposable^>(myNodes); //if ( disposable != nullptr ) //disposable->Dispose(); } } // Call the procedure using the TreeView. void CallRecursive( TreeView^ treeView ) { // Print each node recursively. TreeNodeCollection^ nodes = treeView->Nodes; System::Collections::IEnumerator^ myNodes = (safe_cast<System::Collections::IEnumerable^>(nodes))->GetEnumerator(); try { while ( myNodes->MoveNext() ) { TreeNode^ n = safe_cast<TreeNode^>(myNodes->Current); PrintRecursive( n ); } } finally { //IDisposable^ disposable = dynamic_cast<System::IDisposable^>(myNodes); //if ( disposable != nullptr ) // disposable->Dispose(); } } //***End of treeView iteration***// The ERROR was: c:\chris\19november2007-01.40am\assignment191107-0140\Form1.h(235) : error C2039: 'Dispose' : is not a member of 'System::IDisposable' c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : see declaration of 'System::IDisposable' You should invoke the destructor, '~IDisposable' instead The ERROR is at the block : finally { IDisposable^ disposable = dynamic_cast<System::IDisposable^>(myNodes); if ( disposable != nullptr ) disposable->Dispose(); } } I found out that the error was at this block but I didn't know how to fix it. Is it possible that someone fix this for me, please? What does "You should invoke the destructor, '~IDisposable' " mean? And how to do that? Thank you very much.

Share this post


Link to post
Share on other sites
c++/clr requires that you use the destructor instead of Dispose(). Or rather, Dispose technically exists, but c++/clr hides it to be in more in line with c++ I guess.

So I believe to Dispose an object of type "SomeClass":

someObject->~SomeClass();
someObject = nullptr;

Share this post


Link to post
Share on other sites

This topic is 3663 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this