Компоненты 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.Сохраните проект и выполните приложение. Нажимая на кнопку ЗАПУСК, убедитесь в работоспособности приложения.