Методические указания. 1. Компонент Timer (страница System)

1. Компонент Timer (страница System)

Таймер - это невизуальный компонент, который используется для запуска процедур, функций и событий в указанные интервалы времени.

Основные свойства:

¨ Interval – интервал временив миллисекундах.

¨ Enabled – управление работой таймера (используется для запуска/остановки таймера)

ú true таймер запущен

ú false таймер остановлен

Эти свойства можно менять в процессе проектирования в окне Инспектора Объектов и в процессе выполнения программы.

Основное событие:

¨ OnTimer – выполняется при истечение времени, указанного в свойстве Interval

v Пример. В качестве примера создадим бегущую строку.

Определим строку, которую будем использовать в качестве бегущей, как переменнуютипа String. Описать переменную нужно в разделе описания переменных в блоке implementation редактируемого модуля программы

Строка будет располагаться в окне редактирования Edit. Чтобы сделать строку бегущей, надо использовать таймер. Для этого на форме надо разместить компонент Timer и задать его свойства

ÞInterval = 100

ÞEnabled = true

В обработчик события OnTimer (вызвать ее можно двойным щелчком на компоненте Timer) вставить операторы, осуществляющие циклический сдвиг строки:

implementation

var

Str: string;

procedure TForm1.Timer1Timer (Sender: TObject)

var

first: char; // первый символ

i: integer;

begin

Edit1.Clear;

if not(Str.IsEmpty) // Если строка не пуста

then

begin

Edit1.Text:= Str;
first:= Str[1];

for i=1 to Str.Length do //Циклический сдвиг строки

Str[i] = Str[i+1]; //на один символ влево

Str[Str.Length] = first;

end;

end;

Теперь каждый раз по истечении 100 миллисекунд (0,1 сек) строка в окне редактирования Edit будет циклически сдвигаться влево, т.е. это будет бегущая строка.

2. Компонент PageControl (страница Win32)

PageControl - многостраничная панель, которая позволяет экономить пространство окна приложения, размещая на од­ном и том же месте страницы разное содержание.

Properties

¨ ActivePage - содержит указатель типа TTabSheet на активную страницу

¨ PageCount - число страниц, помещенных на панели (доступно только программно)

Чтобы задавать и редактировать страницы этого ком­понента, надо щелкнуть на нем правой кнопкой мыши. Во всплывшем меню вы можете видеть коман­ды:

ú New Page — создать новую страницу

ú Next Page — переключиться на следующую страницу

ú Previous Page — переключиться на предыдущую страницу

ú Delete Page —удалить страницу

Каждая страница является объектом типа TTabSheet. Это панель, на которой можно размещать любые компоненты. Кроме того каждая страница обладает своими свойствами:

¨ Caption - надпись для страницы

¨ TabVisible - отвечает за видимость вкладки

v Для рассматриваемого примера можно использовать многостраничную панель для экономии места на форме. Например, на этом компоненте можно создать 3 страницы, называющихся (надписанных) так: «Текст», «Скорость», «Размер шрифта». На каждой странице будем помещать управляющие элементы, отвечающие за соответствующие параметры бегущей строки.

3. Компонент DateTimePicker (страница Win32)

DateTimePicker визуальный компонент для задания даты или времени.

Основные свойства:

¨ Kind – тип отображаемой информации

ú dtkDate отображение даты.

ú dtkTime отображение времени

¨ Date – значение даты

¨ Time – значение времени

¨ DateFormat – формат отображения даты

ú dfShort дд. мм. гггг (27.01.2009)

ú dfLong дд месяц гггг г. (15 марта 2004 г.)

Время всегда отображается в формате чч:мм:сс (12:47:25)

¨ DateMode – способ изменения даты (в процессе выполнения программы)

ú dmComboBox с помощьювыпадающего календаря

ú dmUpDown с помощью кнопки-счетчика (отдельно по каждому полю)

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

¨ MaxDate – максимальное возможное значение даты

¨ MinDate – минимальное возможное значение даты

Основное событие:

¨ OnChange – выполняется при изменении данных.

Во время выполнения программы наиболее важными является свойство Date или Time (в зависимости от значения, установленного в свойстве Kind). Для изменения их значений в процессе выполнения программы можно использовать следующие методы:

¨ DecodeDate (year, month, day) – разбивает дату на 3 составляющие – год, месяц, день.

¨ DecodeTime(hour, min, sec, msec) - разбивает время на 4 составляющие – часы, минуты, секунды, милисекунды.

¨ FormatString(format) – форматированный вывод даты или времени.
format – символьная строка, например:

ú “ddddd” – дата в формате дд. мм. гггг (17.08.2000)

ú “dddddd” – дата в формате дд месяц гггг г. (15 марта 2004 г.)

ú “tt” – время в формате чч:мм:сс (18:33:25)

v Пример. Изменим текст бегущей строки так, чтобы она сообщала о дате, выбранной по календарю. Добавим на страницу “Текст” компонент DateTimePicker и установим его свойства:

Þ Kind:= dtkDate

Þ DateFormat:= dfLong

Þ DateMode:= dmComboBox

В обработчик события OnChange (вызвать ее можно двойным щелчком рядом с названием события на закладке Events Инспектора Объектов) вставить операторы, осуществляющие изменение текста строки:

procedure TForm1.DateTimePicker1Change(Sender: TObject);

var

Str: string;

begin

Str:= DateTimePicker1.Date.FormatString("dddddd") + ‘ ‘;

end;

Теперь каждый раз при нажатии стрелки компонента DateTimePickerпользователь сможет выбрать дату в календаре и соответственно изменится текст бегущей строки.

4. Компонент TrackBar (страница Win32)

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

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

Properties

¨ Position – текущее положение. Это свойство можно задавать во время проектирования или программно во время выполнения. При перемещении пользователем ползунка можно прочитать значение Position, характеризующее позицию, в которую пользователь переместил ползунок.

¨ Min, Мах - границы изменения свойства Position

За внешний вид ползунка отвечают свойства:

¨ Orientation - ориентация ползунка:

ú trHorizontal — горизонтальная

ú trVertical — вертикальная

¨ TickMarks - указывает размещение шкалы относительно компонента

ú tmBottomRight - снизу или справа

ú tmTopLeft - сверху или слева

¨ TickStyle - способ изображения шкалы

ú tsAuto - автоматическая прорисовка шкалы

ú tsNone - отсутствие шкалы

¨ Frequency - частота нанесения меток

¨ Cursor - вид курсора, который будет появляться при наведении на компонент

¨ SelStart и SelEnd - позволяют визуально выделить на шкале некоторый диапазон, который о чем-то говорит пользователю, например, рекомендуемый диа­пазон значений. При этом ничто не мешает пользователю выйти за пределы этого диапазона

¨ LineSize - определяют, насколько смещается ползунок, если пользователь управляет им с помощью клавиш со стрелками

¨ PageSize - определяют, насколько смещается ползунок, если пользователь управляет им с помощью клавиш PageUp и PageDown

Основное событие:

¨ OnChange – возникает при перемещении пользователем ползунка. В обработчике этого события можно прочитать значение Position и использовать его для управления каким-то компонентом.

v В нашем примере пользователь будет управлять скоростью движения бегущей строки. Для этого на страницу «Скорость» перенесите компонент TrackBar. Поэкспериментируйте с его свойствами TickMarks, TickStyle, Orientation. Установите свойства:

Þ Min:=0

Þ Max:=10

Þ Position:= 5

В обработчике события OnChange (функция-обработчик вызывается двойным щелчком мыши на компоненте) нужно изменять скорость движения бегущей строки, т.е. сокращать или увеличивать интервал времени, после которого происходит циклический сдвиг строки:

procedure TForm1.TrackBar1Change(Sender: TObject)

begin

Timer1.Interval:= 200-(TrackBar1.Position)*20;

end;

5. Компонент UpDown (страница Win32)

UpDown - кнопка-счетчик в сочетании с компонентами Edit и другими позволяющая вводить цифровую информацию. Компонент UpDown превращает окно редактирования Edit в компонент, в котором пользователь может выбирать целое число, изменяя его кнопками со стрелками.

Если установить в true свойствоReadonly окна Edit, то пользователь просто не сможет ввести в окно какой-либо свой текст и вынужден будет ограничиться выбором числа.

Основные свойства:

¨ Associate - связывает кнопки со стрелками с одним из оконных компонентов, обычно с Edit.

¨ AlignButton – расположение кнопок

ú UdLeft слева от окна

ú UdRight- справа от окна

¨ Orientation – ориентация кнопок

ú UdHorizontal - по вертикали (одна под другой)

ú UdVertical - по горизонтали (одна рядом с другой)

¨ ArrowKeys – управление компонентом с клавиатуры

ú true - с помощью клавиш со стрелками

ú false не управляются с клавиатуры

¨ Min - минимальное значение чисел

¨ Мах - максимальное значение чисел

¨ Increment - приращение числа при каждом нажатии на кнопку

¨ Position - те­кущее значение числа (в диапазоне Min — Мах)

¨ Wrap - определяет, как ведет себя компонент при достижении максимального или минима­льного значений

ú false - при увеличении или уменьшении числа до максимального или минимального значения это число фиксируется на предельном значении и нажатие кнопки, пытающей­ся увеличить максимальное число или уменьшить минимальное, ни к чему не приводит;

ú true - попытка превысить максимальное число приводит к его сбросу на минимальное значение. Аналогично, попытка уменьшить минимальное число приводит к его сбросу на максимальное значение, т.е. изменение чисел «закольцовывается»

Основное событие:

¨ OnChanging – возникает при изменении значения UpDown. В обработчике этого события можно читать значения свойства Position, чтобы узнать, какое число задал пользователь

v В нашем примере будем менять размер шрифта. Для этого на страницу «Размер шрифта» добавьте компоненты Edit2 и UpDown. Установите свойства компонента UpDown:

Þ Associate: = Edit2 (выбрать значение этого из выпадающего списка этого свойства)

Þ Max:= 30

Þ Min:= 10

Þ Position:= 20 (текущее значение)

Þ Increment:= 2 (шаг изменения при нажатии стрелок)

В функции UpDown1Changing - обработчике события OnChanging компонента UpDown1 нужно менять размер шрифта в окне редактирования, где расположена бегущая строка:

Edit1.Font.Size:= UpDown1.Position;

6. ProgressBar (Win32)

ProgressBar - индикатор процесса выполнения длительной процедуры.

Properties

¨ Min - минимальное значение

¨ Мах - максимальное значение

¨ Position - те­кущая позиция (в диапазоне Min — Мах)

¨ Orientation – ориентация компонента

ú рdHorizontal - вертикально

ú рdVertical - горизонтально

¨ Step – шаг перемещения индикатора при изменения позиции на 1

¨ Smooth – тип индикатора

ú true - сплошной

ú false разделенный на блоки (1 блок соответствует изменению на 1 позицию, т.е. на величину, указанную в свойстве Step)

v Пример программы «Таймер-секундомер»

Поместим на форму MyForm компоненты

Þ MyTimer

Þ EditTimer

Þ UpDownTime - связанный с компонентом EditTimer

Þ LabelTime

Þ Label1.Caption = «Установка таймера», расположите его рядом с EditTimer

Þ Label2.Caption = «Текущее время», расположите его рядом с LableTime

Þ MyProgressBar - отображает ход таймера

Þ ButtonStart - для запуска таймера после его установки.

По истечению заданного времени появляется сообщение «Время вышло!».

MyForm: TMyForm;

MyProgressBar: TProgressBar;

constructor TMyForm.Create(Owner: TComponent);

begin

MyProgressBar.Visible:= false //до запуска таймера индикатор невидим

MyTimer.Enabled:= false; //таймер еще не запущен

end;

procedure TMyForm.ButtonStartClick(Sender: TObject);

begin

MyTimer.Enabled:= true; //запуск таймера

MyProgressBar.Position:= 0; //текущая позиция индикатора обнуляется

MyProgressBar.Max: = UpDownTime.Position; //макс. граница индикатора

//соответствует заданному пользователем числу в EditTimer

MyProgressBar.Visible: = true; //индикатор становится видимым

}

procedure TMyForm.MyTimerTimer(Sender: TObject);

begin //отображение текущего времени в период работы таймера

LabelTime.Caption:= Time.FormatString(‘tt’);

//если текущая позиция индикатора меньше максимального значения

if(MyProgressBar.Position < MyProgressBar.Max)

then

begin

inc(MyProgressBar.Position); //увеличиваем текущую позицию

if ((MyTimer.Enabled) and (StrToInt(EditTimer.Text)<>0))

then //если таймер запущен и установлено его значение

EditTimer.Text:=IntToStr(StrToInt(EditTimer.Text)-1);

end //уменьшение времени

else //если время истекло

begin

MyProgressBar.Visible:=false;

MyTimer.Enabled:= false;

ShowMessage('Время вышло!’); // вывод сообщения

LabelTime.Caption =’’;

end;

end;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: