43
Лабораторная работа № 7.
Многодокументный интерфейс.
Цель работы:
7.Изучить построение приложений с многодокументным интерфейсом.
8.Создать многодокументное приложение.
Многодокументные приложения содержат несколько окон, каждое из которых используется для представления отдельного документа. Главное окно служит контейнером для подчиненных окон. Все подчиненные окна – потомки – выводятся внутри родительского окна. Основная идея такой архитектуры – дать пользователю возможность одновременно работать с несколькими документами.
Каждое окно-потомок в архитектуре многодокументного интерфейса является самостоятельным окном и позволяет осуществлять сложные алгоритмы обработки информации. Заголовок окна-потомка содержит обычно название текущего документа, чтобы различать документы, если одновременно открыто несколько документов. Окна потомков могут разделять окно родителя, чтобы одновременно выводиться в его клиентской области.
Создание многодокументного оконного приложения
22.Запустите Visual Studio.
23.Выберите пункт меню File->New->Project->Visual C++.
24.В списке шаблонов выберите Windows Forms Application. Этотпункт позволяет создавать приложения на основе каркаса Windows Forms.
25.В поле Имя(Name) введите имя проекта, например Test. 26.Откроется окно проекта Test со вкладкой Form1.h. В этом окне ото-
бражается дизайн основного окна приложения.
27.Добавьте элемент управления MenuStrip (Полоса меню) в верхнюю часть формы Form1. Элемент управления MenuStrip присоединится к верхней части формы.
28.Установите свойство формы IsMdiContainer в значение true. Обратите внимание, как изменяется внешний вид формы.
29.Добавьте к классу формы поле для подсчета потомков m_ChildCount. 30.Добавьте новую форму в проект. На имени проекта Test в окне браузера нажмите правой кнопкой и выберите в меню Add->New Item- >Windows Form. В поле Имя (Name) задайте имя новой форме, на-
пример Child.
31.В главной форме создайте пункты меню File и Windows, в меню File
пункты New и Exit, в меню Windows пункты Horizontal, Cascade и Vertical.
32.Дважды щелкните на пункте меню New, чтобы открыть Редактор кода.
44
33.Добавьте следующий код в обработку пункта меню New: m_ChildCount++;
Test::Child^ myChild = gcnew Test::Child; myChild->Text = "Child Form " + m_ChildCount; myChild->MdiParent = this;
myChild->Show();
34. Нажмите F5 для запуска приложения.
35.При появлении формы на экране, выберите в меню пункт New несколько раз и убедитесь, что создаются подчиненные формы.
36.Закройте форму для возвращения в Visual Studio.
37.Создайте обработчики для пунктов меню Windows.
38.Добавьте следующий код в обработку меню Windows: private: System::Void verticalToolStripMenuItem_Click(System::Object^ sender,
System::EventArgs^ e) { LayoutMdi(MdiLayout::TileVertical);
}
private: System::Void horizontalToolStripMenuItem_Click(System::Object^ sender,
System::EventArgs^ e) { LayoutMdi(MdiLayout::TileHorizontal);
}
private: System::Void cascadeToolStripMenuItem_Click(System::Object^ sender,
System::EventArgs^ e) { LayoutMdi(MdiLayout::Cascade);
}
39.Нажмите F5 для запуска приложения.
40.При появлении формы на экране, выберите в меню пункт New несколько раз и убедитесь, что создаются подчиненные формы.
41.Выберите один из пунктов меню Windows, и убедитесь, что подчиненные формы располагаются в главном окне согласно выбранному способу упорядочивания.
Диалоговое окно
1.Перейдите в окно браузера проекта.
2.Выберите проект Test и нажмите на нем правой кнопкой мыши.
3.Выполните последовательность Add->New Item->Windows Form. В поле Имя (Name) задайте имя новой форме, например Dialog.
4.Выберите справа вкладку Toolbox (Панель инструментов).
5.Добавьте элементы управления TextBox (Поле ввода) и Button (Кнопка) в любое место формы Dialog.
6.Нажмите на кнопке правой клавишей мыши. Выберите в меню пункт Свойства (Properties).
7.В поле Текст (Text) введите имя кнопки Input.
8.Дважды щелкните по кнопке. Откроется окно редактора кода с обра-
ботчиком нажатия кнопки:
private: System::Void button1_Click(System::Object^ sender,
45
System::EventArgs^ e) {
}
9. Вставьте в обработчик следующий код: this->DialogResult =
System::Windows::Forms::DialogResult::OK;
10. Перейдите к коду формы Form1. Добавьте в меню пункт Name и измените обработчик этого пункта меню следующим образом:
Test::Dialog^ dlg = gcnew Test::Dialog; if (dlg->ShowDialog() ==
System::Windows::Forms::DialogResult::OK)
{
this->Text = dlg->textBox1->Text;
}
12.Нажмите F5 для запуска приложения.
13.При появлении формы на экране, нажмите на кнопку формы. Введите в появившемся диалоговом окне новое название формы и нажмите кнопку Input.
14.Убедитесь, что исходная форма изменила свое название. 15.Закройте форму для возвращения в Visual Studio.
Задание для самостоятельной работы.
Создайте визуальное приложение, позволяющее открывать несколько текстовых документов, редактировать их и сохранять результаты в файлы. Имена файлов должны отображаться в заголовке окна соответствующего документу.
46
Лабораторная работа № 8.
Приложение для обработки текста. Интернационализация приложения.
Цель работы:
9.Создать приложение, имитирующее простейший текстовый редак-
тор.
10.Изучить основные средства работы с текстом.
11.Разработать файлы интернационализации приложения.
Создание базового оконного приложения
42.Запустите Visual Studio.
43.Выберите пункт меню File->New->Project->Visual C++->CLR. В каче-
стве названия проекта введите MiniWord.
44.Создайте меню управления приложением с помощью панели инструментов. Поместите на форму компонент ToolStrip (Панель инструментов).
45.Сформируйте несколько групп кнопок на панели инструментов (Open и Close для работы с файлами, L, R, С и J для выравнивания текста, Cut, Copy, Paste для копирования, Font и Color для смены цвета и шрифта текста).
46.Поместите на форму компонент RichTextBox (текстовый редактор). Установите для него свойство Dock in parent Container (Состыковать с родительским контейнером).
47.Нажмите F5 для запуска приложения. Появится базовое окно приложения (рис. 1)
Рисунок 1- Окно приложения, сгенерированное по умолчанию. 48.При появлении формы на экране, нажмите на кнопку закрытия формы
для возвращения в Visual Studio.
47
Работа со стандартными диалогами
4.Создайте заготовку для обработчика события нажатия кнопки Загрузить файл (Load).
5.Добавьте в него следующий код:
OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog; openFileDialog1->InitialDirectory = "c:\\"; openFileDialog1->Filter =
"txt files (*.txt)|*.txt|All files (*.*)|*.*"; openFileDialog1->FilterIndex = 2; openFileDialog1->RestoreDirectory = true;
if ( openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK )
{
this->richTextBox1->LoadFile(openFileDialog1->FileName, RichTextBoxStreamType::PlainText);
}
6.Данный код использует стандартный диалог открытия файла для ввода и последующего чтения файла с диска. Вначале создается диалог и устанавливаются его атрибуты – начальная папка и фильтр имен файлов. Затем вызывается функция ShowDialog, которая запускает процедуру диалога с пользователем. После выбора файла он считывается и хранящийся в нем текст помещается в окно редактора.
7.Создайте аналогичный обработчик для кнопки Сохранить файл
(Save). Добавьте в него код:
Stream^ myStream;
SaveFileDialog^ saveFileDialog1 = gcnew SaveFileDialog; saveFileDialog1->InitialDirectory = "c:\\"; saveFileDialog1->Filter =
"txt files (*.txt)|*.txt|All files (*.*)|*.*"; saveFileDialog1->FilterIndex = 2; saveFileDialog1->RestoreDirectory = true;
if ( saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK )
{
this->richTextBox1->SaveFile(saveFileDialog1->FileName, RichTextBoxStreamType::PlainText);
}
8.Данный код использует стандартный диалог сохранения файла. Вначале создается диалог и устанавливаются его атрибуты – начальная папка и фильтр имен файлов. Затем вызывается функция ShowDialog, которая запускает процедуру диалога с пользователем. После выбора файла содержимое окна редактора сохраняется в выбранном файле.
9.Аналогичным образом добавляются стандартные диалоги для выбора шрифта и цвета шрифта.
Выравнивание текста
10.Создайте обработчик для кнопки Выравнивание по центру (С). Добавьте в него код:
this->richTextBox1->SelectionAlignment =
48
System::Windows::Forms::HorizontalAlignment::Center;
11. Данный участок кода выравнивает выбранный в редакторе текст по центру строки. Чтобы выровнять текст по правому или левому краям, достаточно создать обработчики, меняющие свойство
this->richTextBox1->SelectionAlignment на значения
System::Windows::Forms::HorizontalAlignment::Left или System::Windows::Forms::HorizontalAlignment::Right.
Работа с буфером обмена
12.Создайте обработчики нажатия кнопок для работы с буфером обмена. 13.Добавьте в них следующий код:
private: System::Void toolStripButton9_Click( System::Object^ sender, System::EventArgs^ e) { richTextBox1->Cut();
}
private: System::Void toolStripButton11_Click( System::Object^ sender, System::EventArgs^ e) { richTextBox1->Paste();
}
private: System::Void toolStripButton10_Click( System::Object^ sender, System::EventArgs^ e) { richTextBox1->Copy();
}
Локализация приложения
14.Установите свойство Localizable формы Form1 в значение True.
15.Выберите язык локализации, который необходимо реализовать в форме (рис. 2).
Рисунок 2 – Форма, локализованная под английский язык.
49
16.В настоящий момент форма уже локализована под английский язык. Выберите русский язык и смените наименования кнопок по-русски
(рис. 3).
Рисунок 3 – Форма, локализованная под русский язык. 17.Добавьте кнопку переключения языка с выпадающим меню (Drop-
DownButton) и сделайте локализацию для нее (рис. 4).
Рисунок 4 – Кнопка переключения языка.
18.Строки локализации сохраняются в специальных файлах ресурсов, которые добавляются в дерево проекта.
19.Создайте обработчик для переключателя русского языка. Добавьте в него следующий код:
System::Globalization::CultureInfo^ culture = gcnew System::Globalization::CultureInfo("ru-RU");
System::Threading::Thread::CurrentThread->CurrentCulture = culture;
50
apply_Culture(culture);
Здесь создается новый объект локализации для русского языка, устанавливается локализация для текущего потока и вызывается функция обновления ресурсов.
20.Создайте в файле кода для формы Form1.h следующую функцию: private: System::Void apply_Culture(System::Globalization::CultureInfo^ culture){
System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager (Form1::typeid)); resources->ApplyResources(this->toolStripButton1, L"toolStripButton1", culture); resources->ApplyResources(this->toolStripButton2, L"toolStripButton2", culture); resources->ApplyResources(this->toolStripButton3, L"toolStripButton3", culture); resources->ApplyResources(this->toolStripButton4, L"toolStripButton4", culture); resources->ApplyResources(this->toolStripButton5, L"toolStripButton5", culture); resources->ApplyResources(this->toolStripButton6, L"toolStripButton6", culture); resources->ApplyResources(this->toolStripButton7, L"toolStripButton7", culture); resources->ApplyResources(this->toolStripButton8, L"toolStripButton8", culture); resources->ApplyResources(this->toolStripButton9, L"toolStripButton9", culture); resources->ApplyResources(this->toolStripButton10, L"toolStripButton10", culture); resources->ApplyResources(this->toolStripButton11, L"toolStripButton11", culture); resources->ApplyResources(this->toolStripButton12, L"toolStripButton12", culture); resources->ApplyResources(this->russianToolStripMenuItem, L"russianToolStripMenuItem", culture); resources->ApplyResources(this->englishToolStripMenuItem,
L"englishToolStripMenuItem", culture);
}
21.Эта функция перегружает подписи к кнопкам согласно установленной локализации.
22.Нажмите F5 для запуска приложения. Переключите языки локализации.
Задание для самостоятельной работы.
Создайте визуальное приложение, позволяющее редактировать файлы на языке HTML с подсветкой синтаксиса (тэги, значения, атрибуты).
Министерство образования Республики Беларусь
Учреждение образования
«Белорусский государственный университет информатики и радиоэлектроники»
Кафедра электронных вычислительных машин
В.Ф. Криваль, М.Л. Селингер
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
Методические указания по выполнению лабораторных работ
по курсу «Объектно-ориентированное программирование» для студентов специальности
”Вычислительные машины, системы и сети”
Минск 2007
УДК 681.322 (075.8) ББК 32.97 я 73
Л 51
Криваль В.Ф., Селингер М.Л.
Л 51 Объектно-ориентированное программирование:
Методические указания по выполнению лабораторных работ по курсу «Объектно-ориентированное программирование» для студентов специальности «Вычислительные машины, системы и сети» всех форм обучения / В.Ф. Криваль, М.Л. Селингер. − Мн.: БГУИР, 2007. − .: ил. .
ISBN 985-444-595-Х
В методических указаниях приведены задания к лабораторным работам на базе языка программирования С# и вкратце рассмотрен теоретический материал к ним.
Пособие может быть использовано студентами всех форм обучения, магистрантами и аспирантами специальности 40 02 01 ”Вычислительные машины, системы и сети”.
УДК 681.322
(075.8)
ББК 32.97 я 73
© Криваль В.Ф., Селингер М.Л., 2007
ISBN 985-444-595-Х |
© БГУИР, 2007 |
Введение |
|
Основная цель настоящих методических указаний – дать материал для лабораторных занятий по изучаемым темам дисциплины. В указаниях по каждой изучаемой теме приводится краткий теоретический материал. Основы дисциплины приведены на базе языка программирования С#.