Comment faire une barre de progrès dans Turbo Delphi en utilisant seulement TLabel pas TProgressBar

donc ici la logique

pour 1%="|" dans le TLabel et pour un "|" nous avons besoin de 10 fois en boucle

donc, pour atteindre 100%= 100 fois "|" nous avons besoin de 1000 fois en boucle

pouvez-vous m'aider avec le code?

0
demandé sur stukelly 2009-05-27 10:41:49

3 réponses

peut-être pourriez-vous utiliser la fonction StringOfChar?

quelque chose comme ça:


    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;
6
répondu Kevin Newman 2009-05-27 08:06:41

Je ne suis pas sûr à 100% de comprendre ce que vous voulez dire, mais je pense que c'est quelque chose comme ça (supposons que "label" est 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;

Je ne suis pas sûr pour le repeat vs. refresh, et si vous devez repeat/refresh le formulaire entier, mais c'est à vous.

Espère que ça aide.

3
répondu Roee Adler 2009-05-27 10:26:09

et c'est une variante de la solution de Bing, qui montrent le pourcentage à l'intérieur (milieu) de la barre.

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;

Excusez-moi pour mon mauvais anglais. Égard.


Neftalí-Germán Estévez -

1
répondu Germán Estévez -Neftalí- 2009-05-27 08:45:07