Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прил 3.3 (к ЛР3) Компоненты управления.doc
Скачиваний:
6
Добавлен:
17.03.2015
Размер:
146.43 Кб
Скачать

5. Индикаторы CheckBox

Индикаторы с флажкомCheckBox(см. рис. 1 раздела 1) используются в приложениях в основном для того, чтобы пользователь мог включать и выключать какие-то опции, или для индикации состояния. При каждом щелчке пользователя на индикаторе его состояние изменяется, проходя в общем случае последовательно через три значения: выделение (появление черной галочки), промежуточное (серое окно индикатора и серая галочка) и не выделенное (пустое окно индикатора). Этим трем состояниям соответствуют три значения свойства компонентаState:cbChecked,cbGrayed,cbUnchecked. Впрочем, эти три состояния допускаются только при значении другого свойстваAllowGrayedравномtrue. Если жеAllowGrayed = false(значение по умолчанию), то допускается только два состояния: выделенное и не выделенное. ИState, иAllowGrayedможно устанавливать во время проектирования или программно во время выполнения.

Промежуточное состояние обычно используется, если индикатор применяется для отображения какой-то характеристики объекта. Например, если индикатор призван показать, какой регистр использовался при написании какого-то фрагмента текста, то в случае, если весь текст написан в верхнем регистре индикатор может принимать выделенное состояние, если в нижнем — не выделенное, а если использовались оба регистра — промежуточное.

Проверять состояние индикатора можно не только по значению State, но и по значению свойстваChecked. ЕслиCheckedравноtrue, то индикатор выбран, т.е.State = cbChecked. ЕслиCheckedравноfalse, тоStateравноcbUncheckedилиcbGrayed. УстановкаCheckedвtrueво время проектирования или выполнения автоматически переключаетStateвcbChecked.

Как и в радиокнопке, в индикаторе CheckBox надпись задается свойством Caption, а ее размещение по отношению к индикатору — свойством Alignment.

6 Таймер — компонент Timer

КомпонентTimerпозволяет задавать в приложении интервалы времени. Таймер находит многочисленные применения: синхронизация мультипликации, закрытие каких-то окон, с которыми пользователь долгое время не работает, включение хранителя экрана или закрытие связей с удаленным сервером при отсутствии действий пользователя, регулярный опрос каких-то источников информации, задание времени на ответ в обучающих программах — все это множество задач, в которых требуется задавать интервалы времени, решается с помощью таймера.

Таймер — невизуальный компонент, который может размещаться в любом месте формы. Он имеет два свойства, позволяющие им управлять: Interval— интервал времени в миллисекундах иEnabled— доступность. СвойствоIntervalзадает период срабатывания таймера. Через заданный интервал времени после предыдущего срабатывания, или после программной установки свойстваInterval, или после запуска приложения, если значениеIntervalустановлено во время проектирования, таймер срабатывает, вызывая событиеOnTimer. В обработчике этого события записываются необходимые операции.

Если задать Interval = 0илиEnabled = false, то таймер перестает работать. Чтобы запустить отсчет времени надо или задать Enabled = true, если установлено положительное значение Interval, или задать положительное значение Interval, если Enabled = true.

Например, если требуется, чтобы через 5 секунд после запуска приложения закрылась форма — заставка, отображающая логотип приложения, на ней надо разместить таймер, задать в нем интервал Interval = 5000, а в обработчик события OnTimerвставить операторClose, закрывающий окно формы.

Если необходимо в некоторой процедуре запустить таймер, который отсчитал бы заданный интервал, например, 5 секунд, после чего надо выполнить некоторые операции и отключить таймер, это можно сделать следующим образом. При проектировании таймер делается доступным (Enabled = true), но свойствоIntervalзадается равным0. Таймер не будет работать, пока в момент, когда нужно запустить таймер, не выполнится оператор

Timer1.Interval := 5000;

Через 5 секунд после этого наступит событие OnTimer. В его обработчике надо задать оператор

Timer1.Interval := 0;

который отключит таймер, после чего можно выполнять требуемые операции.

Другой эквивалентный способ решения задачи — использование свойства Enabled. В время проектирования задается значениеInterval = 5000и значениеEnabled = false. В момент, когда надо запустить таймер выполняется оператор

Timer1.Enabled := true;

В обработчик события OnTimer, которое наступит через 5 секунд после запуска таймера, можно вставить оператор

Timer1.Enabled:=false;

который отключит таймер.

Таймер точно выдерживает заданные интервалы Interval, если они достаточно велики — сотни и тысячи миллисекунд. Если же задавать интервалы длительностью десятки или единицы миллисекунд, то реальные интервалы времени оказываются заметно больше вследствие различных накладных расходов, связанных с вызовами функций и иными вычислительными аспектами.