1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
| fn=String::Empty;
textChanged=false;
}
#pragma endregion
private: System::Void копіюватиToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
textBox1->Copy();
}
private: System::Void копіюватиToolStripMenuItem1_Click(System::Object^ sender, System::EventArgs^ e) {
textBox1->Copy();
}
private: System::Void вирізатиToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
textBox1->Cut();
}
private: System::Void вирізатиToolStripMenuItem1_Click(System::Object^ sender, System::EventArgs^ e) {
textBox1->Cut();
}
private: System::Void вставитиToolStripMenuItem1_Click(System::Object^ sender, System::EventArgs^ e) {
textBox1->Paste();
}
private: System::Void вставитиToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
textBox1->Paste();
}
private:
String^ fn; //имя файла
bool textChanged; //true - в текст внесені изменения
private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) {
textChanged=true; //текст измене
}
//Записывает текст в файл
//возвращает 0 или -1, если пользователь
//в окне Сохранить нажмет кнопку Отмена
private: int TextToFile()
{System::Windows::Forms::DialogResult dr;
int r=0;
if(fn == String::Empty)
{ //Это новый документ
//Запросить у пользовтеля имя файла
//Отобразить диалог Сохранить
dr =saveFileDialog1->ShowDialog();
if (dr ==System::Windows::Forms::DialogResult::OK)
{ fn=saveFileDialog1->FileName;
r=0;
}
else
//в окне диалога Сохранить пользователь выбрал Отмена
r=-1;
}
//сохранить файл
if (r==0)
{
try
{ //получим информаци о файле fn
System::IO::FileInfo^ fi=gcnew System::IO::FileInfo(fn);
//поток записи
System::IO::StreamWriter^ sw=fi->CreateText();
sw->Write(textBox1->Text);
sw->Close(); //закрываем поток
textChanged=false;
r=0;
}
catch (System::IO::IOException^ e)
{
MessageBox::Show(e->ToString(),
"MEdit",
MessageBoxButtons::OK,
MessageBoxIcon::Error);
}
}
return r;
}
//Проверяет, есть ли изменения в тексте,и сохраняет текст в файле
//Возвращает 0 или -1, если пользователь
//отказался от выполнения операции (нажал кнопку Отмена)
private: int SaveText()
{System::Windows::Forms::DialogResult dr;
int r;
r=0;
if (textChanged)
{
dr=MessageBox::Show("В текст внесены изменения. Сохранить измененный текст?",
"MEdit",
MessageBoxButtons::YesNoCancel,
MessageBoxIcon::Warning);
switch (dr)
{
case System::Windows::Forms::DialogResult::Yes:
r=TextToFile();
break;
case System::Windows::Forms::DialogResult::No:
r=0;
break;
case System::Windows::Forms::DialogResult::Cancel:
r=-1;
break;
};
}
return r;
}
private: void OpenDocument()
{ System::Windows::Forms::DialogResult dr;
int r;
r=SaveText();
if (r==0)
{
openFileDialog1->FileName=String::Empty;
//Отоброзить диалог Открыть
dr = openFileDialog1->ShowDialog();
if (dr == System::Windows::Forms::DialogResult::OK)
{
fn = openFileDialog1->FileName;
//Отобразить имя файла в заголовке окна
this->Text=fn;
try
{
//Считываем данные из файла
System::IO::StreamReader^ sr=
gcnew System::IO::StreamReader(fn);
textBox1->Text=sr->ReadToEnd();
textBox1->SelectionStart=textBox1->TextLength;
sr->Close();
textChanged=false;
}
catch (System::IO::FileLoadException^ e)
{
MessageBox::Show("Error:\n"+ e->Message,
"MEdit",
MessageBoxButtons::OK,
MessageBoxIcon::Error);
}
}
}
}
private: void SaveDocument()
{int r;
r=SaveText();
if (r==0)
{
this->Text=fn;
textChanged=false;
}
}
private: void NewDocument()
{
int r;
r=SaveText();
if (r==0)
{
this->Text="New Document";
textBox1->Clear();
textChanged=false;
fn = String::Empty;
}
}
private: System::Void відкритиToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
OpenDocument();
}
private: System::Void зберегтиToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
SaveDocument();
}
private: System::Void новийДокументToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
NewDocument();
} |