
- •Введение
- •Лабораторная работа № 13 Создание простых форм. Программирование кнопок
- •Теоретические сведения Назначение и состав окон для визуальной разработки по в Delphi 7
- •Объект tForm (форма)
- •Объект tLabel (текстовое поле)
- •Объект tButton (кнопка)
- •Преобразование типов
- •Метод установления фокуса
- •Порядок выполнения работы
- •Варианты
- •Компонент tRadioButton (переключатель)
- •Пример 14.1. При нажатии на кнопки «Ответ» в окне появляется строка, соответствующая выбранному переключателю (рис. 14.1)
- •Обработка события, вызванного нажатием на кнопку, имеет такой вид:
- •Процедуры и функции, реализующие диалоговые окна
- •Обработчики исключений
- •Пример 14.2. Вычислить значение функции . Экранная форма программы показана на рис. 14.5.
- •Порядок выполнения работы
- •Варианты
- •Пример 15.1. В многострочный редактор при нажатии кнопки выводятся номера строк. Экранная форма программы показана на рис. 15.1.
- •Компонент tCheckBox (флажок)
- •Пример 15.2. Флажками отмечаются используемые кредитные карточки и по нажатию кнопки в многострочный редактор выводятся эти названия. Экранная форма программы показана на рис. 15.2.
- •Панель tGroupBox (группы компонентов)
- •Пример 15.3. С помощью флажков выбирают продукты из списка и по нажатию кнопки в многострочный редактор выводятся эти названия. Экранная форма программы показана на рис. 15.3.
- •Список действий (tActionList)
- •Главное меню (tMainMenu)
- •Пример 15.5. Создан простой редактор содержащий меню. Экранная форма программы показана на рис. 15.7.
- •Обработка событий выбора пунктов меню имеет вид
- •Всплывающее меню (tPopupMenu)
- •Обработка событий выбора пунктов меню аналогична примеру 15.5 и имеет вид
- •Варианты
- •Порядок выполнения работы
- •Варианты
- •Инкапсуляция и свойства объекта
- •Наследование
- •Полиморфизм и виртуальные методы
- •Директивы, используемые при объявлении класса
- •Порядок выполнения работы
- •Варианты
- •Выбор дисковода
- •Просмотр и перемещение по дереву каталогов
- •Просмотр списка и выбор имени файла
- •Выбор маски для списка файлов
- •Порядок выполнения работы
- •Многооконные приложения
- •Порядок выполнения работы
- •Варианты
- •Пример 20. 1. Построить график функции с шагом 0.1 в интервале [-5;5]. Экранная форма программы показана на рис. 20.2. Приведем фрагмент кода программы с обработкой основных событий:
- •Создание библиотеки динамической компоновки (dll)
- •Пример 20. 2. Создать библиотеку содержащую функции сложения целых и вещественных чисел, а также строк. Код библиотеки имеет вид
- •Статический вызов библиотеки
- •Пример 20.3. Используем статически функции, описанные в библиотеке (см. Пример 20.2). Экранная форма программы показана на рис. 20.5. Фрагмент кода с использованием функций из библиотеки:
- •Порядок выполнения работы
- •Использование форм в библиотеках
- •Порядок выполнения работы
- •Варианты
- •События клавиатуры
- •Порядок выполнения работы
- •Варианты:
- •Порядок выполнения работы
- •Контрольные вопросы
- •Библиографический список
Обработчики исключений
В Object Pascal предусмотрены средства перехвата ошибок, возникающих при выполнении программы в виде исключений. В приложениях, использующих модуль SysUtils, исключение генерируется, когда происходит ошибка или другое событие, нарушающее нормальную работу программы. Сгенерированное исключение передает управление обработчику исключения, т.е. фрагменту кода, выполняющемуся при наступлении ошибки. Синтаксис операторов защиты от ошибок имеет вид
Try
{Защищенные операторы}
Except
{операторы обработки исключения}
[Else
{ операторы обработки исключения по умолчанию}
]
End;
Операторы, следующие за ключевым словом try, называются защищенными операторами и реализуют нормальную логику программы. Если при выполнении защищенных операторов происходит ошибка, то генерируется исключение и выполняются операторы, расположенные за ключевым словом except. Таким образом, раздел except выполняется, если исключение произошло при выполнении раздела try. Обработчик исключений, возникших в защищенных операторах, обрабатывает также исключения, появившиеся в программах, вызванных из защищенного фрагмента.
Когда защищенный оператор генерирует исключение, управление немедленно передается в раздел except. Затем приложение пытается определить обработчик, применимый для текущего исключения. Если поиск успешен, то выполняются его операторы, после этого объект исключения автоматически уничтожается. Если применимый обработчик не найден, то выполняется раздел else, содержащий обработчик по умолчанию (если он есть). Затем выполнение программы продолжается начиная с оператора, следующего за блоком except (т.е. расположенного за ключевым словом end).
Оператор on определяет обработчик заданного типа исключений. Операторы on располагаются в разделе except блока try.. except. Общий синтаксис оператора on имеет следующий вид
on [идентификатор_исключения:] тип_исключения do begin
[операторы_обработки_исключения; ] end;
Необязательный идентификатор исключения используется для ссылки на объект исключения, тип которого задан в операторе on. Типы исключений перечислены в приложении.
Чтобы обработчик исключений не прерывал выполнения программы в среде разработки Delphi (которая сама перехватывает ошибки), нужно отключить режим интегрированной отладки: меню Tools→Debugger Options... (Инструменты→Параметры отладки...), активизировать вкладку Language Exceptions (Исключения языка), снять флажок Stop on Delphi Exception (Перехват исключений средой разработки) и нажать кнопку ОК (рис. 14.4).
Рис.
14.4. Окно
Debugger Options с
флажком
Integrated
debugging
Кроме блока try…except в Delphi есть конструкция try .. finally, имеющая следующую форму:
try
// Операторы, выполнение которых может вызвать ошибку
finally
// Операторы, которые должны быть выполнены даже в случае ошибки
end;
Она применяется для выполнения всех необходимых действий перед передачей управления на следующий уровень обработки ошибки или глобальному обработчику. В результате таких действий может произойти, например, освобождение оперативной памяти или закрытие файла. Эта конструкция не обрабатывает объект исключительной ситуации и не удаляет его, а выполняет действия, которые должны быть осуществлены даже в случае возникновения ошибки.
Работает конструкция try … finally следующим образом: если в любом из операторов блока try возникает исключительная ситуация, то управление передается первому оператору блока finally. Если же исключительная ситуация не возникла, то последовательно выполняются все операторы обоих блоков.