Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по лабам по ООПиП.pdf
Скачиваний:
219
Добавлен:
15.09.2014
Размер:
1.77 Mб
Скачать

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

Введение

 

Основная цель настоящих методических указаний – дать материал для лабораторных занятий по изучаемым темам дисциплины. В указаниях по каждой изучаемой теме приводится краткий теоретический материал. Основы дисциплины приведены на базе языка программирования С#.