Come fare una barra di avanzamento in Turbo Delphi usando solo tlabel non tprogressbar
-
06-09-2019 - |
Domanda
Quindi qui la logica
per l'1%= "|" nel tlabel e per uno "|" Abbiamo bisogno di 10 volte looping
Quindi per raggiungere il 100%= 100 volte "|" Abbiamo bisogno di 1000 volte looping
Puoi aiutarmi con il codice?
Soluzione
Forse potresti usare la funzione StrofChar?
Qualcosa come questo:
procedure TForm1.Button1Click(Sender: TObject);
var
X: Integer;
Total: Integer;
Percent: Integer;
begin
Total := 1000;
for X := 1 to Total do
begin
Sleep(100);
Percent := (X * 100) div Total;
Label1.Caption := StringOfChar('|', Percent) + IntToStr(Percent) + '%';
Label1.Repaint;
end;
end;
Altri suggerimenti
Non sono sicuro al 100% di quello che intendi, ma penso che sia qualcosa del genere (supponiamo che "l'etichetta" sia tlabel):
label.caption := '';
for i := 1 to 1000 do
begin
... do stuff ...
if i mod 10 = 0 then
begin
label.caption = label.caption + '|';
label.repaint();
end;
end;
Non sono sicuro della riverniciatura rispetto all'aggiornamento e se dovresti ridipingere/aggiornare l'intero modulo, ma dipende da te.
Spero possa aiutare.
E questa è una soluzione di O bing variante, che mostra la percentuale all'interno (al centro) della barra.
procedure TForm1.Button1Click(Sender: TObject);
var
X: Integer;
Total: Integer;
Percent: Integer;
begin
Total := 1000;
for X := 1 to Total do begin
Sleep(5);
Percent := (X * 100) div Total;
Label1.Caption := StringOfChar('|', Percent DIV 2) +
' ' + IntToStr(Percent) + '% ' +
StringOfChar('|', Percent DIV 2);
Label1.Repaint;
Application.ProcessMessages;
end;
end;
Scusa per il mio cattivo inglese. Saluti.
Neftalí -germán estévez-