Показать сообщение отдельно
  #1  
Старый 17.01.2013, 01:33
R3VeRSe R3VeRSe вне форума
Прохожий
 
Регистрация: 17.01.2013
Сообщения: 4
Репутация: 10
По умолчанию Стоп пока progressbar не закончит и PB с глобальной переменной

Всем доброго времени суток.
Задача такая:
В одной форме нажимается кнопка->Запускается 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 неудобно.


Прошу, люди добрые, как это реализовать? Мб кто подкинет ещё более гениальную идею, либо исправит дефекты моих способов? Запарился искать в яндексе... =\
Ответить с цитированием