
- •Содержание
- •Введение
- •Лабораторная работа № 13 Создание простых форм. Программирование кнопок
- •Теоретические сведения Назначение и состав окон для визуальной разработки по в Delphi 7
- •Объект tForm(форма)
- •Объект tLabel (текстовое поле)
- •Объект tButton (кнопка)
- •Преобразование типов
- •Метод установления фокуса
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 14 Интерактивный ввод и вывод. Обработка исключительных ситуаций
- •Теоретические сведения Компонент tEdit (поле редактирования)
- •Компонент tRadioButton (переключатель)
- •Пример 14.1. При нажатии на кнопки «Ответ» в окне появляется строка, соответствующая выбранному переключателю (рис. 14.1)
- •Обработка события, вызванного нажатием на кнопку, имеет такой вид:
- •Процедуры и функции, реализующие диалоговые окна
- •Обработчики исключений
- •Пример 14.2. Вычислить значение функции . Экранная форма программы показана на рис. 14.5.
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 15 Программирование циклов. Компоненты: флажок, группа компонентов, главное меню, контекстное меню, список действий, область просмотра
- •Теоретические сведения Компонент tMemo (область просмотра)
- •Пример 15.1. В многострочный редактор при нажатии кнопки выводятся номера строк. Экранная форма программы показана на рис. 15.1.
- •Компонент tCheckBox (флажок)
- •Пример 15.2. Флажками отмечаются используемые кредитные карточки и по нажатию кнопки в многострочный редактор выводятся эти названия. Экранная форма программы показана на рис. 15.2.
- •Панель tGroupBox (группы компонентов)
- •Пример 15.3. С помощью флажков выбирают продукты из списка и по нажатию кнопки в многострочный редактор выводятся эти названия. Экранная форма программы показана на рис. 15.3.
- •Список действий (tActionList)
- •Главное меню (tMainMenu)
- •Пример 15.5. Создан простой редактор содержащий меню. Экранная форма программы показана на рис. 15.7.
- •Обработка событий выбора пунктов меню имеет вид
- •Всплывающее меню (tPopupMenu)
- •Обработка событий выбора пунктов меню аналогична примеру 15.5 и имеет вид
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 16Обработка динамических массивов данных. КомпонентTStringGrid(Таблица строк)
- •Теоретические сведения Компонент tStringGrid (таблица строк)
- •Implementation
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 17Работа с объектами. Инкапсуляция. Наследование. Полиморфизм. Создание заставки
- •Теоретические сведения Понятие класса и объекта
- •Инкапсуляция и свойства объекта
- •Наследование
- •Полиморфизм и виртуальныеметоды
- •Директивы, используемые при объявлении класса
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 18Компоненты для работы с файлами и каталогами
- •Теоретические сведения Компоненты для работы с файлами и каталогами
- •Выбор дисковода
- •Просмотр и перемещение по дереву каталогов
- •Просмотр списка и выбор имени файла
- •Выбор маски для списка файлов
- •Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа № 19Создание многооконных приложений (mdi). Строка Состояний
- •Теоретические сведения Компонент tStatusBar(строка состояний)
- •Многооконные приложения
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 20КомпонентTChart для Построение диаграмм различных типов. Создание библиотек динамической компоновки (Dll). Статическое подключение Dll
- •Теоретические сведения Компонент tChart (диаграмма)
- •Пример 20. 1. Построить график функции с шагом 0.1 в интервале [-5;5]. Экранная форма программы показана на рис. 20.2. Приведем фрагмент кода программы с обработкой основных событий:
- •Implementation
- •Создание библиотеки динамической компоновки (dll)
- •Пример 20. 2. Создать библиотеку содержащую функции сложения целых и вещественных чисел, а также строк. Код библиотеки имеет вид
- •Статический вызов библиотеки
- •Пример 20.3. Используем статически функции, описанные в библиотеке (см. Пример 20.2). Экранная форма программы показана на рис. 20.5. Фрагмент кода с использованием функций из библиотеки:
- •Implementation
- •Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа № 21Использование форм в библиотеках динамической компоновки (Dll). Динамическое подключение Dll.
- •Теоретические сведения Динамический вызов библиотеки
- •Implementation
- •Использование форм в библиотеках
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Домашнее задание № 6Компоненты: Поля редактирования, группа переключателей. Обработка событий клавиатуры
- •Теоретические сведения Компонент группа переключателей (tRadioGroup)
- •События клавиатуры
- •Порядок выполнения работы
- •Варианты:
- •Контрольные вопросы
- •Домашнее задание № 7Создание Справочного файла
- •Теоретические сведения Создание справочной системы
- •Порядок выполнения работы
- •Контрольные вопросы
- •Библиографический список
Процедуры и функции, реализующие диалоговые окна
Delphi предлагает ряд специальных процедур и функций для отображения простых диалоговых окон общего назначения:
P
rocedure ShowMessage(const Msg: string); отображает окно сообщения с кнопкой OK. Заголовок содержит название исполняемого файла приложения, а строка Msg выводится как текст сообщения (рис. 14.2);
Function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Word;
отображает окно сообщения в центре экрана и позволяет получить ответ пользователя. Параметр Msg содержит отображаемое сообщение. Окно сообщения может относиться к различным типам и наряду с сообщением содержать картинки. Тип окна определяется параметром DlgType, который может принимать следующие значения:
mtWarning;
mtError;
mtInformation;
mtConfirmation;
mtCustom.
Параметр Buttons является множеством, определяет набор кнопок окна и может принимать любые комбинации следующих значений:
mbYes — кнопка Yes;
mbNo — кнопка No;
mbOK — кнопка OK;
mbCancel — кнопка Cancel;
mbHelp — кнопка Help;
mbAbort — кнопка Abort;
mbRetry — кнопка Retry;
mbIgnore —кнопка Ignore;
mbAll — кнопка All.
Для значения параметра Buttons имеются константы, задающие предопределенный набор кнопок:
mbYesNoCancel=[ mbYes, mbNo, mbCancel];
mbOKCancel=[ mbOK, mbCancel];
mbYesAllNoAllCancel = [mbYes, mbYesToAll, mbNo, mbNoToAll, mbCancel];
mbOKCancel = [mbOK, mbCancel];
mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
mbAbortIgnore = [mbAbort, mbIgnore].
При нажатии любой из указанных кнопок (кроме Help) диалоговое окно закрывается, а результат (свойство ModalResult) возвращается функцией MessageDlg. Различные виды окон сообщений, созданные этой функцией, показаны на рис. 14.3;
function MessageBox(const Text, Caption: PChar; Flags: Longint = MB_OK): Integer;
отображает окно сообщения с заголовком Caption и позволяет получить ответ пользователя. Параметр Text содержит отображаемое сообщение. Параметр Flags задает кнопки окна и может принимать значения:
MB_ABORTRETRYIGNORE (кнопки Abort, Retry,Ignore)
MB_OK (кнопка OK, определена по умолчанию).
MB_OKCANCEL (кнопки OK, Cancel)
MB_RETRYCANCEL (кнопки Retry, Cancel)
MB_YESNO (кнопки Yes, No)
MB_YESNOCANCEL (кнопки Yes, No, Cancel)
В зависимости от выбора пользователя, функция возвращает значения:
IDOK =1 выбрана кнопка OK;
IDCANCEL =2 Cancel;
IDABORT =3 Abort;
IDRETRY =4 Retry;
IDIGNORE =5 Ignore;
IDYES =6 Yes;
IDNO =7 No.
Рис. 14.3. Виды окон сообщений функции MessageDlg
Обработчики исключений
В 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. Если же исключительная ситуация не возникла, то последовательно выполняются все операторы обоих блоков.