Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Текстовый редактор

Читайте также:
  1. III. СТАТУС РЕДАКЦИИ, ГЛАВНОГО РЕДАКТОРА, ИХ ПОЛНОМОЧИЯ
  2. Алгоритм взаимодействия редактора и сотрудников отдела продвижения
  3. Векторный редактор Adobe Illustrator
  4. Видо-типологический состав информационных изданий, организация их редакторской подготовки
  5. Вікно текстового редактора Word
  6. Выделено редактором.
  7. Г) главным редактором.

Для создания текстового редактора используется RichTextBox и MenuStrip

В Visual Studio для проектов в С++ в пункте File выбираем пункт New Project. В окне Project types выбираем CLR. В CLR выбираем Windows Forms Application. Задаем имя папки проекта и самого проекта.

 

 

В результате создается проект с окном формы Form1.

 

Интерфейс проекта

 

В Toolbox выбираем правой кнопкой мыши RichTextBox. Ставим курсор на поле Form1 и правой кнопкой мыши помещаем RichTextBox на форму. Затем также правой кнопкой мыши выбираем MenuStrip и помещаем на форму. Аналогично помещаем на форму OpenFileDialog и SaveFileDialog.

 

Для того, чтобы иметь возможность открыть файл в форму включается OpenFileDialog.

Для сохранения данных в файле и сохранения изменений в файле в форму включается

SaveFileDialog.

Для выполнения задания, которое заключается в обработке строк, считанных из

выбранного файла и отображенных в окне текстового редактора RichTextBox, включается второй RichTextBox.

Создание структуры меню.

После того, как меню помещено на форму в ее верхней строке появляется окно Type Here, в которое вписываем Файл – заголовок пуктов меню для работы с файлами. Одновременно сбоку и снизу автоматически создаются окна Type Here. В нижнем окне пишем Открыть (файл). Аналогично в нижнее окно под пунктом меню Открыть вписываем Сохранить, а под Сохранить – вписываем Закрыть (файл).

 

 

Создание обработчиков событий.

Можно изменить размер и тип шрифта пункта меню, выбрав в окне Propertes (свойства).

Обработчики событий создаются системой автоматически – надо два раза «кликнуть» правой кнопкой мыши по пункту меню.

Кликнув по пункту Открыть автоматически осуществляется переход в файл Form1.h, где после #pragma endregion создаются следующие обработчики.

#pragma endregion

private:

System::Void открытьToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)

{

}

Кликнув по пункту Save автоматически осуществляется переход в файл Form1.h и создается следующий обработчик события – выбор пункта меню Сохранить.

 

private:

System::Void сохранитьToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

}

Если кликнуть по пункту Закрыть, то выполняется переход в файл Form1.h и создается обработчик события – выбор пункта меню Закрыть.

 

private:

System::Void закрытьToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

}

 

Созданные обработчики используем для выполнения работы с выбранными файлами:

- событие Открыть предназначено для вывода в окно редактора richTextBox1 содержимого выбранного файла; для этого из обработчика вызываем функцию LoadMyFile():

richTextBox1->Clear();//очищаем окно редактора

LoadMyFile();// вызываем функцию загрузки файла в окно редактора

flag = 0;

- событие Сохранить – сохраняет текст из окна редактора в выбранный с помощью SaveFileDialog файл:

SaveMyFile();

flag = 0;

- событие Закрыть – закрывает программу.

Для обеспечения сохранения изменений в тексте, необходимо обеспечить перехват события – TextChanged – текст изменен, это событие связывается в программе с изменением значения переменной flag с 0 на 1 в функции richTextBox1_TextChanged(); если текст был изменен и выполняется попытка закрыть программу, то на экране появляется всплывающее окно Error.

 

 

В обработчике проверяется значение переменной flag и осуществляется выход из программы с сохранением изменений или без сохранения в зависимости от выбора пользователя, который выбирает одну из трех кнопок: Да,Нет, Отмена.

 

private: System::Void закрытьToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)

{

//если текст был изменен, то сохраняем его, иначе - выходим из программы

if(flag)

{

System::Windows::Forms::DialogResult result;

// Отображение MessageBox.

result = MessageBox::Show(this,"file changed.Save?","Error",

MessageBoxButtons::YesNoCancel,MessageBoxIcon::Error);

 

if (result==System::Windows::Forms::DialogResult::Yes)

SaveMyFile();

flag=0;//флаг сбрасывается, чтобы вывод MessageBox не

//повторялся при закрытии программы средствами окна

Application::Exit();//аналогично this->Close()

}

else this->Close();

}

 

 

- событие Работа создается для выполнения конкретных действий по обработке строк текста в окне первого редактора; результат выводится в окно второго редактора; из обработчика этого события вызывается функция working():

void working(void)

{

//функция берет из richTextBox1 i-ю строку и выводит

//во второе окно richTextBox2 строки содержащие подстроку – “ab”

int l=richTextBox1->Lines->Length;

for(int i=0;i<l;i++)

{

String^ s2 = "ab";// подстрока - ab

bool b;

// i-я строка richTextBox1

String ^s1 = richTextBox1->Lines[i];

// если строка s1 содержит подстроку s2, то добавляем эту строку s1 в //richTextBox2 с помощью метода AppendText

// при этом к строке s1 добавляем пробел, а в конец строки добавляем символ //конца строки c помощью метода Concat

if (b = s1->Contains(s2))

richTextBox2->AppendText(String::Concat(String::Concat(" ", s1),"\n"));

}

}

 

MessageBox

Пользователь может создать свой новый экземпляр MessageBox. Для вывода message box (буквально – ящик сообщения) вызывается статический метод класса MessageBox..::.Show. Заголовок, выводимое в окне сообщение, кнопки и иконка определяются соответствующими параметрами метода. В этом окне может быть выведено от одной до трех кнопок. Например, две кнопки – Да, Нет - задаются следующим образом:

MessageBoxButtons buttons = MessageBoxButtons::YesNo;

 

В следующем примере показан вызов MessageBox со следующими параметрами:

- сообщение - "You must enter a name.";

- заголовок - "Name Entry Error";

- кнопки - MessageBoxButtons::OK;

- иконка - MessageBoxIcon::Exclamation.

 

private:

void button1_Click(Object^ sender, System::EventArgs^ e)

{

if (textBox1->Text->Equals(""))

{

MessageBox::Show("You must enter a name.", "Name Entry Error",

MessageBoxButtons::OK, MessageBoxIcon::Exclamation);

}

else

{

// Code to act on the data entered would go here.

}

}

Для выбора действий, соответствующих выбранной кнопке, анализируется значение, которое возвращает метод Show. Возвращемое значение имеет следующее объявление:

System::Windows::Forms::DialogResult result;

 

 

Рисунку соответсвует следующий вызов:

 

result = MessageBox::Show(this,"file changed.Save?","Error",

MessageBoxButtons::YesNoCancel,MessageBoxIcon::Error);

Возвращаемое значение анализируется оператором if:

if (result==System::Windows::Forms::DialogResult::Yes)

SaveMyFile();

Если результат эквивалентен Yes, то вызывается функция SaveMyFile();

 

Объект RichTextBox

Объект формы richTextBox типа ^rich_string

имеет свойство Lines, которое является массивом стрингов. Это видно в окне Properties в строке Lines – String[] Array, как видно на рисунке.

При разработке программы доступ к свойству осуществляется через оператор ->, при этом список свойств может быть выбран в выпадающем окне, как показано на слудующем рисунке:

 

Редактор текста типа RTF работает со строками типа String, который представляет текст, как последовательность символов. В следующй таблице приведены некоторые методы класса String.

Методы

  Название Описание
Compare Перегрузка. Сравнивает два указанных объекта String (objects). public:static int Compare(String^ strA, String^ strB)
Concat Перегрузка. Объединяет одну или более заданных строк (String). public:static String^ Concat(String^ str0, String^ str1)
Contains Возвращает значение, величина которого указывает включает ли строка заданную подстроку или нет. // Пример демонстрирует метод String.Contains() using namespace System;int main(){ String^ s1 = "The quick brown fox jumps over the lazy dog"; String^ s2 = "fox"; bool b; b = s1->Contains(s2); Console::WriteLine("Is the string, s2, in the string, s1?: {0}", b); }
Copy Создает новое значение для String с тем же значение, заданным String. public:static String^ Copy(String^ str)  
CopyTo Копирует заданное число символов начиная с заданной позиции в указанную позицию в массиве символов Unicode. public:void CopyTo(int sourceIndex, array<wchar_t>^ destination, int destinationIndex, int count)  
Equals Overloaded. Determines whether two String objects have the same value. public:virtual bool Equals(String^ value) sealed
IndexOf Возвращает индекс первого вхождения в стринг String одного или более символов в пределах стринга (string). public:int IndexOf(String^ value)
Insert Включает заданную строку String, начиная с указанного индекса. public:String^ Insert(int startIndex, String^ value)  
Join Overloaded. Concatenates a specified separator String between each element of a specified String array, yielding a single concatenated string.
LastIndexOf Overloaded. Reports the index position of the last occurrence of a specified Unicode character or String within this instance.
Normalize Overloaded. Returns a new string whose binary representation is in a particular Unicode normalization form. public: String^ Normalize()
Remove Overloaded. Удаляет заданное количество символов из заданной строки, начиная с заданного номера символа – индекса. public:String^ Remove(int startIndex, int count)
Replace Overloaded. Заменяет все вхождения заданного Unicode символа или стринга String в примере другим заданным символом или стрингом. public:String^ Replace(wchar_t oldChar, wchar_t newChar)public:String^ Replace(String^ oldValue, String^ newValue)
Substring Overloaded. Возвращает подстроку, начиная с указанной позиции. public: String^ Substring(int startIndex)
ToCharArray Overloaded. Копирует символы из строки в массив Unicode символов. public:array<wchar_t>^ ToCharArray()   public:array<wchar_t>^ ToCharArray(int startIndex, int length)
ToLower Overloaded. Возвращает копию стринга String, в которой все символы преобразованны в строчные – lowercase.
ToString Overloaded. Converts the value of this instance to a String. public:virtual String^ ToString() override  
ToUpper Overloaded. Возвращает стринг String, в котором символы преобразованы в заглавные - uppercase.

 


Дата добавления: 2015-10-21; просмотров: 97 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Глава 4. Рисунки| Свойства

mybiblioteka.su - 2015-2024 год. (0.012 сек.)