Компоненты ProgressBar, со страницы библиотеки Win32, и CGauge, со страницы Samples, предназначены для отображения хода процессов, занимающих заметное время, например, копирования больших файлов, настройку приложения, установку приложения на компьютере и т.п.
Основные свойства компонентов:
ProgressBar | CGauge | Описание |
Max | MaxValue | Максимальное значение позиции (Position, Progress), которое соответствует завершению отображаемого процесса. По умолчанию задается в процентах - 100. |
Min | Min Value | Начальное значение позиции (Position, Progress), которое соответствует началу отображаемого процесса. |
Position | Progress | Позиция, которую можно задавать по мере протекания процесса, начиная со значения Min или Min Value в начале процесса, и кончая значением Мах или MaxValue в конце. Если минимальное и максимальное значения выражены в процентах, то позиция - это процент завершенной части процесса. |
Smooth | Непрерывное (при значении true) или дискретное отображение процесса. | |
Step | Шаг приращения позиции, используемый в методе Steplt. Значение по умолчанию - 10. | |
Orientation | Ориентация шкалы компонента: pbHorizontal - горизонтальная, pbVertical - вертикальная. Если задана ориентация pbVertical, то компонент надо вытянуть по вертикали. | |
ForeColor | Цвет заполнения. | |
ShowText | Текстовое отображение процента выполнения на фоне диаграммы. | |
Kind | Тип диаграммы: gkHorizontalBar - горизонтальная полоса, gkVerticalBar - вертикальная полоса, gkPie - круговая диаграмма, gkNeedle - секторная диаграмма, gkText - отображение текстом. |
Отображение хода процесса можно осуществлять, задавая значение позиции - Position в ProgressBar или Progress в CGauge. Например, если полная длительность процесса характеризуется значением целой переменной Count (объем всех копируемых файлов, число настроек, количество циклов какого-то процесса), а выполненная часть - целой переменной Current, то задавать позицию диаграммы в случае, если используются значения минимальной и максимальной позиции по умолчанию (т.е. 0 и 100), можно операторами:
ProgressBar1->Position = 100 * Current / Count;
CGauge1->Progress = 100 * Current / Count;
Можно поступать иначе, задать сначала значение максимальной величины равным Count, а затем в ходе процесса задавать позицию равной Current:
CGauge1->МахValue = Count;
//код программы
CGauge1->Progress = Current;
Компонент ProgressBar имеет два метода, которыми тоже можно воспользоваться для отображения процесса: StepBy (DeIta: Integer) - увеличение позиции на заданную величину Delta, и Steplt - увеличение позиции на один шаг, величина которого задается свойством Step. Например с использованием метода Steplt:
ProgressBar1->Max = Count;
ProgressBar1->Step = 1;
ProgressBar1->StepIt();