- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Контрольні питання
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови.
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови.
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови.
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.5: основи створення прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.5: основи створення прикладних застосувань
- •План заняття
- •Контрольні питання
- •Контрольні питання:
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.5: основи створення прикладних застосувань
- •План заняття
- •Проект Delphi
- •Модулей в проект.
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Функции преобразования в числовой формат и обратно
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •7.1. Простые типы
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Печать с помощью объекта Printer
- •Подготовка и печать отчетов с помощью QuickReport — компоненты QuickRep, qrSubDetail, qrLabel, qrExpr, qrSysData, qrMemo, qrRichText, qrShape, qrImage
- •Контрольні питання
- •Змістовий модуль 3: масиви. Записи та множини
- •Тема 3.1: масиви
- •План заняття
- •Листинг 1. Инициализация и вывод массива
- •Ввод массива
- •Использование компонента StringGrid
- •Листинг 2. Ввод и обработка массива целых чисел
- •Листинг 3. Процедура обработки события OnKeyPress
- •Листинг 4. Ввод и обработка массива дробных чисел
- •Контрольні питання
- •Объявление записи
- •Инструкция with
- •Ввод и вывод записей в файл
- •Вывод записи в файл
- •Листинг 25. Добавление записей в файл
- •Чтение записи из файла
- •Листинг 26. Чтение записей из файла
- •Контрольні питання
- •Змістовий модуль 3: масиви. Записи та множини
- •Тема 3.3: множини
- •План заняття
- •Контрольні питання
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 3: масиви. Записи та множини
- •Тема 3.4: множини обовязкова контрольна робота №28
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.1: робота з файлами
- •План заняття
- •Объявление файла
- •Назначение файла
- •Вывод в файл
- •Открытие файла для вывода
- •Листинг 20. Создание нового или замещение существующего файла
- •Листинг 21. Добавление в существующий файл
- •Ошибки открытия файла
- •Закрытие файла
- •Пример программы
- •Листинг 22. Простая база данных (запись в файл)
- •Ввод из файла
- •Открытие файла
- •Листинг 23. Обработка ошибки открытия файла (фрагмент программы)
- •Чтение данных из файла
- •Чтение чисел
- •Чтение строк
- •Конец файла
- •Листинг 24.. Чтение из файла
- •Контрольні питання
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.1: файлові структури даних. Динамічні структури даних
- •План заняття
- •Контрольні питання
- •Указатели
- •Динамические переменные
- •Листинг 27. Создание, использование и уничтожение динамических переменных
- •Листинг 28. Добавление элемента в начало динамического списка
- •Упорядоченный список
- •Добавление элемента в список
- •Листинг 29. Добавление элементов в упорядоченный список
- •Удаление элемента из списка
- •Листинг 30. Удаление узла из списка
- •Контрольні питання
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.2: динамічні структури
- •План заняття
- •Вариантные переменные
- •Контрольні питання
- •Const-параметры
- •Контрольні питання
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.2: динамічні структури
- •План заняття
- •Способы вызова подпрограмм
- •Контрольні питання
- •Этапы разработки программы
- •Спецификация
- •Создание установочного диска
- •Алгоритм и программа
- •Контрольні питання
- •Этапы разработки программы
- •Спецификация
- •Создание установочного диска
- •Алгоритм и программа
- •Контрольні питання
- •Контрольні питання
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.2: Візуальні компоненти
- •План заняття
- •Контрольні питання
- •Распознавание источника события, нажатых кнопок и клавиш, координат курсора
- •События клавиатуры
- •Распознавание нажатых клавиш
- •Контрольні питання
- •Создание нового IntraWeb приложения
- •Редактирование главной формы
- •Написание обработчика события для кнопки
- •Запуск созданного приложения
- •Контрольні питання
- •Управляющие кнопки Button и BitBtn
- •Кнопка с фиксацией SpeedButton
- •Группы радиокнопок — компоненты RadioGroup, RadioButton и GroupBox
- •Контрольні питання
- •Листинг 28. Добавление элемента в начало динамического списка
- •Упорядоченный список
- •Добавление элемента в список
- •Листинг 29. Добавление элементов в упорядоченный список
- •Удаление элемента из списка
- •Листинг 30. Удаление узла из списка
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Упражнения. Совершенствование проекта
- •Контрольні питання:
- •Контрольні питання
- •Упражнения
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами. Вызуальны компоненти. Бази даних.
- •Тема 6.2: візуальні компоненти
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.3: форми та меню
- •План заняття
- •Контрольні питання
- •Контекстное всплывающее меню — компонент PopupMenu
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.4: обробка виключних ситуацій
- •План заняття
- •Конрольні питання
- •Упражнения. Совершенствование проекта.
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами
- •Тема 6.4: обробка виключних ситуацій
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питанна
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.6: основи баз даних
- •План заняття
- •Классификация баз данных
- •Локальная база данных
- •Удаленная база данных
- •Структура базы данных
- •Контрольні питання
- •Контрольні питання
- •Упражнения
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Insert into Имя таблицы
- •Insert into Имя_таблицы
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Рисование круга
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи обов’язкова контрольна робота №63
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
Контрольні питання
Навести характеристику поняття синтаксичних помилок
Навести характеристику поняття логічних помилок
Навести характеристику поняття динамічних помилок
Охарактеризувати поняття виключна ситуація
АУДИТОРНЕ ЗАНЯТТЯ
Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
Тема 6.5: організація прикладних застосувань
Лекція №48 – Керування прикладними застосуваннями
План заняття
Характеристика класу TApplication
Призначення класу TApplivation
Характеристика властивостей та функцій даного класу
Для описания приложения в целом используется класс TApplication. Объект Application этого класса автоматически создается системой Delphi при каждом запуске приложения. Методы и свойства класса TApplication отражают принципы, установленные в операционной системе Windows, для создания, выполнения, поддержания и уничтожения приложения.
Объект Application представляет собой окно Windows со стандартной оконной API-процедурой WndProc. Delphi дает возможность программисту работать на более высоком уровне без необходимости использования функций API. Таким образом, класс TApplication упрощает взаимодействие между разработчиком и окружением Windows.
Класс TApplication применяется для:
выдачи сообщений Windows;
подключения справочной системы;
управления исключительными ситуациями;
управления фундаментальными частями, определенными операционной системой Windows для приложения, такими, как MainWindow, WindowClass.
К любой форме в проекте можно также добавить компонент ApplicationEvents, предназначенный для перехвата событий приложения и замещения стандартных обработчиков событий, используемых IDE.
Информация об объекте Application находится в исходном файле проекта (*.DPR). На стадии разработки приложения данный объект недоступен, то есть нельзя просмотреть или изменить значения его свойств, а обработчики событий можно создавать только вручную.
При создании нового приложения в файле проекта изначально автоматически формируется вызов следующих трех методов.
Процедура Initialize, которая инициализирует приложение в целом, при этом выполняются операторы раздела initialization всех модулей приложения.
Процедура CreateForm (FormClass: TFormClass; var Reference), которая создает форму и присваивает ее переменной, определяемой параметром Reference. Тип создаваемой формы задается параметром FormClass. Владельцем данной формы является объект Application. Метод CreateForm вызывается для каждой формы, входящей в состав приложения. Если требуется отменить автоматическое создание формы, то необходимо исключить из файла проекта данный метод. Перед использованием метода форма обязательно должна быть предварительно создана, иначе произойдет ошибка.
3) Процедура Run, которая непосредственно запускает приложение.
В большинстве случаев (особенно при создании небольших и несложных приложений) нет необходимости работать со свойствами, методами и событиями объекта Application, но иногда требуется использовать некоторые из них для повышения эффективности работы приложения. В табл. 7.1 приведены наиболее часто используемые свойства объекта Application.
Далее будут более подробно рассмотрены некоторые из вышеперечисленных свойств и даны необходимые пояснения к их использованию.
Свойство ExeName (типа String) доступно только для чте-1 ния и только в момент выполнения приложения. Для того чтобы из спецификации файла выделить путь и имя файла, используются соответственно файловые функции ExtractFilePath и ExtractFileName.
Свойство HelpFile (тип String) доступно во время выполнения приложения. По умолчанию значением данного свойства является пустая строка. Свойства и методы, связанные с выводом справочной информации, не действуют до тех пор, пока не будет задано имя справочного файла. Имя указывается, как правило, в файле проекта или в обработчике события создания главной формы. В случае, когда необходимо использовать несколько справочных файлов, они могут выбираться поочередно в зависимости от ситуации.
В этой главе уместно также рассмотреть несколько функций, используемых для обеспечения работы со справочными файлами.
Функция HelpCommand (Command: Word; Data: Lon-gint) : Boolean обеспечивает возможность доступа к командам в Windows Help API. При вызове этого метода открывается стандартное окно справочной системы Windows.
Данному файлу (winhelp.exe) передается команда, указанная параметром Command, и номер раздела справочной системы, задаваемый параметром Data. В результате на экране появляется необходимое окно справочной системы Windows.
Значение параметра Command определяет тип помощи. Наиболее часто используются следующие команды:
HELPFINDER - на экран выводится диалоговое окно Help Topics версии 4.0. В случае использования данной команды, параметр Data игнорируется;
HELPKEY - в справочном окне отображается тема, определяемая ключевым словом, адрес которого задан параметром Data;
HELPCONTEXT - в окне справки будет отображен раздел, номер которого указан значением параметра Data.
Функция HelpContext (Context: THelpContext): Boolean открывает стандартное окно справочной системы Windows и отображает раздел, определяемый параметром Context. Прежде чем вызывать данный метод, необходимо задать значение свойства HelpFile, чтобы оно указывало на имя существующего справочного файла. После открытия заданного справочного файла метод HelpContext вызывает помощь в соответствии с параметром Context. Данный параметр имеет значение ID (целое число) справочного контекста внутри справочного файла и ассоциируется с управляющими элементами через одноименное свойство HelpContext этих элементов.
Свойство Hint (тип String) содержит в себе строку подсказки для компонента независимо от того, отображается подсказка на экране или нет. Параллельно с данным свойством целесообразно рассмотреть еще несколько свойств.
Свойство HintPause (тип Integer) устанавливает, через какое время после остановки указателя мыши над областью компонента будет показан текст справки, содержащийся в свойстве Hint. По умолчанию текст появляется через 0,5 с.
Свойство HintHidePause (тип Integer) определяет временную задержку, в течение которой справочный текст будет отображаться над компонентом. По умолчанию данная задержка составляет 2,5 с.
Свойство HintColor (тип TColor) задает цвет фона подсказки. По умолчанию фон будет желтым.
Действие свойств HintPause, HintHidePause и HintColor распространяется на все формы и компоненты приложения.
Наряду с этим, объект Application имеет весьма важный метод ProcessMessages, который рассматривается ниже.
При выполнении программой длительных операций либо циклов обработки больших объемов данных приложение не реагирует на действия пользователя и не производит своевременного отображения происходящих изменений. Чтобы избежать возникновения подобных ситуаций, необходимо использовать метод ProcessMessages. Данный метод вызывает обработку поступивших сообщений, которые ожидают своей очереди.
Вызов метода ProcessMessages рекомендуется вставлять во все циклы, способные привести к достаточно длительной работе приложения. Этот метод также необходимо использовать параллельно с проверкой условия на выход из цикла в случае, когда требуется, например, предоставить пользователю возможность прерывать выполнение данного длительного цикла нажатием кнопки или переключателя. Если в такой ситуации не использовать метод ProcessMessages, то приложение просто не будет реагировать на нажатие клавиш, и, следовательно, прервать его выполнение не удастся до тех пор, пока цикл не будет отработан до конца, что безусловно создает некоторые проблемы для пользователя.
Для того чтобы обеспечить закрытие приложения во время выполнения цикла, помимо использования метода ProcessMessages, следует также добавить в тело цикла условие для проверки свойства Terminated (тип Boolean). Если данное свойство имеет значение True, то это означает, что поступила команда на закрытие приложения и необходимо прервать выполнение цикла и завершить работу программы.
Завершение работы приложения осуществляется при помощи метода Terminate. Данный метод обеспечивает освобождение памяти, занятой проектами, с последующим завершением приложения. Однако вместо этого метода чаще используется метод Close главной формы приложения.
Использование метода ProcessMessages можно проиллюстрировать на следующем примере.
Пример 7.1. Пусть требуется создать приложение с длительным циклом, который прокручивает счетчик от 0 до 100 000. При этом на экране отображается, сколько процентов данной операции выполнено. Необходимо обеспечить возможность остановки, а также выхода из программы в момент выполнения цикла.
Решение. Для реализации этой задачи следует создать форму, на которой размещаются две кнопки Button и надпись Label.
Первая кнопка имеет заголовок "Начать" и используется для запуска выполнения цикла, а вторая кнопка с заголовком "Остановить" соответственно позволяет прервать выполнение цикла. Надпись Label будет отображать процент выполнения операции в текущий момент времени. Форма принимает примерно такой вид, как показано на рис. 7.1.
Код приложения, реализующего решение данной задачи, приведен в листинге 7.1.
Как видно из данного листинга, в теле цикла вызывается метод ProcessMessages. После него выполняется проверка двух условий. Первое из них останавливает цикл в случае, когда флаг Ostanov имеет значение True (это значение будет установлено, если нажата кнопка Остановить). Второе условие осуществляет выход из программы, если был выполнен запрос на ее закрытие.
Если убрать из программы вызов метода ProcessMessages, то до окончания цикла приложение не будет реагировать ни на какие запросы пользователя, а кроме того не будет отображать изменение надписи Label. Иначе говоря, программа просто зависнет на время выполнения цикла.
Поэтому при разработке приложений следует предусматривать возможность возникновения подобных ситуаций и использовать метод ProcessMessages для предотвращения описанных недостатков.
Для обеспечения возможности автоматического создания в редакторе кода заготовок обработчиков событий объекта Application, в Delphi 5 был введен компонент ApplicationEvents ^ События приложения становятся доступными на этапе проектиро-мания при размещении данного компонента на форме. В этом случае обработчики событий программируются так же, как и обработчики событий других объектов, например кнопок либо переключателей.
Из наиболее часто используемых событий приложения можно ныделить события Onldle и OnException.
Событие Onldle (тип TIdleEvent) возникает при простое приложения, например, когда оно ожидает ввода от пользователя. Для того чтобы в этом случае приложение выполняло какие-либо действия, используется обработчик события Onldle. Операции, пключенные в этот обработчик, выполняются каждый раз, когда приложение заканчивает текущую работу и переходит в режим простоя. Код обработчика данного события должен занимать мало места в памяти и выполняться быстро, чтобы не тормозить работу приложения в целом.
Тип TIdleEvent имеет параметр Done, который по умолчанию установлен в True. В этом случае, после того как произошло собітие Onldle, вызывается функция Windows API WaitMessage, которая передает управление другим приложениям, пока новое сообщение не появится в очереди приложения. Если Done имеет значение False, приложение не передает управление другим программам, пока оно находится в состоянии простоя.
Событие Onldle вызывается только один раз после перехода приложения в режим простоя. Оно не вызывается повторно, если только Done не установлено в False, что, вообще говоря, не рекомендуется, поскольку приложение, у которого параметр Done имеет значение False, тратит очень много времени работы центрального процессора, что заметно замедляет работу системы в целом.
Процедура обработки события Onldle обычно описывается и используется в модуле главной формы приложения.