•
•
•
•
What is DaniWeb IT Discussion Community?
You're currently browsing the C++ section within the Software Development category of DaniWeb, a massive community of 455,964 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 3,607 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our C++ advertiser: Programming Forums
Views: 443 | Replies: 0
![]() |
•
•
Join Date: Nov 2007
Posts: 3
Reputation:
Rep Power: 0
Solved Threads: 0
Gets all information in listView into a binary file/String variables/textBox in VC++
#1
Nov 18th, 2007
Hi I am new in Visual C++ and I want to know how to get all the
> information in the listView to textBox/String
> variable/ to a binary file /Serialization maybe?
>
> So if on the listView is consists of:
>
> Company | Name | Address | ZIP
> ===========================================
> IBM | Chris | DEF | 62646
> -------------------------------------------
> Yahoo! | John | XYZ | 23452
>
> the purpose is how to get all the information above to
> String variables / textBox? I need to show the
> information on a textBox so that they would be able to
> be edited. So the flow is like below:
> When I select IBM, Chris, DEF and 62646 line and then
> click Edit_Process, the form with a company text box,
> nama textbox, address textbox and ZIP textbox will be
> shown and each textbox will be filled with :
>
> Company textbox : IBM
> Name textbox : Chris
> Address textbox : DEF
> ZIP textbox : 62646
>
> The users are able to make a necessary change they
> desired. If they want to change name then they focused
> on name textbox and change Chris with Jim for example.
> After that they click button Save to save the changes.
>
> How to do that? Or is there any facilities to edit
> listView items in place?
>
I also don't know how to save/serialize
> nodes in the treeView? It doesn't matter if it using
> manual savings / serialize, because the purpose is
> to save the last state of the treeView to a binary file / any file when the form is
> closed and to load the saved file when the form is loaded.
Here is my effort to serialize the node of a treeView but it did not work.
> Thank you very much.
> information in the listView to textBox/String
> variable/ to a binary file /Serialization maybe?
>
> So if on the listView is consists of:
>
> Company | Name | Address | ZIP
> ===========================================
> IBM | Chris | DEF | 62646
> -------------------------------------------
> Yahoo! | John | XYZ | 23452
>
> the purpose is how to get all the information above to
> String variables / textBox? I need to show the
> information on a textBox so that they would be able to
> be edited. So the flow is like below:
> When I select IBM, Chris, DEF and 62646 line and then
> click Edit_Process, the form with a company text box,
> nama textbox, address textbox and ZIP textbox will be
> shown and each textbox will be filled with :
>
> Company textbox : IBM
> Name textbox : Chris
> Address textbox : DEF
> ZIP textbox : 62646
>
> The users are able to make a necessary change they
> desired. If they want to change name then they focused
> on name textbox and change Chris with Jim for example.
> After that they click button Save to save the changes.
>
> How to do that? Or is there any facilities to edit
> listView items in place?
>
I also don't know how to save/serialize
> nodes in the treeView? It doesn't matter if it using
> manual savings / serialize, because the purpose is
> to save the last state of the treeView to a binary file / any file when the form is
> closed and to load the saved file when the form is loaded.
Here is my effort to serialize the node of a treeView but it did not work.
c++ Syntax (Toggle Plain Text)
#pragma once //addition to use Serialization #using <System.Runtime.Serialization.Formatters.Soap.dll> //#using <System.Runtime.Serialization.ISerializable.GetObjectData> namespace treeViewSerialization { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; //addition to serialize Nodes// using namespace System::IO; using namespace System::Runtime::Serialization; using namespace System::Runtime::Serialization::Formatters::Soap; //using namespace System::Runtime::Serialization::Formatters::Soap; /// <summary> /// Summary for Form1 /// /// WARNING: If you change the name of this class, you will need to change the /// 'Resource File Name' property for the managed resource compiler tool /// associated with all .resx files this class depends on. Otherwise, /// the designers will not be able to interact properly with localized /// resources associated with this form. /// </summary> //..ref class Serializable treeView [Serializable] public ref class SerializableTreeView : TreeView, ISerializable { public: SerializableTreeView() : TreeView() { } public: SerializableTreeView(SerializationInfo^ info, StreamingContext^ context) : TreeView() { SerializationInfoEnumerator^ infoEnumerator = info->GetEnumerator(); while (infoEnumerator->MoveNext()) { System::Windows::Forms::TreeNode^ node = (System::Windows::Forms::TreeNode^)info->GetValue (infoEnumerator->Name, infoEnumerator->ObjectType); if (node != nullptr) { Nodes->Add(node); } } } public: void virtual GetObjectData(SerializationInfo^ info, StreamingContext context) { for each(System::Windows::Forms::TreeNode^ node in this->Nodes) { // info->AddValue(node->FullPath, node); System::Guid guid = System::Guid::NewGuid(); info->AddValue(guid.ToString(),node); } } /// <summary> /// Serialize all the nodes of this tree to the stream provided, using the formatter provided. /// </summary> /// <param name="stream">The stream to serialize to.</param> /// <param name="formatter">The formatter used to serialize.</param> public: void Serialize(Stream^ stream, IFormatter^ formatter) { formatter->Serialize(stream, this); } /// <summary> /// Recreate this tree from a serialized version. /// </summary> /// <param name="stream">the stream that contains the serialized tree.</param> /// <param name="formatter">the formatter used to desrialize the stream.</param> public: void Deserialize(Stream^ stream, IFormatter^ formatter) { // Clear our tree: this->Nodes->Clear(); SerializableTreeView^ temp = (SerializableTreeView^ )formatter->Deserialize(stream); if (temp != nullptr) { //copy the nodes from the temp to our tree: for each(System::Windows::Forms::TreeNode^ node in temp->Nodes) { this->Nodes->Add((System::Windows::Forms::TreeNode^)node->Clone()); } } } private: System::Void InitializeComponent() { this->listView1 = (gcnew System::Windows::Forms::ListView()); this->SuspendLayout(); // // listView1 // this->listView1->Location = System::Drawing::Point(0, 0); this->listView1->Name = L"listView1"; this->listView1->Size = System::Drawing::Size(121, 97); this->listView1->TabIndex = 0; this->listView1->UseCompatibleStateImageBehavior = false; this->ResumeLayout(false); } }; //} //..ref class Serializable tree View public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: Add the constructor code here // } protected: /// <summary> /// Clean up any resources being used. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::TreeView^ treeView1; private: System::Windows::Forms::Button^ button1; private: System::Windows::Forms::Button^ button2; private: System::Windows::Forms::TextBox^ textBox1; private: System::Windows::Forms::Label^ label1; protected: private: /// <summary> /// Required designer variable. /// </summary> System::ComponentModel::Container ^components; // private: void ShowNodes(void){ //control tampilan listView baik pada saat form di-load dan setelah data di-update. SoapFormatter ^bcrSoap = gcnew SoapFormatter(); String ^strFilename = "TreeNode.nod"; if( File::Exists(strFilename) ) { MessageBox::Show(strFilename); FileStream ^bcrStream = gcnew FileStream(strFilename, FileMode::Open, FileAccess::Read, FileShare::Read); //disini Deserialize ArrayList ^lstEmpl = dynamic_cast<ArrayList^>(bcrSoap->Deserialize(bcrStream)); bcrStream->Close(); //Employee^ empl; //bersihkan isi listView untuk di-update tampilannya. //lvwEmployees->Items->Clear(); TreeNodeCollection^ tn = this->treeView1->Nodes; tn->GetEnumerator(); System::Collections::IEnumerator^ myEnum = lstEmpl->GetEnumerator(); while (myEnum->MoveNext()) { TreeNode^ tnc = safe_cast<TreeNode^>(myEnum->Current); treeView1->Nodes->Add(tnc); } } } //end of void ShowNodes() // #pragma region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> void InitializeComponent(void) { this->treeView1 = (gcnew System::Windows::Forms::TreeView()); this->button1 = (gcnew System::Windows::Forms::Button()); this->button2 = (gcnew System::Windows::Forms::Button()); this->textBox1 = (gcnew System::Windows::Forms::TextBox()); this->label1 = (gcnew System::Windows::Forms::Label()); this->SuspendLayout(); this->treeView1->Location = System::Drawing::Point(2, 3); this->treeView1->Name = L"treeView1"; this->treeView1->Size = System::Drawing::Size(247, 447); this->treeView1->TabIndex = 0; this->button1->Location = System::Drawing::Point(332, 53); this->button1->Name = L"button1"; this->button1->Size = System::Drawing::Size(75, 23); this->button1->TabIndex = 1; this->button1->Text = L"Add Node"; this->button1->UseVisualStyleBackColor = true; this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click_1); this->button2->Location = System::Drawing::Point(413, 53); this->button2->Name = L"button2"; this->button2->Size = System::Drawing::Size(75, 23); this->button2->TabIndex = 2; this->button2->Text = L"Delete Node"; this->button2->UseVisualStyleBackColor = true; this->textBox1->Location = System::Drawing::Point(332, 9); this->textBox1->Name = L"textBox1"; this->textBox1->Size = System::Drawing::Size(233, 20); this->textBox1->TabIndex = 3; this->label1->AutoSize = true; this->label1->Location = System::Drawing::Point(255, 12); this->label1->Name = L"label1"; this->label1->Size = System::Drawing::Size(71, 13); this->label1->TabIndex = 4; this->label1->Text = L"Node To Add"; this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(724, 462); this->Controls->Add(this->label1); this->Controls->Add(this->textBox1); this->Controls->Add(this->button2); this->Controls->Add(this->button1); this->Controls->Add(this->treeView1); this->Name = L"Form1"; this->Text = L"Form1"; this->FormClosed += gcnew System::Windows::Forms::FormClosedEventHandler(this, &Form1::Form1_FormClosed); this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load); this->ResumeLayout(false); this->PerformLayout(); } #pragma endregion private: System::Void button1_Click_1(System::Object^ sender, System::EventArgs^ e) { TreeNode ^ newNode = gcnew TreeNode(textBox1->Text); treeView1->Nodes->Add(newNode); //TreeNode ^ tn = treeView1->SelectedNode; //treeView1->BeginUpdate(); //tn->Nodes->Add(textBox1->Text); //treeView1->EndUpdate(); treeView1->Refresh(); treeView1->ExpandAll(); //if (tn->Level == 0) { // treeView1->BeginUpdate(); // tn->Nodes->Add(textBox1->Text); // treeView1->EndUpdate(); // treeView1->Refresh(); // treeView1->ExpandAll(); //} //else {//level 1 / level 2 : parent / child // MessageBox::Show("Penambahan cabang hanya bisa pada root node.","Address Book", MessageBoxButtons::OK, MessageBoxIcon::Information); // return; // } //level 1 / level 2 } private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { //Begin of Deserialize String ^path = "TreeNode.nod"; if (File::Exists(path)) { FileStream^ stream = gcnew FileStream(path, FileMode::Open, FileAccess::Read); SoapFormatter^ formatter = gcnew Formatters::Soap::SoapFormatter(); //BinaryFormatter^ formatter = gcnew BinaryFormatter(); SerializableTreeView^ srtv = gcnew SerializableTreeView; srtv->Deserialize(stream, formatter); stream->Close(); ShowNodes(); } //End of Deserialize } private: System::Void Form1_FormClosed(System::Object^ sender, System::Windows::Forms::FormClosedEventArgs^ e) { //Begin of Serialize String ^path = "TreeNodes.nod"; if (File::Exists(path)){ File::Delete(path); } //coba buat class baru untuk menampung TreeNode / TreeNodeCollection FileStream^ stream = gcnew FileStream(path, FileMode::CreateNew, FileAccess::Write); //BinaryFormatter^ formatter = gcnew BinaryFormatter(); SoapFormatter^ formatter = gcnew Formatters::Soap::SoapFormatter(); SerializableTreeView^ srtv = gcnew SerializableTreeView; srtv->Serialize(stream, formatter); stream->Close(); ShowNodes(); //End of Serialize } }; }
Last edited by Ancient Dragon : Nov 18th, 2007 at 2:24 pm. Reason: add code tags and remove smilies
![]() |
•
•
•
•
•
•
•
•
DaniWeb C++ Marketplace
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
Similar Threads
- Binary File Parser (C++)
- Dynamic array (C++)
- Read a string from a binary file into a C or C++ string (C++)
- File Mainipulation (C++)
- Binary File IO (C#)
Other Threads in the C++ Forum
- Previous Thread: Entery point inside a Static Library
- Next Thread: Return function


Linear Mode