You are on page 1of 3

OpenDialog ir SaveDialog komponentai Microsoft Visual C++ 2008 Express Edition aplinkoje Projekto krimas

Sukuriamas programos su grafine vartotojo ssaja projektas (CLR), kuris pavadinamas DemoDialogs. Programos formos langas Form1.h [Design] papildomas komponentais i komponent palets ToolBox: OpenFileDialog ir SaveFileDialog (i Dialogs) RichTextBox (i Common Controls) MenuStrip (i Menus & Toolbars) Komponentai openFileDialog1 ir saveFileDialog1 programos vykdymo pradioje yra nematomi. Jie ikvieiami tik esant poreikiui duomen ir rezutat fail vardams pasirinkti. Komponentas richTextBox1 skirtas pageidaujamo failo turiniui parodyti programos lange. Meniu menuStrip1 bus naudojamas programos valdymui. Meniu papildomas mygtukais (punktais):
Atverti fail ... Isaugoti fail ... ------------- (Skyrimo linija) Baigti

Pirmieji du meniu punktai skirti fail vardams pasirinkti programos vykdymo metu. Meniu punktas Baigti skirtas baigti darb su programa. Pakeistos komponent savybs pateiktos 1 lentelje. Sukurtas programos langas pavaizduotas 1 paveiksle. 1 lentel. Pakeistos programos komponent savybs
Komponentas Form1 richTextBox1 Savyb Text Size Font Size Reikm Demo OpenFile & SaveFile Dialogs 630; 300 Courer New, 10 618; 237

1 pav. Sukurtas programos langas 1

Programos raymas meniu mygtuk paspaudimo (Click) veiksmams


Pagrindinis programos tikslas yra pademonstruoti, kaip programos darbo metu galima pasirinkti duomen ir rezultat fail vardus panaudojant dialogo organizavimo komponentus openFileDialog1 ir saveFileDialog1. Microsoft Visual C++ Express Edition aplinkoje fail vardai yra eiluts String ^ tipo, o fail vardai, kurie naudojami apraant srautus (ifstream, ofstream) yra char[] tipo. Norint pasinaudoti i aplinkos gautais fail vardais reikalingos tip konvertavimo priemons. String ^ tipo eilutei konvertuoti string tipo eilut naudojama funkcija StringTostring().
// Konvertuoja eilut s (String ^) os (string) void StringTostring(String ^ s, string & os) { using namespace Runtime::InteropServices; const char* chars = (const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer(); os = chars; Marshal::FreeHGlobal(IntPtr((void*)chars)); }

Toliau string tipo eilut galima nesunkiai konvertuoti char[] tipo eilut pasinaudojant string klass metodu c_str(). Programos meniu mygtuk Atverti fail ... ir Isaugoti fail ... paspaudimo (vykio Click) atliekami veiksmai:
//-------------------------------------------------------------------// Mygtuko "Atverti fail..." atliekami veiksmai private: System::Void atvertiFailToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { // Inicializuoja openFileDialog vaizd openFileDialog1->DefaultExt = ".txt"; openFileDialog1->Filter = "TXT failai|*.txt"; // Patikrina, ar vartotojas pasirinko fail i OpenFileDialog? if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK && openFileDialog1->FileName->Length > 0) { // Iveda failo turin RichTextBox String^ dfv; // duomen failo vardas (String ^) dfv = openFileDialog1->FileName; richTextBox1->LoadFile(dfv, RichTextBoxStreamType::PlainText); // Duomen failo vardas dfv (Sting ^) konvertuojamas dfvs (string) string dfvs; // duomen failo vardas (string) StringTostring(dfv, dfvs); // Atliekami veiksmai su failu dfvs (pvz.: duomen skaitymas) // ... }

} //-------------------------------------------------------------------// Mygtuko "Isaugoti fail..." atliekami veiksmai private: System::Void isaugotiFailToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { // Inicializuoja saveFileDialog vaizd saveFileDialog1->DefaultExt = ".txt"; saveFileDialog1->Filter = "TXT failai|*.txt"; // Patikrina, ar vartotojas pasirinko fail i SaveFileDialog? if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK && saveFileDialog1->FileName->Length > 0) { String^ rfv; // rezultat failo vardas (String ^)

} } //--------------------------------------------------------------------

rfv = saveFileDialog1->FileName; // Rezultat failo vardas rfv (Sting ^) konvertuojamas rfvs (string) string rfvs; // rezultat failo vardas (string) StringTostring(rfv, rfvs); // Sukuriamas tuias rezultat failas ofstream fr(rfvs.c_str()); fr.close(); // Atliekami veiksmai su failu rfvs (pvz.: rezultat spausdinimas) // ...

Meniu mygtuko Baigti paspaudimo (vykio Click) atliekamas veiksmas:


//-------------------------------------------------------------------// Mygtuko "Baigti" atliekamas veiksmas private: System::Void baigtiToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { Close(); } //--------------------------------------------------------------------

Vykdomos programos langas su pasirinktu paios programos sukurtu failu Readme.txt:

You might also like