Версия для печати

Отображение хода выполнения длительных операций — компоненты ProgressBar и Gauge

Оцените материал
(0 голосов)

Отображение хода выполнения длительных операций — компоненты ProgressBar и Gauge

Рассмотрим компоненты ProgressBar со страницы библиотеки Win32 и Gauge со страницы Samples, предназначенные для отображения в стиле Windows 95/98 хода процессов, занимающих заметное время, например, копирования больших файлов, настройку приложения, установку приложения на компьютере и т.п. Пример возможных вариантов отображения хода процесса компонентами ProgressBar и Gauge приведен на рис.

4

Рис.1

Пример отображения хода процесса компонентами ProgressВar и Gauge

Основные свойства этих компонентов очень схожи, различаясь только именами:

Свойство ProgressBar

Свойство Gauge

Описание

Max

MaxValue

Максимальное значение позиции (Position, Progress), которое соответствует завершению отображаемого процесса. По умолчанию задается в процентах — 100.

Min

MinValue

Начальное значение позиции (Position, Progress), которое соответствует началу отображаемого процесса.

Position

Progress

Позиция, которую можно задавать по мере протекания процесса, начиная со значения Min или MinValue в начале процесса, и кончая значением Мах или MaxValue в конце. Если минимальное и максимальное значения выражены в процентах, то позиция — это процент завершенной части процесса.

Smooth

Непрерывное (при значении true) или дискретное отображение процесса. На рис. 4.20 в горизонтальном компоненте ProgressBar задано Smooth = true, а в вертикальном — false.

Step

Шаг приращения позиции, используемый в методе StepIt. Значение по умолчанию — 10.

Orientation

Ориентация шкалы компонента: pbHorizontal — горизонтальная, pbVertical — вертикальная. Если задана ориентация pbVertical, то компонент надо вытянуть по вертикали

ForeColor

Цвет заполнения

ShowText

Текстовое отображение процента выполнения на фоне диаграммы.

Kind

Тип диаграммы: gkHorizontalBar — горизонтальная полоса, gkVerticalBar — вертикальная полоса, gkPie — круговая диаграмма, gkNeedle — секторная диаграмма, gkText — отображение текстом.

Отображение хода процесса можно осуществлять, задавая значение позиции — Position в ProgressBar или Progress в Gauge. Например, если полная длительность процесса характеризуется значением целой переменной Count (объем всех копируемых файлов, число настроек, количество циклов какого-то процесса), а выполненная часть — целой переменной Current, то задавать позицию диаграммы в случае, если используются значения минимальной и максимальной позиции по умолчанию (т.е. 0 и 100), можно операторами

ProgressBar1.Position := 100 * Current div Count;

или

Gauge1.Progress := 100 * Current div Count;

соответственно для ProgressBar и Gauge.

Можно поступать иначе: задать сначала значение максимальной величины равным Count, а затем в ходе процесса задавать позицию равной Current. Например:

Gauge1.MaxValue := Count;
Gauge1.Progress := Current;

Компонент ProgressBar имеет два метода, которыми тоже можно воспользоваться для отображения процесса: StepBy(Delta: Integer) — увеличение позиции на заданную величину Delta и StepIt — увеличение позиции на один шаг, величина которого задается свойством Step.