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;