Содержание
- 2. Главная часть программного кода приложений - это процедуры обработки пользовательских событий. Чаще всего это обработчики событий
- 3. Программно-управляемые события для форм (TForm) OnCreate Событие происходит один раз за все время существования формы. При
- 4. Пример. Следующая процедура случайным образом задает размеры создаваемой формы: procedure TForm1.FormCreate(Sender: TObject); begin Randomize; {инициализация датчика
- 5. OnClose Обработчик вызывается только при использовании кнопки закрытия или вызова метода Close и может изменить стандартное
- 6. Особое поведение формы при закрытии обеспечивает переменная Action caNone запрет на закрытие формы. caHide форма становится
- 7. Процедура, которая закрывает форму только при нажатии кнопки "Yes" в окне диалога: procedure TForm1.FormClose(Sender: TObject; var
- 8. OnCloseQuery Обработчик вызывается только при использовании кнопки закрытия или вызова метода Close и может изменить стандартное
- 9. Пример. Форма является специальной и предназначена для ввода пароля. Форма не должна закрываться до тех пор,
- 10. Для строки ввода, используемой для указания пароля, необходимо установить свойство PasswordChar - * (набираемые символы будут
- 11. procedure TPasswordDlg.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if Password.Text = '' {если строка ввода пустая, то
- 12. Пользовательские события Основные группы пользовательских событий: события мыши; операции Drag&Drop (перетащить и бросить); события клавиатуры.
- 13. События мыши. Действия пользователя с мышью. Приложение может реагировать на следующие действия с мышью: Нажатие кнопки
- 14. Основные типы обработчиков: OnMouseDown, OnMouseUp: TMouseEvent = procedure (Sender : TObject; Button : TMouseButton; Shift :
- 15. Параметры процедур: Sender объект, на который воздействует мышью пользователь. Button нажатая кнопка мыши: mbLeft, mbMiddle, mbRight
- 16. События клавиатуры. Событие клавиатуры генерируется, как только будет нажата или отпущена некоторая клавиша. В этом случае
- 17. Windows самостоятельно обрабатывает большую часть нажатий клавиш: [Alt] + клавиша для вызова команд меню, клавиши, используемые
- 18. Куда направляются сообщения о событиях клавиатуры. Пользователь производит ввод с клавиатуры. Сообщение о событии получает элемент
- 19. Можно организовать обработку событий клавиатуры самой формой: перехват событий формой. Для этого достаточно установить (для формы!)
- 20. Это позволяет контролировать обработку нажатий клавиш. Исключение составляют клавиши: [Tab], [Backspace], клавиши со стрелками и т.п.,
- 21. Обработчики событий клавиатуры. При нажатии клавиши вызываются два обработчика событий: OnKeyDown OnKeyUp. Они взаимосвязаны и всегда
- 22. OnKeyDown OnKeyUp. Обработчики событий позволяют перехватывать нажатие сочетаний клавиш (с использованием [Shift], [Ctrl], [Alt]), а также
- 23. Оба обработчика имеют тип TKeyEvent: TKeyEvent = procedure (Sender: TObject; var Key: Word; Shift: TShiftState) of
- 24. Пример 1. При установке для Form1 свойства KeyPreview = True следующая процедура обеспечит многократное изменение цвета
- 25. Пример 2. При установке для Form1 свойства KeyPreview = True следующие процедуры обеспечат уменьшение высоты формы
- 26. procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if chr(Key) = ' ' {если отпущена
- 27. Использование в сравнениях констант При работе с параметром Key вместо кодов иногда гораздо удобнее использовать специальные
- 28. Константа 16-тиричный Клавиша код VK_SHIFT 10 Shift VK_CONTROL 11 Ctrl VK_MENU 12 Alt VK_ESCAPE 1B Esc
- 29. Пример 3. При установке для Form1 свойства KeyPreview = True процедура-обработчик события OnKeyDown обеспечит перемещение формы
- 30. procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_HOME then begin Left
- 31. Пример 4. При нажатии сочетания клавиш [Alt + F10] появляется соответствующее сообщение: procedure TForm1.FormKeyDown(Sender: TObject; var
- 32. OnKeyPress. Когда пользователь нажимает клавишу с символом ASCII в дополнение к ранее рассмотренным вызывается еще один
- 33. В отличие от типов обработчиков, приведенных выше: Key - символ нажатой клавиши. Клавиши, не имеющие символьного
- 34. Пример 5. Приведенная ниже процедура представляет пример простейшей обработки события KeyPress. При нажатии различных клавиш отслеживается,
- 35. procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin Form1.Caption := Form1.Caption + Key; end;
- 36. Обработка исключительных ситуаций При работе программы возможно возникновение различных нестандартных ситуаций (деление на нуль, попытка работы
- 37. Непосредственные проверки утяжеляют алгоритм решения задачи. В Object Pascal можно вынести обработку исключительных ситуаций в отдельные
- 38. Исключительные ситуации могут формироваться: процессором, операционной системой, средой Delphi, самой программой – пользовательской частью, стандартными подпрограммами.
- 39. Структура исключения Исключение с точки зрения языка Object Pascal представляет собой класс, являющийся потомком класса исключений
- 40. type Exception = class(TObject) private FMessage: string; FHelpContext: integer; public constructor Create(const Msg: string); constructor CreateFmt(const
- 41. constructor CreateRes(Ident: integer); constructor CreateResFmt(Ident: integer; const Args: array of const); constructor CreateHelp(const Msg: string; AHelpContext:
- 42. constructor CreateResHelp(Ident: integer; AHelpContext: integer); constructor CreateResFmtHelp(Ident: integer; const Args: array of const; AHelpContext: integer); destructor
- 43. Свойства класса Message - текст сообщения, которое появляется в окне сообщения при возникновении исключительной ситуации. HelpContext
- 44. Генерация исключительной ситуации При необходимости можно создавать исключение любым из конструкторов, или создать свой конструктор. Для
- 45. Создание исключения Объект-исключение можно создать с помощью одного из представленных конструкторов. Создание соответствующего объекта и вызов
- 46. Пример Необходимо получать сообщение об исключительной ситуации, суть которой в том, что некая переменная меньше 1:
- 47. Примеры стандартных классов исключительных ситуаций В библиотеках Delphi имеется достаточно классов, ответственных за обработку различных исключительных
- 48. Имя класса Когда возникает EAbstractError Попытка выполнения абстрактного метода EAccessViolation Обращение к недоступной области памяти (например,
- 49. EExternal Некорректное функционирование системы Windows EInOutError Ошибка файлового ввода/вывода EIntError Базовый класс для классов исключительных ситуаций
- 50. EIntOverflow Недопустимо большое значение при работе с целыми числами EOverflow Переполнение при работе с числами с
- 51. Контроль над исключительными ситуациями Язык Object Pascal предоставляет следующую конструкцию для контроля возникновения исключительных ситуаций: try
- 52. Порядок выполнения операторов: Последовательно выполняются операторы, расположенные между try и except. В случае возникновения при выполнении
- 53. Примечание. Секция else необязательна (сокращенная форма): try Операторы; except Обрабатываемые классы исключительных ситуаций end;
- 54. Конструкция try except end - структурированный оператор. Как и любой оператор, try except end можно поместить
- 55. Запись классов, предназначенных для обработки: оn имя класса do операторы; Таких классов может быть несколько. Поиск
- 56. Пример. Выполняется сложение целых чисел Y, Z: try X := Y + Z; except on EIntError
- 57. Если при выполнении оператора X := Y + Z возникнет ошибка переполнения EIntOverflow, то, тем не
- 58. В ряде случаев удобно использовать единый обработчик для любой исключительной ситуации. Блок try примет вид: try
- 59. Например: try X := Y + Z; except MyErrorProc; end; В случае возникновения любой исключительной ситуации
- 60. Если реализованной программистом обработки ошибки недостаточно, можно передать управление соответствующему стандартному обработчику Delphi с помощью зарезервированного
- 61. Пример. Выполняется деление: try X := 100 div Y ; except on EDivByZero do begin ShowMessage
- 62. Из секции, в которой располагаются обработчики исключительных ситуаций, можно генерировать другие исключительные ситуации. При этом слово
- 63. Например: try X := Y + Z; except on EIntError do raise EIntOverflow.Create (‘Возможно переполнение’); end;
- 64. Выполнение завершающих действий В некоторых случаях программисту не нужен собственный обработчик ошибок но требуется, чтобы даже
- 65. Для программирования подобных алгоритмов используется конструкция вида: try Операторы; finally Заключительные операторы; end; Заключительные действия будут
- 66. Пример. Освобождение памяти, выделенной для динамического массива, происходит независимо от успешности его обработки: var DynArr: array
- 67. Передача объектов, связанных с исключительными ситуациями При возникновении исключительной ситуации специальный обработчик создает соответствующий ей объект.
- 68. оn E: имя класса do операторы; Е – это произвольный идентификатор переменной (описывать ее не нужно),
- 70. Скачать презентацию