- •2. Визуальные компоненты
- •2.1. Свойства
- •2.2. События
- •2.3. Методы
- •If Edit1.CanFocus then Edit1.SetFocus; {перед получением фокуса производится проверка на возможность передачи фокуса компоненту}
- •3. Работа с текстом
- •3.1. Использование надписей
- •3.2. Однострочный редактор
- •3.3. Общие свойства, события и методы компонентов редактирования
- •3.4. Класс tStrings
- •3.5. Многострочный редактор
- •3.6. Использование списков
- •3.7. Таблица String Grid
- •4. Кнопки и переключатели
- •4.1. Работа с кнопками
- •4.1.1. Стандартная кнопка
- •4.1.2. Кнопка с рисунком
- •4.2. Работа с переключателями
- •4.2.1. Переключатель с независимой фиксацией
- •If CheckBox1.Checked then MessageDlg ('Время истекло! ', mtError, [mbОк], 0);
- •4.2.2. Переключатель с зависимой фиксацией
- •4.3. Объединение элементов управления
- •5. Использование форм
- •5.1. Свойства, методы и события форм
- •5.2. Организация взаимодействия форм
- •5.3. Особенности модальных форм
- •5.4. Шаблоны форм
- •5.5. Процедуры и функции, реализующие диалоги
- •5.6. Стандартные диалоги
- •If OpenDialog1.Execute then // при отмене диалога открытие файла не происходит
- •If SaveDialog1.Execute then { Получить имя файла }
- •6.Главное и контекстное меню, панели инструментов
- •6.1. Класс tMenuItem
- •6.2. Cоздание главного и контекстного меню
- •6.3. Динамическая настройка меню
- •6.4. Панели инструментов
- •7. Создание графических изображений
- •7.1. Классы для работы с графикой
- •7.2. Основные компоненты для размещения изображений
- •7.3. Типы графических объектов
- •7.4. Создание диаграмм
- •8. Печать объектов
- •8.1. Класс tPrinter
- •8.2. Печать текста
- •Var fPrn: Text; // объявлена переменная типа Text.
- •8.3. Диалоговые окна для работы с принтером
- •8.4. Печать графических изображений
- •8.4.1. Печать форм
- •8.4.2. Печать диаграмм
- •9. Работа с датами
- •9.1. Преобразование даты
- •9.2. Компоненты для ввода дат
- •10. Сохранение параметров программы.
- •Ini : tIniFile; //объявляем переменную типа inifile
- •Ini : tIniFile; //объявляем переменную типа inifile
- •11. Обработка исключительных ситуаций
- •Var f: File; begin AssignFile(f, 'Somefile.Ext'); try // оператор, в котором возможна ошибка Reset(f); // работы с файлом finally CloseFile(f) end;
Var f: File; begin AssignFile(f, 'Somefile.Ext'); try // оператор, в котором возможна ошибка Reset(f); // работы с файлом finally CloseFile(f) end;
Конструкция try..except также состоит из двух блоков (try и except):
try //операторы, выполнение которых может вызвать ошибку except //операторы, которые выполняются только в случае ошибки end;
Конструкция try..except работает так: если в любой из инструкций блока try возникает исключение, то управление передается первой инструкции блока except, которая ликвидирует исключительную ситуацию и восстановит работоспособность программы. Если же исключение не возникло, то инструкции блока except не выполняются.
Например,
var f: File; begin AssignFile(f, 'Somefile.txt'); try //оператор, в котором возможна ошибка Reset(f); // работы с файлом except ShowMessage(‘Ошибка работы с файлом Somefile.txt’); CloseFile(f) end end;
Блок except можно разбить на несколько частей с помощью конструкции on..do, позволяющей анализировать класс исключения для его более удобной и полной обработки:
try Оператор1; Оператор2; . . . except on Идентификатор1: класс исключения do Оператор обработки ИС этого класса; on Идентификатор2: класс исключения do Оператор обработки ИС этого класса; . . . else Операторы обработки исключения по умолчанию end;
При возникновении исключительной ситуации конструкции on..do просматриваются последовательно, в порядке их описания. Каждый тип исключительной ситуации, описанный после ключевого слова on, обраба- тывается именно этим блоком: только то, что предусмотрено в нем, и бу- дет реакцией на данную ситуацию. Если при этом обработчик родитель- ского класса стоит перед дочерним, последний никогда не получит управ- ление. Если класс возникшего исключения не совпадает с проверяемым классом, то выполняется оператор после слова else. Блок else является необязательным и может отсутствовать.
Идентификатор – это локальная переменная класса исключения, ко- торую можно использовать для доступа к объекту возникшего исключения внутри конструкции on..do. Идентификатор (произвольное имя, заданное программистом) является необязательным элементом и может отсутство- вать, при этом не ставится и разделительный знак двоеточия (:). Стандартная обработка подразумевает вывод на экран сообщения с указанием типа ошибки, имени модуля и адреса, где она имела место. Од- нако ее легко переопределить:
try U:= 220.0; R:= 0; I:=U/R; except on EZeroDivide do ShowMessage('Короткое замыкание!') end;
Можно обработать исключение со стандартным сообщением кода ошибки. Например:
try Reset(f); while not EOF(f) do begin … end; // возможна ошибка работы с файлом Close(f); except on E:EInOutError do ShowMessage(′При выполнении файло- вой операции’ + #13#10 + ‘возникла ошибка №′ + IntToStr(E.ErrorCode)) end;