Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод2курс_прогр_конт.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.38 Mб
Скачать

Лекция № 17. Компоненты-индикаторы. Компоненты для отображения геометрических фигур.

  1. Компоненты-индикаторы.

Компонент Progressbar.

Компонент  Delphi Progressbar (вкладкаWin32) показывает процесс работы  продолжительной операции и по внешнему виду представляет собой графическую полосу. Процесс заполнения полосы идет пропорционально, согласно проценту выполненных действий, слева направо синими кубиками. Цвет компонента изменить нельзя, цвет заполнения имеет синий цвет.

Свойства компонента Min и Max отвечают за диапазон значений, соответственно, минимальной и максимальное значение, принадлежащих к целым числам.

Position - позиция, на которой находится в данный момент индикатор.

Р асположим на форме компоненты Label, Button и  Progressbar (см. рисунок).

 Мы сделаем перебор целых чисел (переменная i) от 0 до 50000 (Max), компонент Label будет показывать, какое сейчас обрабатывается число и немного притормаживать выполнение приложения. Переменная Proc вычисляет процент проделанной работы.

Напишем обработчик кнопки Пуск.

procedure TForm1.Button1Click(Sender: TObject);

var i, proc, Max : integer;

begin

Max := 50000;

for i:=0 to Max do

begin

proc := ((i * 100) div Max);

Label1.Caption := IntToStr(i);

ProgressBar1.Position := proc ;

Application.ProcessMessages;

end;

end;

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

Для того чтобы исправить сложившееся положение необходимо использовать метод  ProcessMessages. Этот метод принадлежит классу Application (данный класс  автоматически создается при создании приложения). Данный метод обязывает приложение обработать поступившие и ожидающие своей очереди сообщения.

Application.ProcessMessages; - дает возможность нашему приложению не зависнуть в процессе вычисления. В противном случае нам придется дождаться окончания вычислений, после чего мы увидим результат, а до этого приложение не будет подавать признаков жизни.

Компонент Gauge.

Компонент Delphi Gauge (вкладка Samples) предназначен для показа процессов, занимающих заметное время, например, обработка каких либо данных, установка приложения на компьютер, копирование больших файлов,  и т.п.

На рисунке показаны различные  возможные варианты отображения хода процесса компонентом Gauge в зависимости от свойства King, определяющее внешний вид диаграммы:

  • горизонтальный прямоугольник - gkHorizontalBar,

  • вертикальный прямоугольник - gkVerticalBar,

  • сектор круга - gkPie,

  • спидометр - gkNeedle,

  • выводиться только текст -gkText.

Компонент Gauge имеет следующие свойства:

MinValue - целочисленный тип (минимальное значение параметра на диаграмме равное 0 %),

MaxValue - целочисленный тип (максимальное значение параметра на диаграмме равное 100 %).

ForeColor задает цвет индикатора. По умолчанию - черный.

BorderStyle задает внешний вид рамки -

  • bsSingle - компонент обрамлен рамкой,

  • bsNone - рамка отсутствует.

BackColor - цвет той части диаграммы, которая свободна от индикатора (по умолчанию белый цвет).

Progress - целочисленный тип, показывает текущее состояние индикатора в процентах.

ShowText - логический тип, при значении TRUE отображает текстовую информацию на диаграмме, при FALSE - цифрового показателя в процентах видно не будет.

Компонент Timer.

Компонент Delphi Timer  (вкладка System) - это важный не визуальный компонент, который позволяет  задавать в приложении  необходимые задержки времени между выполнением тех или иных действий.

Данный компонент имеет два главный свойства:

  • Enabled - включает (TRUE) или выключает (FALSE) работу таймера,

  • Interval - задает фиксированный интервал времени в миллисекундах.

Событие, которое может обработано данным компонентом одно, это onTimer. Его можно задать во вкладке Events Инспектора объектов или двойным щелчком на компоненте. Это событие генерируется всякий раз, когда истекает промежуток времени заданный в свойстве Interval с момента последней генерации данного события, пока свойство Enabled будет равно TRUE.

Компонент Delphi Timer недостаточно точный для малых промежутков времени (менее 100 миллисекунд).

Давайте разберем два примера:

1. Установим событие onTimer:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Timer1.Enabled := False;

ShowMessage('Программа уже загружена');

end;

Через время заданное в свойстве Interval появиться однократное сообщение о загрузке программы.

2. Расположим на форме в дополнение к компоненту Timer компонент Label. Обработчик события onTimer:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Label1.Caption := TimeToStr(now);

end;

Мы создали электронные часы. Now - это функция возвращающая дату и время на данный момент. TimeToStr - забирает время и переводит его в строковую переменную.