Всем доброго времени суток.
Задача такая:
В одной форме нажимается кнопка->Запускается ProgressBar ->он заканчивает и появляется скрытая кнопка, НО
1)нужно чтобы была возможность регулировать скорость PB из другой формы, а значит скорее всего глобальная переменная
2)нужно чтобы пользователь не мог что либо нажать до тех пор, пока PB не закончит
Пробовал:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
for i:=i to Max do
begin
proc := ((i * 100) div Max);
ProgressBar1.Position := proc;
end;
end;
в таком случае, без Application.ProcessMessages, соблюдается пункт 2, но необходимо чтобы переменные i и max были локальными (а мне нужно менять max, а соответственно и скорость PB из другой формы)
Пробовал ещё:
Код:
procedure TForm5.Button1Click(Sender: TObject);
begin
Tmr1.Enabled:=true;
end;
procedure TForm5.tmr1Timer(Sender: TObject);
begin
i:=i+1;
PB1.Position:=i;
if i=100 then
Tmr1.Enabled:=False;
end;
Тут вроде все здорово, можно менять скорость PB изменением интервала таймера, но пользователь может нажать на другие элементы формы пока PB выполняется, а это плохо. Команда sleep останавливает и таймер, да и корректировать ее под каждую скорость PB неудобно.
Прошу, люди добрые, как это реализовать? Мб кто подкинет ещё более гениальную идею, либо исправит дефекты моих способов? Запарился искать в яндексе... =\