Компонент Delphi Progressbar

Компонент  Delphi Progressbar находиться  в Палитре компонентов на странице Win32. Внешний вид представляет собой графическую полосу показывающую процесс работы продолжительной операции. Процесс заполнения полосы идет пропорционально, согласно проценту выполненных действий, слева направо синими кубиками. Цвет компонента изменить нельзя, цвет заполнения имеет синий цвет.

Min и Max свойства компонента, отвечающие за диапазон значений, соответственно минимальной и максимальное значение принадлежащее к целым числам.

Position - позиция, на которой находится в данный момент индикатор.

Компонент ProgressBar

Расположим на форме компоненты Label, Button и  Progressbar, см. образец на рисунке.

 Мы сделаем перебор целых чисел (переменная i) от 0 до 50000 (Max), компонент Label будет показывать какое сейчас обрабатывается число и немного притормаживать выполнение приложения. Proc вычисляет процент проделанной работы.

Напишем обработчик кнопки Пуск.

procedure TForm1.Button1Click(Sender: TObject);
var
   i, proc, Max : integer;
begin
    Max := 50000;
   for i:=0 to Max do
     begin
       proc := ((i * 100) div Max);
       Label1.Caption := IntToStr(i);
       ProgressBar1.Position := proc ;
       Application.ProcessMessages;
     end;
end;

Application.ProcessMessages; - дает возможность нашему приложению не зависнуть в процессе вычисления. В противном случае нам придется дождаться окончания вычислений, после чего мы увидим результат, а до этого приложение не будет подавать признаков жизни.

Итог: мы ознакомились с компонентом  Progressbar и функцией Application.ProcessMessages.



			

Компонент Delphi Progressbar: 5 комментариев

  1. эта штука,полагаю,квадратики показывает ProgressBar1.Position := proc ;
    а эта ,.. Application.ProcessMessages;..почему прога зависнуть должна?
    или без нее отдельные процессы зависают?что она и для чего…

  2. думаю я следующее…нужно брать какой то проект ,где будут применяться какая то часть пройденных уроков иначе похоже просто на отдельные игрушки…

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *