Компоненты ProgressBar и CGauge

Компоненты ProgressBar со страницы Win32 и Cgauge со страницы Примеры предназначены для отображения хода процессов, занимающих заметное время, например, копирования больших файлов, настройку приложения, установку приложения на компьютере и т.п. Основные свойства этих компонентов различаются лишь именами:

Свойство Progressbar Свойство CGauge Описание
Max MaxValue Максимальное значение позиции (Position, Prog-ress), которое соответствует завершению отобра-жаемого процесса. По умолчанию задается в про-центах − 100
Min MinValue Начальное значение позиции (Position, Progress), которое соответствует началу отображаемого про-цесса
Position Progress Позиция, которую можно задавать по мере проте-кания процесса, начиная со значения Minили Min-Value в начале процесса, и кончая значением Max или 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;

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

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

CGauge1->MaxValue=Count;

…………………………………..

CGauge1->Progress=Current;

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

Задание 1. Ознакомиться с примерами применения компонентов ProgressBar и CGauge.

1.Создайте для проекта приложения каталог (папку Windows), запустите C++Builder 6, создайте новый проект и командой Сохранить все сразу сохраните файл модуля и файл проекта под разными именами.

2.В свойство Captionформы впишите ProgressBar и CGauge. В левой части формы поместите панель Panel1, в свойство Caption которой впишите ProgressBar жирным шрифтом, красного цвета, размером 18.

3.На панель поместите два компонента ProgressBar. В одном компоненте свойство Smooth задайте равным true, в другом − равным false. Свойство Orientation в одном компоненте задайте равным pbHorizontal, во втором − равным pbVertical. Второй компонент следует вытянуть по вертикали.

4.В правой части формы сверху разместите метку Label1, в свойство Caption которой впишите CGaugeжирным шрифтом, красного цвета, размером 18. На одной вертикали с меткой поместите четыре компонента CGauge, а пятый − слева от четвертого. Свойство Kind задайте соответственно равным gkText, gkHorizontalBar, gkNeedle, gkPie, gkVerticalBar. Свойство ForeColor задайте во всех компонентах по-разному, свойство ShowText −равнымtrue, шрифт Font −жирным, размером 18.

5.Под панелью разместите кнопку Button1, свойство Captionкоторой замените на слово ЗАПУСК жирным шрифтом, размером 18. В обработчик щелчка на кнопке впишите (курсив)

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int count=1000;

ProgressBar2->Max=count;

ProgressBar2->Step=1;

for(int i=1;i<=count;i++)

{

ProgressBar1->Position=100*i/count;

ProgressBar2->StepIt();

CGauge1->Progress=100*i/count;

CGauge2->Progress=100*i/count;

CGauge3->Progress=100*i/count;

CGauge4->Progress=100*i/count;

CGauge5->Progress=100*i/count;

for(int j=0;j<100000;j++);

}

}

6.Сохраните проект и выполните приложение. Нажимая на кнопку ЗАПУСК, убедитесь в работоспособности приложения.

Наши рекомендации