Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Индикаторы CheckBox и CheckListBox




 

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

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

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

Еще один компонент, имеющий индикаторы — список CheckListBox. Это ана­лог компонента ListBox, но около каждой строки списка имеется индикатор, состояние которого пользователь может изменять.

Свойства, общие у CheckListBox и ListBox, мы рассматривать не будем. А состояния индикаторов определяют два свойства: State и Checked. Оба эти свойства можно рассматривать как индексированные массивы, каждый эле­мент которого соответствует индексу строки. Эти свойства можно устанавливать программно или читать, определяя установки пользователя. Например, операторы

CheckListBoxl.Checked[1]:=true;

CheckListBoxl.State[2]:*cbGrayed;

устанавливают индикатор второй строки списка CheckListBoxl в состояние вы­бранного, а индикатор третьей строки — в промежуточное состояние (вспомним, что индексы начинаются с 0). Оператор

for i:=0 to CheckListBoxl.Items.Count — 1 do if CheckListBoxl.Checked[i] then...

проверяет состояние всех индикаторов списка и для выбранных пользователем строк осуществляет какие-то действия (в приведенном операторе на месте этих действий просто поставлено многоточие).

В компоненте CheckListBox имеется также событие OnClickCheck, возникаю­щее при каждом изменении пользователем состояния индикатора. Его можно ис­пользовать для обработки результатов изменения.

 

2.2.5. Таймер – компонент Timer

 

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

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

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

Например, если требуется, чтобы через 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 секунд после запус­ка таймера, можно вставить оператор

Timerl.Enabled:=false;.

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

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

 




Поделиться с друзьями:


Дата добавления: 2015-03-29; Просмотров: 692; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.