Методические указания по лабораторным работам по ПП. Создание и сохранение проектов, форм, модулей
Скачать 1.04 Mb.
|
Тема: Работа с объектом для ввода и редактирования таблиц – компонент StringGrid. Цель: закрепить теоретические знания и получить практические навыки по работе с компонентом StringGrid. Студент должен: знать: - язык Delphi; - свойства формы; - состав проекта Delphi; - компоненты Delphi; - среду Delphi; - объект Delphi – StringGrid; уметь: - писать программы на языке Паскаль; - изменять свойства компонент и формы; - прописывать код в оболочке Delphi; - вводить данные в таблицу; - заполнять таблицу с помощью метода случайных чисел; - обрабатывать данные в таблице. Литература: Шумаков П.В. Delphi 7: руководство разработчика / П.В. Шумаков. - М.: Нолидж, 2011 Бобровский С. Delphi 7: учебный курс / С. Бобровский. - М.: Питер, 2010 Фленов М. Библия Delphi / М. Фленов. – СПб: БХВ-Петербург, 2012 Хомоненко А. Delphi 7 / А. Хоменко. - СПб: БХВ-Петербург, 2011 Подготовка к работе: повторить лекционный материал Задание: Создайте программу, которая в зависимости от величин N (количество строк) и M (количества столбцов) создает матрицу размером N x M. Программа предоставляет возможность заполнить матрицу с помощью случайных чисел или ввести значения вручную. Кроме этого нужно подсчитать сумму элементов матрицы, определить максимальный и минимальный элементы матрицы (см. рисунок 1 и рисунок 2). Рисунок 1 Рисунок 2 Порядок выполнения: 1. Откройте новый проект. 2. Разместите в форме объекты в соответствии с рис.2. 3. Установите свойства компонент на вкладке Object Inspector: 4. Сохраните код программы и проект под именами, например, Unit_M.pas и Pr_M.dpr. Разместите в блоке реализации после слова implementation описание переменных: Var N, M: Integer; //N-количество строк, M-количество столбцов MATR_MAX, //Значение максимального элемента таблицы MATR_MIN, //Значение минимального элемента таблицы MATR_SUM: Integer; //Значение суммы элементов таблицы Основная задача проекта – создать таблицу, размер которой будет определен после заполнения полей Edit1 и Edit2. Создадим следующие процедуры обработки событий: Программа готова. Отладьте ее. Допишите фрагмент программы для кнопки «Создать таблицу». Что должно быть сделано прочитайте в комментариях к этой кнопке (Считать из компонентов Edit значения M и N и в зависимости от них установить размерность таблицы. Заполнить фиксированную часть таблицы номерами строк и столбцов.). Если в поля ввода «Размерность матрицы» по ошибке вместо числа будет введена буква или какой-либо другой символ, то программа будет прервана. Для того чтобы это избежать создадим процедуры обработки события KeyPress для компонента Edit1. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key:Char); begin case Key of ’0’..’9’: ; #8: ; #13: Edit2.SetFocus; else Key := Chr (0); end; Комментарий В зависимости от нажатой клавиши программа выполнит следующие действия: - нажата любая цифровая клавиша или клавиша «Back Space» (код клавиши #8) – программа ничего не изменит; - нажата клавиша «Enter» (код клавиши #13) – курсор перейдет в окно редактора ввода Edit2; - во всех остальных случаях – введенный символ будет удален (присвоение значения пустого символа Chr(0)). Для компонента Edit2 самостоятельно создайте процедуру, обрабатывающую ввод. Она будет отличаться тем, что при нажатии клавиши «Enter», курсор должен перейти на кнопку «Создать таблицу» (Button1). Созданная программа не позволяет редактировать элементы таблицы. Внесем изменения в свойства компонента StringGrid (MATR). Для этого на вкладке Object Inspector свойству Options.goEditing установим значение True. Процедура, обрабатывающая нажатие клавиши в поле компонента StringGrid (MATR) будет выглядеть так: procedure TForm1.MATRKeyPress(Sender: TObject; var Key: Char); Var I,J : Byte; begin case Key of ’0’..’9’: ; #8: ; #13: if MATR.Col else Key:=Chr(0); end; MATR_MAX:= StrToInt(MATR.Cells[1,1]); MATR_MIN:= StrToInt(MATR.Cells[1,1]); MATR_SUM:=0; For I:=1 to N do For J:=1 to M do begin MATR_SUM:=MATR_SUM+StrToInt(MATR.Cells[J,I]); IF StrToInt(MATR.Cells[J,I])>MATR_MAX Then MATR_MAX:=StrToInt(MATR.Cells[J,I]); IF StrToInt(MATR.Cells[J,I]) MATR_MIN:=StrToInt(MATR.Cells[J,I]); end; Label5.Caption:=IntToStr(MATR_SUM); Label6.Caption:=IntToStr(MATR_MAX); Label7.Caption:=IntToStr(MATR_MIN); end; Комментарий Обработка нажатия допустимой клавиши рассмотрена в п.7. Отличие заключается в действии, которое произойдет, если нажата клавиша «Enter» - переход к следующей ячейке в данной строке, если эта ячейка не последняя в строке. Дальше в процедуре идет подсчет максимального, минимального элемента и суммы элементов в таблице, после внесения изменений. Сохраните проект окончательно, запустите и протестируйте его. Контрольные вопросы и задания: 1.Элементы интерфейса среды Delphi. 2.Основные файлы проекта. 3.Основные компоненты Delphi. 5.Компонент StringGrid. 6.Заполнение таблицы вручную и методом случайных чисел. 7.Подсчет максимального, минимального элемента и суммы элементов в таблице. 8. Процедуры обработки события KeyPress. Лабораторная работа № 8 Тема: Работа со списками ListBox - проект «Тест по физике». Цель: закрепить теоретические знания и получить практические навыки по работе со списками ListBox. Студент должен: знать: - язык Delphi; - свойства формы; - состав проекта Delphi; - компоненты Delphi; - среду Delphi; - объекты Delphi – ListBox; уметь: - писать программы на языке Паскаль; - изменять свойства компонент и формы; - прописывать код в оболочке Delphi; - использовать встроенный редактор String List Editor для ввода информации; - обеспечивать взаимодействия двух списков ListBox; - создавать многострочные надписи в компоненте Label. Литература: Шумаков П.В. Delphi 7: руководство разработчика / П.В. Шумаков. - М.: Нолидж, 2011 Бобровский С. Delphi 7: учебный курс / С. Бобровский. - М.: Питер, 2010 Фленов М. Библия Delphi / М. Фленов. – СПб: БХВ-Петербург, 2012 Хомоненко А. Delphi 7 / А. Хоменко. - СПб: БХВ-Петербург, 2011 Подготовка к работе: повторить лекционный материал Задание: После запуска программы появляется изображение аналогичное рисунку 1. Пользователь, перемещаясь с помощью клавиш-стрелок по списку «Физическая величина», выбирает любое слово, нажав клавишу «Enter». Затем он переходит в список «Название величины» и выбирает соответствующее название физической величины. Если выбрано правильное название величины, то под словом «Оценка» появляется одобрительная реплика «Правильно», если выбрано неправильное слово, то – «Ошибка». Количество попыток ответа соответствует количеству записей в списке «Физическая величина». Рисунок 1 Порядок выполнения: 1. Откройте новый проект. 2. Разместите в форме экземпляры компонент в соответствии с рисунком 2 и присвойте заголовки меткам. Обратите внимание, что заголовки меток «Физическая величина» и «Название величины» состоят из двух строк и отцентрированы. Рисунок 2 Для вывода многострочных надписей в Label задайте:
Сохраните код программы и проект. Выделите ListBox1, справа от свойства Items щелкните на кнопке с тремя точками. В появившемся окне встроенного редактора String List Editor введите физические величины, каждую на новой строке: «Ватт», «Ом», «Вольт», «Ампер». Сохраните набранный текст под именем Fiz_1.txt. Выделите Listbox2 и проделайте с ним аналогичную работу, введя названия физических величин: «Напряжение», «Сопротивление», «Сила тока», «Мощность». Сохраните набранный текст под именем Fiz_2.txt. Вставьте в разделе реализации после ключевого слова implementation объявление переменных: Var Num1, // номер выбранной записи в первом окне Num2, // номер выбранной записи во втором окне CountR, // количество правильных ответов CountC, // общее количество ответов CountN // общее количество вопросов теста : Byte; Создайте следующие процедуры обработки событий:
8. Сохраните проект окончательно, запустите и протестируйте его. Задание для самостоятельного выполнения 1. Списки ListBox1 и ListBox2 сделайте поочередно доступными после нажатия клавиши Enter. То есть при запуске доступно только ListBox1, затем при выборе в нем какого-то пункта и нажатия Enter, становится доступным ListBox2, а ListBox1 – недоступно. При нажатии Enter в ListBox2 становится доступно ListBox1, ListBox2 – недоступно и т.д. 2. Внести изменения в программу, чтобы при правильном выборе названия физической величины слово в левом списке исчезало. Подсказка. В процедуру KeyPressed, относящуюся к ListBox2, включить: ListBox1.Items.Delete(Num1); ListBox1.Items.Insert(Num1, ’’); Здесь мы удаляем строку и вставляем на ее место пустую, чтобы сохранить соответствие между записями в двух окнах. Кроме этого необходимо в процедуру KeyPressed, относящуюся к ListBox1, включить: If (Key=#13) and (ListBox1.Items.Strings [ListBox1.ItemIndex] <> ' ') Then… для того, чтобы не рассматривался выбор пустой строки. 3. Сделайте доступными списки ListBox1 и ListBox2 не только после нажатия клавиши Enter, но и по щелчку мыши. 4. Расширьте количество физических величин до 10. Внести необходимые изменения в программу. 5. Выведите количество правильных ответов. 6. Введите дополнительную кнопку «Повторить», которая позволит повторно выполнить задание, восстановив списки ListBox1. Контрольные вопросы и задания: 1.Элементы интерфейса среды Delphi. 2.Основные файлы проекта. 3.Основные компоненты Delphi. 5.Компонент ListBox. 6. Обеспечение взаимодействия двух списков ListBox; 7. Создание многострочных надписей в компоненте Label. Лабораторная работа № 9 Тема: Работа с объектами главное и контекстное меню - проект «Элементарный калькулятор». Цель: закрепить теоретические знания и получить практические навыки по работе с главным и контекстным меню. Студент должен: знать: - язык Delphi; - свойства формы; - состав проекта Delphi; - компоненты Delphi; - среду Delphi; - объекты Delphi – главное и контекстное меню; уметь: - писать программы на языке Паскаль; - изменять свойства компонент и формы; - прописывать код в оболочке Delphi; - работать с компонентом MainMenu; - работать с компонентом PopupMenu. Литература: Шумаков П.В. Delphi 7: руководство разработчика / П.В. Шумаков. - М.: Нолидж, 2011 Бобровский С. Delphi 7: учебный курс / С. Бобровский. - М.: Питер, 2010 Фленов М. Библия Delphi / М. Фленов. – СПб: БХВ-Петербург, 2012 Хомоненко А. Delphi 7 / А. Хоменко. - СПб: БХВ-Петербург, 2011 Подготовка к работе: повторить лекционный материал Задание: Создать главное меню формы для выполнения арифметических, алгебраических, тригонометрических и логических действий и контекстное меню для выхода из программы. Для этого вводить два числа, над которыми производятся действия, выбираемые из главного меню. Порядок выполнения: 1. Создать элемент “MainMenu”. 2. Создать в элементе “MainMenu” подменю следующего содержания: - Арифметические действия (+ , - , * , / ). - Алгебраические действия (Квадратная степень и корень). - Тригонометрические действия (Sin, Cos, Tg, Ctg). - Логические действия (max и min). 3. Расположить на форме два компонента Edit для ввода чисел, над которыми производятся действия. 4. Программа выводит в метке: ответ на каждое действие; пояснение к каждому ответу. 5.С помощью контекстного меню осуществлять выход из программы. Примечание Все действия производить над обоими числами. Разрешить ввод только числовых данных. Разрешить возможность ввода дробных чисел. Об ошибочных действиях пользователя выводить сообщения: на ноль делить нельзя, корень и степень к отрицательным числам применять нельзя. Контрольные вопросы и задания: 1.Элементы интерфейса среды Delphi. 2.Основные файлы проекта. 3.Основные компоненты Delphi. 5.Компонент MainMenu. 6. Компонент PopupMenu. Лабораторная работа № 10 |