- •Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования «Сибирский государственный университет телекоммуникаций и информатики»
- •Введение
- •Лабораторная работа №1 Создание и использование динамических массивов
- •Лабораторная работа №2 Использование динамических структур данных (список, стек, очередь)
- •Лабораторная работа №3 Принцип инкапсуляции. Описание объектного типа.
- •Лабораторная работа №4 Принцип наследования. Создание иерархии классов.
- •Прямоугольник эллипс ромб треугольник
- •Лабораторная работа №5 Принцип полиморфизма. Использование виртуальных методов.
- •Лабораторная работа №6 Использование динамических объектов.
- •Лабораторная работа №7 Разработка программы «Магазин».
- •Лабораторная работа №2
- •Рекомендации
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
Дополните написанные обработчики событий, таким образом, чтобы на месте заголовка формы, кроме самого заголовка формы, отображалось ещё и имя выбранного файла.
Лабораторная работа №5
ТЕМА: Размещение и оформление компонентов. Работа с компонентами Label, Button, Panel, PictureBox, OpenFileDialog, Timer. Работа с клавиатурой: определение нажатой клавиши, включая функциональные и специальные (Ctrl, Alt, Shift), её кода. Создание событий, учитывающих состояние нажатой клавиши. Работа с приложением, содержащим более одной формы.
ОСНОВНЫЕ СВЕДЕНИЯ
Обработка клавиатуры осуществляется путем создания обработчиков событий: – KeyDown. Вызывается при нажатии любой клавиши, включая функциональные и специальные (Shift, Alt, Ctrl). Данное событие используется для интерпретации нажатия нескольких клавиш. – KeyPress. Вызывается при нажатии клавиши, генерирующей символы ASCII. Событие применяется для определения символа нажатой клавиши. Событие генерируется после KeyDown, но перед KeyUp. – KeyUp. Вызывается при отпускании любой клавиши. Для каждого события OnKeyUp всегда имеется парное ему событие KeyDown. Каждый из обработчиков этих событий получает, по крайней мере, один параметр Key, который представляет нажатую клавишу. В процедурах KeyDown, KeyUp параметр Key принадлежит типу Word, а в процедуре KeyPress – типу Char (символ ASCII).
Для того, чтобы события клавиатуры принимал не компонент формы, обладающий в данный момент фокусом ввода, а сама форма, используйте свойство формы KeyPreview. Windows представляет нажатие клавиши с помощью кодовых символов виртуальных клавиш, которые обозначаются так, например, System::Windows::Forms::Keys::Alt.
ЗАДАНИЕ
Задание 1:
Создание визуальной части приложения.
Р
азместите
на форме 7 объектов типа Label.
При создании одинаковых по размеру
объектов пользуйтесь TextBoxSize.
Для выравнивания положения объектов
на форме используйте TextBoxAlign.
( Size
и Align
есть в меню по правой кнопке.). Эти
команды применяются
для группы
выделенных объектов. Для выделения
нескольких объектов
на форме: нажать
левую кнопку мыши и выделить объекты
с помощью указателя мыши.
Для изменения одинаковых свойств каких-либо объектов также удобно работать с группой. Например, при необходимости у меток и кнопки установить жирный шрифт какого-либо заданного значения надо: выделить нужные объекты и в инспекторе объектов изменить (один раз!) свойство Font.
Для всех объектов типа Label установите: свойство Font, свойство AutoSize равным False, свойство Aligment – Center, свойство Layout – Center, свойство Text.
Поместите на форму кнопку с растровым изображением, которая будет закрывать приложение.
Для всех объектов типа Label оформите границы, используя такие декоративные элементы, как Panel.
Опишите массив, элементами которого являются названия функциональных клавиш от F1 до F12, а индексы элементов представляют виртуальные коды этих клавиш, в виде типизированной константы.
В процедуре обработки события формы KeyDown выполните следующие действия:
Показать значение переменной Key (код виртуальной клавиши). Для преобразования кода в строковую переменную используйте функцию Convert::ToInt32().
Проверить были ли нажаты клавиши Shift, Alt, Ctrl. Создать строку из комбинации нажатых клавиш (например, Shift+Alt+Ctrl, если были нажаты все три клавиши) и поместить её на форму в соответствующее место.
Если была нажата функциональная клавиша, то вывести её символьное представление в соответствующее место.
Процедура обработки события KeyPress получает значение параметра Key, равное символу ASCII. Поскольку управляющие коды от 1 до 26 (соответствуют от Ctrl+A до Ctrl+Z) не имеют соответствующего визуального символа, то в соответствующем месте формы будем отображать просто символы от ‘A’ до ‘Z’ (ASCII коды от 65 до 90). Для отображения кода в объекте Label функцию Convert::ToString().
В процедуру обработки события формы KeyUp добавьте операторы очистки заголовков объектов типа Label из среднего столбца.
Задание 2
Создание визуальной части приложения.
ОСНОВНЫЕ СВЕДЕНИЯ
Свойства компонента PictureBox:
Image ‑ Центральное свойство класса. Служит контейнером изображения;
SizeMode ‑ Управляет размером изображения так, чтобы в них полностью загрузилось картинка.
ErrorImage – Изображение, отображаемое в случае ошибки загрузки картинки, указанной в свойстве Image.
Добавьте к проекту новую форму. На форму поместите компоненты: Panel, Button, Image, Label, OpenFileDialog. Загрузите в Image картинку. Картинка должна автоматически принимать размер компонента Image.
Разместите компоненты как показано на рисунке. У Label установите следующие свойства: Text, Font.
Создание невизуальной части приложения.
Для кнопки Button1 напишите следующий код в обработчике события Click:
if (this->openFileDialog1->ShowDialog()== System::Windows::Forms::DialogResult::OK){
this->pictureBox1->Image->FromFile(this-> openFileDialog1->FileName);
this->pictureBox1->SizeMode= System::Windows::Forms::PictureBoxSizeMode::StretchImage;
Добавьте на Form1 кнопку Picture, при нажатии на которую будет появляться Form2.
Задание 3
Добавьте к проекту новую форму.
Создайте приложение, работающее следующим образом: при нажатии и удержании клавиш (System::Windows::Forms::Keys::Up) и (System::Windows::Forms::Keys::Down) увеличивается или уменьшается целое число в центре экрана, при отпускании клавиши на экране остается текущее число.
Добавьте на Form1 кнопку Число, при нажатии на которую будет появляться Form3.
Лабораторная работа №6
ТЕМА: Создание заставки текстового редактора.
ЗАДАНИЕ
Задание 1
Откройте с помощью FileAddnew Class новую форму Form2. Удалите значение свойства Text. Свойству FormBorderStyle присвойте значение None (результат увидите только при запуске программы). Для удаления кнопок минимизации, максимизации формы и системного меню установите у свойств MinimizeBox, MaximizeBox, ControlBox равными False(результат увидите только при запуске программы).
Свойство Enabled установите равным False для того, чтобы заблокировать обработку событий и лишить возможности пользователя управлять окном с помощью клавиатуры или мыши.
Сохраните проект, определив имя второго программного модуля проекта.
Сделаем заставку, которая будет активна при запуске программы 4 сек., и, затем, исчезает.
Подключите модуль Form2.h
Добавьте в конструктор класса Form1 следующее:
Form1(void){
Form2^ f2 = gcnew Form2;
f2->Show();
f2->Update();
System::Threading::Thread::Sleep(4000);
f2->Hide();
InitializeComponent();
}
Поместите на форму 2 заставки компонент PictureBox. Выберите файл с картинкой для загрузки изображения. Для того чтобы растровое изображение внутри объекта Image1 занимало всю клиентную область, требуется изменить значение свойства SizeMode на StretchImage.
Поместите на форму заставки справа и снизу от рисунка два компонента Label. Отобразите на них информацию об авторе приложения и название приложения, используя различный размер, цвет и начертание шрифта.
Задание 2
Создание таймера.
Добавьте к проекту новую форму Form3. Указанная форма должна отображаться вместе с основной (после заставки)
Измените границы окна у Form3, сделайте их невидимыми, уберите значки максимизации, минимизации, закрытия формы.
Поместите на форму Form3 компонент Label, свойству Text этого компонента присвойте значение 00:00:00. Выберите для своих часов шрифт, размер и стиль.
Поместите на форму Form3 компонент Timer. В обработчик события Tick объекта Тimer1 добавьте следующую строку:
System::DateTime now = System::DateTime::Now;
this->label1->Text=Convert::ToString(now);
Для события Create формы Form3 выберите обработчик Tick, который был создан для компонента Timer1. Тогда текущее время будет записано в метку до появления окна.
Для формы Form3 установите свойство TopMost равным true для того, чтобы часы были расположены всё время поверх других окон. Кроме того, установите свойство Enabled в True.
СПИСОК ЛИТЕРАТУРЫ
Г. Шилдт Самоучитель С++: Пер. с англ. – 3-е изд: ‑ СПб.: БХВ-Петербург, 2001. – 688 с.
Иванова Г.С., Ничушкина Т.Н., Пугачев Е.К. Объектно-ориентированное программирование: Учеб. для вузов / Под. Ред. Г.С. Ивановой. — М.: Изд-во МГТУ им. Н.Э.Баумана, 2001. — 320 с.
Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на С++: пер. с англ. М.: Бином, СПб.: Невский диалект, 1998.
Скляров В.А. Язык С++ и объектно-ориентированное программирование. М.: Высш. шк., 1997. — 478 с.
1 Память под такую переменную выделяется еще на стадии компиляции.
