Базовые компоненты. Компонент Timer

   
На этом шаге мы рассмотрим назначение, основные свойства и пример использования этого компонента.

   
Компонент Timer (рисунок 1) генерирует последовательность событий Tick.


Рис.1. Компонент Timer

   
Обычно он используется для активизации с заданным периодом некоторых действий. Компонент является невизуальным (во время работы
программы в окне не отображается). Свойства компонента приведены в таблице 1.

Таблица 1. Свойства компонента Timer

СвойствоОписание
IntervalПериод генерации события Tick. Задается в миллисекундах
EnabledРазрешение работы. Разрешает (значение True) или запрещает (значение False) генерацию события Tick

   
Программа "Секундомер" (ее форма приведена на рисунке 2, а текст - в листинге ниже) демонстрирует использование компонента Timer.


Рис.2. Форма программы "Секундомер"

   
Во время создания формы свойству Interval таймера надо присвоить значение 500. Кнопка button1 предназначена как для запуска
секундомера, так и для его остановки. В начале работы программы значение свойства Enabled компонента Timer равно False,
поэтому таймер не работает (не генерирует события Tick). Процедура обработки события Click на кнопке button1 проверяет
состояние таймера и, если он не работает, присваивает значение True свойству Enabled компонента Timer и тем самым
запускает таймер. Процедура обработки события Tick инвертирует значение свойства Visible компонента label2 (в результате
двоеточие мигает с периодом 0,5 секунд) и, если двоеточие скрыто, завершает свою работу. Если двоеточие отображается, то она увеличивает счетчик
времени и выводит в поле компонентов label1 и label3 значения счетчиков минут и секунд (величину интервала с момента запуска
секундомера). Если секундомер работает, то щелчок на кнопке Стоп (button1) останавливает секундомер.

   
Приведем текст приложения.

.   .   .   .   
	private: 
		 int m; // количество минут 
		 int s; // количество секунд
.   .   .   .   
// щелчок на кнопке Пуск/Стоп 
private: System::Void button1_Click(System::Object^  sender, 
        System::EventArgs^  e) {
	 if (timer1->Enabled) 
		{ 
			// Таймер работает, значит, щелчок на кнопке Стоп. 
			// Остановить таймер. 
			timer1->Enabled = false; 
			// Изменить текст на кнопке 
			// и сделать доступной кнопку Сброс 
			button1->Text = "Пуск"; 
			button2->Enabled = true; 
			label3->Visible = true; 
		} 
		else 
		{ 
			// Таймер не работает, значит, щелчок на Пуск. 
			// Запускаем таймер. 
			timer1->Enabled = true; 
			// изменить текст на кнопке 
			button1->Text = "Стоп"; 
			// и сделать недоступной кнопку Сброс 
			button2->Enabled = false; 
		} 
 }

// щелчок на кнопке Сброс 
private: System::Void button2_Click(System::Object^  sender, 
      System::EventArgs^  e) {
	m = 0; 
	s = 0; 
	label1->Text = "00"; 
	label2->Text = "00"; 
 }

// сигнал от таймера 
private: System::Void timer1_Tick(System::Object^  sender, 
          System::EventArgs^  e) {
	// двоеточие мигает с периодом 0.5 сек 
	if (label3->Visible) 
	{ 
		if (s < 59) 
		{ 
			s++; 
			if (s < 10) label2->Text = "0" + s.ToString(); 
			else label2->Text = s.ToString(); 
		} 
		else 
		{ 
			if (m < 59) 
			{ 
				m++; 
				if (m < 10) label1->Text = "0" + m.ToString(); 
				else label1->Text = m.ToString(); 
				s = 0; 
				label2->Text = "00"; 
			} 
			else 
			{ 
				m = 0; 
				label1->Text = "00"; 
			} 
		} 
		label3->Visible = false; 
	} 
	else 
		label3->Visible = true; 
 }

Архив проекта можно взять здесь.

   
На следующем шаге мы рассмотрим компонент NumericUpDown.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий