Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Описание лабораторной работы



Задани 1

Требуется создать приложение отображающее расписание занятий в табличной форме. Предметы выбираются из списка и по щелчку мыши заносятся в выбранную ячейку таблицы.

1. Создать приложение. На форме разместить необходимые компоненты.

 

2. Установить следующие свойства:

Компонент Свойство Значение
Form1 Caption Расписание
Form1 BorderStyle bsSingle
Form1 BorderIcons-> biMaximize false
Label1 Caption Предметы
ComboBox1 Text  
Button1 Caption Добавить
Button2 Caption Удалить
Button3 Caption Выход
StringGrid1 BorderStyle bsNone
StringGrid1 ColCount
StringGrid1 RowCownt
StringGrid1 ScrollBars ssNone

 

3. Задать начальный список предметов в c свойстве Items компонента ComboBox1. Первый элемент в списке должен быть пустым для возможности удаления предмета из ячейки таблицы.

 

4. Создать обработчик события OnShow компонента Form1. Это событие возникает в момент прорисовки формы. В тело обработчика события ввести код:

AnsiString par[] = {" 1 пара", " 2 пара", " 3 пара", " 4 пара",

" 5 пара", " 6 пара" };

AnsiString day[] = {" Пн", " Вт", " Ср", " Чт", " Пт", " Сб" };

for(int i=1; i< 7; i++)

{

StringGrid1-> Cells[0][i]=par[i-1];

StringGrid1-> Cells[i][0]=day[i-1];

}

5. Создать обработчик события OnClick компонента Button1. В тело обработчика события вести код:

ComboBox1-> Items-> Add(ComboBox1-> Text);

ComboBox1-> Text=" ";

6. Создать обработчик события OnClick компонента Button2. В тело обработчика события вести код:

if(ComboBox1-> ItemIndex > =1)

ComboBox1-> Items-> Delete(ComboBox1-> ItemIndex);

7. Создать обработчик события OnClick компонента Button3. В тело обработчика события вести код:

Close();

8. Создать обработчик события OnSelectCell компонента StringGrid1. В тело обработчика события вести код:

StringGrid1-> Cells[ACol][ARow]=

ComboBox1-> Items-> Strings[ComboBox1-> ItemIndex];

Запустить приложение. Убедиться в работоспособности всех функций приложения.

Задание 2

Написать программу перемножения двух матриц размерностью 4х4.

 

Пример умножения двух матриц:

Умножить на .


Решение.

В ходе вычислений были выполнены следующие действия

Умножаем 1 строку на 1 столбец 1 • (-1) + (-2) • 23 + 3 • 4.4 + 1 • (-4.4) = -38.2

Умножаем 1 строку на 2 столбец 1 • 2 + (-2) • (-23) + 3 • 12 + 1 • 12 = 96

Умножаем 1 строку на 3 столбец 1 • 3 + (-2) • 1 + 3 • 1 + 1 • (-1) = 3

Умножаем 2 строку на 1 столбец 23 • (-1) + (-23) • 23 + 1 • 4.4 + 2 • (-4.4) = -556.4

Умножаем 2 строку на 2 столбец 23 • 2 + (-23) • (-23) + 1 • 12 + 2 • 12 = 611

Умножаем 2 строку на 3 столбец 23 • 3 + (-23) • 1 + 1 • 1 + 2 • (-1) = 45

Умножаем 3 строку на 1 столбец (-44) • (-1) + 12 • 23 + 0 • 4.4 + 1 • (-4.4) = 315.6

Умножаем 3 строку на 2 столбец (-44) • 2 + 12 • (-23) + 0 • 12 + 1 • 12 = -352

Умножаем 3 строку на 3 столбец (-44) • 3 + 12 • 1 + 0 • 1 + 1 • (-1) = -121

 

Пример компоновки формы

 

Спецификация программы:

1) Для работы с матрицами (ввод и вывод матриц) должен быть использован компонент StringGrid.

2) Перемножаемые матрицы должны вводиться пользователем. То есть таблица StringGrid1 и StringGrid2 должны быть редактируемые.

3) Таблица с результатом StringGrid3должна быть закрыта для редактирования пользователем.

Контрольные вопросы

1. Как узнать количество строк и столбцов в таблице?

2. Как очистить всю таблицу?

3. Как убрать фиксированные столбец и строку?

4. Как программно добавить столбец и строку?

5. Что означает операторStringGrid1-> ColWidths[Index] = -1;?

6. Что означает операторA=StringGrid1-> Cells[i][j];?

7. Что означает оператор R=StringGrid1-> VisibleColCount;?


Практическая работа № 12

Тема: «Обработка событий клавиатуры и мыши в приложении».

Цель работы: Ознакомление с основными принципами программирования работы с манипулятором «мышь» и клавиатурой в C++ Builder.

Время выполнения: подготовка – 5 мин; выполнение – 165 мин.; проверка – 10 мин; всего – 180 мин.

Теоретическая часть

Основные событияклавиатуры и мыши

Событие Описание
OnKeyDown Происходит при нажатии пользователем любой клавиши, включая функциональные и вспомогательные, такие, как Shift, Alt и Ctrl. клавиши, когда компонент находится в фокусе при нажатии пользователем
OnKeyPress Происходит при нажатии одной из алфавитно-цифровых клавиш, клавиши Tab, BackSpace, Enterили Esc.
OnKeyUp Происходит при отпускании клавиши.
OnMouseDown   Событие возникает при нажатии кнопки мыши на компоненте. Параметры, передаваемые обработчику события, содержат информацию о том, какой кнопкой мыши щелкнули и какие функциональные клавиши при этом были задействованы (Alt, Ctrlили Shift), а также координаты Xи Yкурсора мыши в момент щелчка.  
OnMoveMouse Происходит при перемещении курсора через объект управления
OnMouseUp   Событие возникает при отпускании кнопки мыши на компоненте, если перед этим кнопка была нажата на этом же компоненте.  

 

Cобытия для клавиатуры

Событие OnEnter наступает в момент получения фокуса

Событие OnExit наступает в момент потери элементом фокуса, в момент его переключения на другой элемент.

Событие OnCreate возникает в момент создания формы и может использоваться для выполнения каких-то процедур настройки ее самой или содержащихся на ней компонентов.

Событие OnResize заключительное событие при изменении размеров формы.

Событие OnShortCut возникает при нажатии пользователем клавиши, до того, как возникло стандартное событие OnKeyDown.

Задание 1

1. Запустите C++ Builder.

2. Сохраните новый проект в отдельно созданной папке.

3. Присвойте основной форме заголовок, в качестве имени которого используйте название дисциплины, номер работы и варианта и свою фамилию. Установите для формы ограничения изменения размеров согласно варианту. Для этого используйте свойства MaxHeight, MaxWidth и MinHeight, MinWidth. Установите позицию показа формы по центру экрана.

4. Поместите на форму кнопку Button. Для кнопки поменяйте заголовок (свойство Caption ) на «Проверка». Добавьте обработчик события нажатия кнопки мыши OnMouseDown. В обработчике задайте следующие условие, если нажата левая кнопка мыши, то вывести сообщение функцией ShowMessage(): «Нажата левая кнопка мыши». Аналогичные сообщения должны появиться и для нажатия правой и средней кнопок: «Нажата правая кнопка мыши», «Нажата средняя кнопка мыши». Для проверки условия проверяйте значение переменной Button типа TMouseButton.

5. Поместите на форму кнопку Button. Задайте для неё заголовок «Перемещение» (свойство Caption ). Кнопку можно перетаскивать по форме в процессе выполнения программы. Для этого добавить обработчик перемещения курсора мыши для ButtonOnMouseMove. В обработчике задать изменения координат кнопки от перемещения (свойства Left и Top ). При этом перемещение кнопки должно быть разрешено только при зажатой левой кнопки мыши. Для этого в обработчике OnMouseMove сделать проверку переменной Shift, которая должна содержать флагssLeft.

6. Поместите на форму кнопку Button, заголовок которой установите в «Таймер» (свойство Caption ). Для кнопки должно выводиться сообщение о времени, в течение которого была зажата кнопка мыши над компонентом.

7. Поместите на форму компонент Memo из вкладки Standart визуальных компонентов. Установите для Memo вертикальную полосу прокрутки, установите положение Memo на форме в состояние в соответствии с вариантом. В редакторе компонента Memo очистите содержимое строк. Создайте обработчик для текстового поля Memo OnKeyDown, в котором нужно определять нажатие функциональных клавиш, используя виртуальные коды VK_F1 VK_10. Для выбора нужной клавиши используйте конструкцию switchcase. Название нажатой функциональной клавиши выводите в специальную помещённую на форму метку Label из вкладки Standard, в свойство Caption. Например: " Нажата клавиша: F1".

8. Для Memo добавьте обработчик печати символа OnKeyPress, в котором требуется определить в каком регистре: верхнем или нижнем напечатан символ. Результат должен выводиться специальную помещённую на форму метку Label из вкладки Standard, в свойство Caption: «Символ напечатан в верхнем регистре» или «Символ напечатан в нижнем регистре». Для определения, в каком регистре напечатан символ используйте функции islower и isupper для латинских букв.

9. Для формы добавьте обработчик OnShortCut, в котором добавьте оператор закрытия формы ( Form1-> Close(); ), если нажата клавиша Esc.

10. Поместите на форму компонент Statusbar из вкладки Win32 визуальных компонентов. Откройте редактор компонента и добавьте четыре панели (рисунок 1.6). Для нулевой и второй панелей задайте в инспекторе объекта свойство Text «Ширина формы» и «Высота формы» соответственно. Для отображения текста установите ширину панели 100 (свойство Width ). Добавьте для формы обработчики создания формы OnCreate и изменения размеров формы OnResize. В которых должны выводится в строку состояния StatusBar1 размеры формы.

11. Для компонентов, помещённых на форму для которых доступен обработчик получения фокуса ввода OnEnter, задайте последовательность смены фокуса ввода при нажатии клавиши Tab. Для этого в строке состояния StatusBar добавьте ещё одну дополнительную панель, в которой будет указано какому компоненту принадлежит фокус ввода в данный момент.

12. Сохраните приложение и покажите преподавателю на проверку.

Контрольные вопросы

1. Когда возникают обытия OnMouseDown, OnMouseUp, OnClick, OnMouseMove в форме? Какие параметры имеются у этих событий?

2. Каким образом при возникновении события OnMouseDown можно определить, какая клавиша мыши нажата: правая или левая?

3. Когда возникает событие OnPaint в форме?

4. Что выполняется в процедуре обработки события OnPaint разработанного Вами приложения?

5. Когда возникает событие OnResize в форме?

6. Что выполняется в процедуре обработки события OnResize разработанного Вами приложения?

7. Как изменится рассмотренное приложение, если в процедуре FormResize() убрать вызов метода Refresh()? Как это можно объяснить?

8. Как изменится рассмотренное приложение, если в процедуре FormMouseDown() убрать вызов метода Refresh()? Как это можно объяснить?

9. Что произойдет, если в функции FormPaint() поместить вызов метода Refresh()? С чем это связано?

10. Когда возникают события OnKeyDown, OnKeyUp, OnKeyPress? Какие параметры имеются у этих событий?

11. В чем отличие событий OnKeyPress и OnKeyDown?


Практическая работа №13

Тема: «Использование ввода и отображения дат и времени в приложении».

Цель работы: Ознакомление с основными принципами использования в приложениях компонентов ввода и отображения дат и времени.

Время выполнения: подготовка – 5 мин; выполнение – 1205 мин.; проверка – 10 мин; всего – 135 мин.

Теоретическая часть

Компонент DateTimePicker применяется для безошибочного ввода дат и времени с клавиатуры. Располагается на вкладке Win32.

Компонент MonthCalendar служит для быстрого выбора необходимой даты.

Свойства Назначение
CalColors Цвет элементов календаря
MaxDate Максимальная дата в календаре
MinDate Минимальная дата в календаре
MultiSelect При значении True возможно выбирать диапазон дат
ShowToday Если True — текущая дата отображается в нижней части календаря
ShowTodayCircle Если True — текущая дата обводится красным цветом
MaxSelectRange Содержит максимальное количество дат в выбранном диапазоне
FirstDayOfWeek Определяет первый день недели

Для того, чтобы получить сегодняшний день с помощью этого компонента необходимо использовать DayOf(MonthCalendar1.Date)

Компонент CCalendar представляет собой менее красочный и более обыденно оформленный календарь на один месяц. Вместо свойства Date в нем предусмотрены отдельные свойства Year - год, Month - месяц, Day - день.

Большинству функций манипулирования датами в качестве параметра передается переменная типа TDateTime, которая хранит информацию о дате и времени.

Для того, чтобы в программе были доступны функции DayOf, WeekOf, MonthOf и др., в ее текст надо включть директиву:


Поделиться:



Популярное:

Последнее изменение этой страницы: 2017-03-08; Просмотров: 546; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.041 с.)
Главная | Случайная страница | Обратная связь