如何使用ONLY TLabel NOT TProgressBar在Turbo Delphi中创建进度条

时间:2009-05-27 06:41:49

标签: delphi progress-bar vcl

所以这里是逻辑

表示1%=“|”在TLabel和一个“|”我们需要10次循环

所以达到100%= 100倍“|”我们需要1000次循环

你可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:6)

也许您可以使用StringOfChar函数?

这样的事情:


    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;

答案 1 :(得分:3)

我不是100%肯定我明白你的意思,但我认为它是这样的(假设“标签”是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;

我不确定重绘与刷新,以及是否应该重新绘制/刷新整个表单,但这取决于你。

希望有所帮助。

答案 2 :(得分:1)

这是Bing解决方案的变体,它显示了条形图内部(中间)的百分比。

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;

对不起,我的英语不好。 问候。


Neftalí-GermánEstévez -