- •Ответственный за выпуск: Бивойно п.Г. , декан факультета электронных и информационных технологий, канд. Техн. Наук, доцент
- •Содержание
- •4.1.4 Разработка интерфейса проекта 66
- •5.1.7 Разработка интерфейса проекта 81
- •Введение
- •Лабораторная работа № 1. Знакомство с интегрированой средой разработки (иср)“Delphi 7”
- •Краткие теоретические сведения о иср “Delphi 7”
- •Конструктор стартовой формы
- •Главное окно иср “Delphi 7”
- •Главное меню
- •Панели инструментов
- •Палитра компонентов
- •Окно просмотра дерева объектов
- •Окно редактора кода
- •Закладка редактора кода модуля
- •Закладка редактора кода файла проекта
- •Окно Object Inspector
- •Закладка описания свойств объекта
- •События и процедуры обработки событий
- •Создание простейшего проекта
- •Разработка интерфейса проекта
- •Создание процедуры инициализации приложения
- •Создание процедуры вычисления результата
- •Улучшение проекта
- •Сохранение проекта
- •Продолжение работы с проектом на другом компьютере
- •Содержание отчета
- •Контрольные вопросы и задания
- •Рекомендованая литература
- •Лабораторная работа № 2. Вещественный тип данных. Расчеты по формулам
- •Краткие теоретические сведения
- •Язык программирования Object Pascal
- •Объекты, переменные и константы
- •Классы и типы
- •Объявление объектов и переменных
- •Вещественный тип данных
- •Выражение
- •Стандартные функции для данных вещественного типа
- •Инструкция присваивания
- •Форматирование результатов расчетов
- •Создание проекта «Расчет по формуле»
- •Создание интерфейса
- •Компонент ole-контейнер
- •Компонент Group Box
- •Компонент Memo
- •Завершение работы над интерфейсом
- •Создание процедур обработки событий Процедура очистки протокола
- •Процедура инициализации формы
- •Процедура выполнения расчета по формуле
- •Контольный пример
- •Трассировка процедуры
- •Содержание отчета
- •Контрольные вопросы
- •Рекомендованая литература
- •Лабораторная работа № 3. Подпрограммы Краткие теоретические сведения
- •Правила написания подпрограмм
- •Описание процедуры
- •Вызов процедуры
- •Описание функции
- •Вызов функции
- •Способы передачи параметров в подпрограммы
- •Передача параметров по значению
- •Передача параметров по наименованию
- •Расположение подпрограмм
- •Подпрограммы обработки событий класса формы
- •Другие подпрограммы класса формы
- •Размещение подпрограмм в модуле
- •Размещение подпрограмм в других модулях
- •Размещение подпрограмм внутри других подпрограмм
- •Область действия имен
- •Реализация проекта «Процедуры и функции»
- •Создание процедур и функций Процедуры инициализации
- •Процедура считывания коэффициентов уравнения
- •Функция для расчета по формуле
- •Использование дополнительного модуля
- •Завершение работы над проектом
- •Исследование созданного приложения
- •Анализ передачи параметров по наименованию
- •Анализ передачи параметров по значению
- •Содержание отчета
- •Контрольные вопросы
- •Операции над логическими данными
- •Логические выражения
- •Разветвляющиеся алгоритмы
- •Программирование разветвлений Условный оператор if…then…else
- •Оператор варианта case
- •Реализация проекта «Организация разветвлений»
- •Разработка интерфейса проекта
- •Компоненты для работы со списками
- •Процедуры обработки событий выбора из списка
- •Процедуры обработки событий onKeyPress
- •Решение квадратного уравнения
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 5. Построение циклов с инструкциями „while” и „repeat”
- •Краткие теоретические сведения
- •Циклические алгоритмы
- •Инструкция while…do
- •Инструкция repeat…until
- •Прерывание цикла
- •Итерационные алгоритмы
- •Пример итерационного алгоритма для вычисления кубического корня
- •Задание для самостоятельной работы
- •Алгоритмы вычисления сумм бесконечных рядов
- •Задание для самостоятельной работы
- •Создание проекта WhileRepeat
- •Разработка интерфейса проекта
- •Компоненты PageControl и TabSheet
- •Компонент CheckBox
- •Создание закладки для вычисления корня
- •Создание закладки для вычисления синуса
- •Создание процедур и функций Процедура для контроля ввода данных
- •Процедура вычисления кубического корня
- •Процедура вычисления синуса
- •Задания для расчетно-графической работы № 2
- •Содержание отчета
- •Контрольные вопросы
- •Целые типы данных
- •Символьные типы данных
- •Ограниченный тип данных.
- •Применение инструкции цикла for
- •Табулирование значений функций
- •Форматирование результатов при выводе таблиц
- •Строки символов
- •Операции над строками
- •Процедура Delete
- •Процедура Insert
- •Функция Pos
- •Функции Trim, TrimLeft, TrimRight
- •Создание проекта «Применение цикла for»
- •Разработка формы «Табулирование функции» Разработка интерфейса
- •Создание вспомогательных процедур и функций
- •Создание процедуры табулирования функции
- •Разработка формы «Таблица “символ-код”» Разработка интерфейса
- •Создание процедуры вывода таблицы символ-код
- •Разработка формы «Обработка последовательностей целых чисел»
- •Разработка интерфейса
- •Создание процедуры обработки последовательности целых чисел
- •Создание многодокументной (mdi)формы
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Рекомендованая литература
Реализация проекта «Организация разветвлений»
Новый проект мы создадим на основе проекта, созданного для предыдущей лабораторной работы. Откройте новый проект, удалите в нем форму и модуль, и добавьте вместо них разработанную на прошлой лабораторной работе форму и ее модуль. Сохраните модуль формы под именем UnitIfCase, воспользовавшись функцией меню File->SaveAs, а форме присвойте имя frmIfCase. В заголовке формы напишите текст «Программирование разветвлений».
-
Разработка интерфейса проекта
Измените интерфейс формы в соответствии с рисунком 4.8. Его отличие от предыдущего состоит только в том, что появился список контрольных примеров, который реализован с помощью компонента ListBox. Расположите такой компонент на форме и назовите его lstVariant.
Рисунок 4.37 – Интерфейс проекта
Компоненты для работы со списками
При решении многих задач информацию, предоставляемую пользователю компьютера, удобно представлять в виде списков. Для вывода списков можно использовать различные компоненты, но наиболее распространенные из них – это ListBox и ComboBox. Эти компоненты похожи, основное отличие заключается в том, что содержимое второго из них можно увидеть только тогда, когда список раскрывается, а в обычном режиме показывается только текстовая строка, куда переносится выбранная из списка запись.
Содержание списков определяется свойством Items, значением которого является набор строк.
В нашем примере это свойство должно быть представлено строками:
Вещественные
корни
Комплексные
корни
Чисто
мнимые корни
Линейное
уравнение
Любое
решение
Нет
решений
Ниже мы напишем процедуры, которые будут реагировать на выбор элемента в списке.
В тех случаях, когда длина списка, из которого приходится выбирать, невелика, можно вместо списка использовать группу радио-кнопок.
Группа создается следующим образом. Вначале устанавливается компонент RadioGroup, представляющий собой рамку для размещения кнопок. Затем в свойство Items этого компонента заносится список предполагаемых вариантов выбора. Для каждого варианта автоматически создается свой компонент RadioButton, который размещается в рамке. Под свойством Items здесь понимается набор компонент RadioButton, а не надписи возле компонент. Для доступа к тексту, выводимому возле кнопки с определенным номером можно использовать, например, такую цепочку обращений group1.Items.Strings[0], где group1- имя компонента.
Компонет RadioGroup имеет также свойство itemIndex, значение которого соответствует номеру выбранной кнопки. Кнопки нумеруются, начиная с нуля. Первоначально этому индексу присваивается значение -1, это означает, что ни одна из кнопок не включена.
Процедуры обработки событий выбора из списка
Событие выбора из списка происходит тогда, когда путем нажатия на левую кнопку мыши осуществляется выбор строки списка. Такое же событие происходит, когда с помощью клавиш управления курсором осуществляется переход к последующей или предыдущей стоке списка. Имя этого события – onClick.
Процедуры обработки события onClick для списков - это процедуры с разветвлениями. В этих процедурах выполняемые действия зависят от выбора строки списка. Возможны различные способы организации этих процедур.
Первый способ состоит в том, что для выбора используется номер выбранной строки, доступ к которому возможен через свойство списка ItemIndex. Для организации разветвлений в процедуре в этом случае можно использовать инструкцию case, в которой будет анализироваться номер выбранной строки. Ниже приведен фрагмент тела процедуры, в котором реализован такой подход для задания значений коэффициентов квадратного уравнения в зависимости от выбранного варианта контрольного примера.
case lstVariant.ItemIndex of
0: //вещественные корни
setKoef(0.5,3,2.5);
1: //комплексные корни
setKoef(0.25,3,25);
2: //чисто мнимые корни
…
end;
Недостаток такого подхода состоит в том, что при изменении порядка следования строк в списке, процедура будет работать неправильно. Кроме того, анализировать работу процедуры без комментариев сложно. Но достоинство способа в том, что строки можно корректировать, это не повлияет на работу процедуры
Другой способ состоит в том, что процедура анализирует строки списка. Доступ к выбранной строке возможен через свойство Items списка, которое возвращает массив строк списка, и индекс выбранной строки ItemIndex. В этом случае инструкция case неприменима, так как строка не относится к порядковым типам. Поэтому для организации разветвлений используется цепочка операторов if.
Ниже приведен фрагмент тела процедуры, которая решает задачу, подобную той, что была рассмотрена выше.
…
var text:String;
begin
text := lstVariant.Items[lstVariant.ItemIndex];
if text='Вещественные корни'
then setKoef(0.5, 3, 2.5)
else if text='Комплексные корни'
then setKoef(0.25, 3, 25)
…;
end;
Достоинство этого способа в том, что здесь отпадает необходимость писать комментарии. Недостаток же в том, что если строка списка изменится, процедура перестанет работать правильно.
Создайте шаблон процедуры обработки события onClick для списка lstVariant и напишите тело процедуры одним из рассмотренных выше способов. Коэффициенты, обеспечивающие получение требуемого варианта подберите сами.
Процедуру setKoef мы уже использовали в предыдущей работе, подобную процедуру следует написать и в данном проекте.
Проверьте работу созданных процедур.