100 Компонентів delphi - progressbar і gauge
4.8.1 Відображення ходу виконання тривалих операцій - компоненти ProgressBar і Gauge
Розглянемо компоненти ProgressBar зі сторінки бібліотеки Win32 і Gauge зі сторінки Samples. призначені для відображення в стилі Windows 95/98 ходу процесів, що займають помітне час, наприклад, копіювання великих файлів, налаштування програми, встановлення програми на комп'ютері і т.п. Приклад можливих варіантів відображення ходу процесу компонентами ProgressBar і Gauge наведено на рис. 4.20.
Мал. 4.20
Приклад відображення ходу процесу компонентами ProgressВar і Gauge
Максимальне значення позиції (Position. Progress), яке відповідає завершенню відображуваного процесу. За замовчуванням задається у відсотках - 100.
Початкове значення позиції (Position. Progress), яке відповідає початку відображуваного процесу.
Позиція, яку можна задавати в міру протікання процесу, починаючи зі значення Min або MinValue на початку процесу, і кінчаючи значенням Мах або MaxValue в кінці. Якщо мінімальне і максимальне значення виражені в процентах, то позиція - це відсоток завершеної частини процесу.
Безперервне (при значенні true) або дискретне відображення процесу. На рис. 4.20 в горизонтальному компоненті ProgressBar задано Smooth = true. а в вертикальному - false.
Крок збільшення позиції, використовуваний в методі StepIt. Значення за замовчуванням - 10.
Орієнтація шкали компонента: pbHorizontal - горизонтальна, pbVertical - вертикальна. Якщо задана орієнтація pbVertical. то компонент треба витягнути по вертикалі (див. на рис. 4.20 компонент зліва).
Текстове відображення відсотка виконання на тлі діаграми.
Тип діаграми: gkHorizontalBar - горизонтальна смуга, gkVerticalBar - вертикальна смуга, gkPie - кругова діаграма, gkNeedle - секторальна діаграма, gkText - відображення текстом.
Відображення ходу процесу можна здійснювати, задаючи значення позиції - Position в ProgressBar або Progress в Gauge. Наприклад, якщо повна тривалість процесу характеризується значенням цілої змінної Count (обсяг всіх копіюються файлів, число налаштувань, кількість циклів якогось процесу), а виконана частина - цілої змінної Current. то ставити позицію діаграми в разі, якщо використовуються значення мінімальної і максимальної позиції за замовчуванням (тобто 0 і 100), можна операторами або відповідно для ProgressBar і Gauge.
Можна діяти інакше: задати спочатку значення максимальної величини рівним Count. а потім в ході процесу задавати позицію рівної Current. наприклад:
Компонент ProgressBar має два методи, якими теж можна скористатися для відображення процесу: StepBy (Delta: Integer) - збільшення позиції на задану величину Delta і StepIt - збільшення позиції на один крок, величина якого задається властивістю Step.