Я хочу заменить мой индикатор выполнения калибром. Вот версия на прогресс бар:Looping TGauge с таймером
procedure TForm1.tmr1Timer(sender: TObject);
begin
pb0.Position := (pb0.Position + 1) mod pb0.Max;
end;
И это на манометре
procedure TForm1.tmr1Timer(sender: TObject);
begin
gauge.MinValue := 0;
gauge.MaxValue := 100;
gauge.Progress := gauge.Progress + 1;
end;
Как сделать это начать каждый раз, когда она достигнет 100? Как я пробовал с помощью кнопки для проверки, я не могу заставить ее зацикливаться, как на индикаторе выполнения.
procedure TForm1.btn6Click(sender: TObject);
begin
tmr1.Enabled := not tmr1.Enabled;
begin
gauge.Progress := 0;
tmr1.Enabled := True
end;
if Form1.gauge.Progress = 100 then // is this correct ?
// what to do to make it looping ?
end;
Как сделать такую же функцию на калибровке в качестве замены индикатора хода или таймера выше?
Awesome! Спасибо Ken White – Bianca
Этот код работает только в том случае, если MinValue равен 0. Он также никогда не будет устанавливать Progress равным MaxValue. Вы хотите, чтобы MinValue + (Progress + 1) mod (MaxValue-MinValue + 1) –
@David: он работал в тестовом приложении XE5 VCL. Я запустил его, точно так же, как и в сообщении, с параметрами «MinValue = 0» и «MaxValue = 100' (я установил таймер на 250 мс для тестирования). Поскольку цель вопроса состоит в том, чтобы обернуться до нуля и начать все заново, никогда не устанавливать прогресс в MaxValue, похоже, не проблема; если он достигнет 100%, это было бы сделано, и не было бы смысла переходить к 0, правильно? Вероятно, вы правы относительно MinValues, кроме 0; Я скоро обножу (в середине чего-то примерно через 2 минуты). –