@controles - wstawiaj linijki kodu w specjalne znaczniki kolorujące składnię; Dzięki temu post będzie czytelny, a linie kodu będą nie dość, że od razu widoczne, to ich zawartość zostanie sformatowana (m.in. pokolorowana); Jeśli nie wiesz jakie są to znaczniki - zapoznaj się z tym artykułem;
Wracając do tematu - jeśli po każdym wywołaniu procedury pasek postępu ma urosnąć o stałą wartość, to skorzystaj z podpowiedzi @_13th_Dragon i użyj do tego celu metody StepIt
; Napisałem, że o stałą wartość, bo uzależniona jest ona od właściwości Step
, ustawionej domyślnie na 10
(przynajmniej w Delphi7 i Lazarusie);
Jeżeli natomiast po każdym wywołaniu procedury fpsystem
pasek ma się zwiększać o wartość dynamiczną - te wartości musisz gdzieś mieć zapisane; Jeśli nie ma jakiegoś punktu zaczepienia, łączącego wszystkie wywołania tej procedury, to po każdym jej wywołaniu musisz ręcznie ustawiać wartość właściwości Position
; Natomiast jeśli wszystkie wywołania tej procedury możesz wykonywać w pętli - wpakuj rozmiary skoków do tablicy tak jak zaproponował @olesio i w każdej iteracji pętli zwiększaj pozycję paska o rozmiar zawarty w odpowiedniej komórce macierzy; Dzięki temu kod będzie krótki, zwięzły i łatwy do rozbudowania;
Póki co nie napisałeś czy coś łączy wywołania procedury fpsystem
, więc na chwilę obecną po prostu inkrementuj ręcznie pozycję paska, wykorzystując właściwość Position
, uprzednio określając minimalną i maksymalną wartość (czyli właściwości Min
i Max
komponentu):
with ProgressBar1 do
begin
Min := 0;
Max := 100;
Position := 0;
fpsystem('cp plik1 plik_1 &&');
Position := Position + 1; // 1%
fpsystem('cp plik2 plik_2 &&');
Position := Position + 2; // 3%
fpsystem('cp plik3 plik_3 &&');
Position := Position + 7; // 10%
{...}
end;
Nie jest to ładne rozwiązanie (bo co jeśli tych wywołań będziesz miał dziesiątki lub setki..?), ale przynajmniej realizuje Twoje założenia.