如何仅使用 TLabel 而不是 TProgressBar 在 Turbo Delphi 中制作进度条

发布于 2024-07-22 06:27:06 字数 128 浏览 11 评论 0原文

逻辑

所以这里是 1%="|" 的 在 TLabel 中和一个“|” 我们需要循环 10 次

才能达到 100%= 100 次“|” 我们需要 1000 次循环,

你能帮我编写代码吗?

so here the logic

for 1%="|" in the TLabel and for one "|" we need 10 times looping

so to reach 100%= 100 times "|" we need 1000 times looping

can you help me with the code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

所谓喜欢 2024-07-29 06:27:06

也许您可以使用 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;

Perhaps you could use the StringOfChar function?

Something like this:


    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;
拒绝两难 2024-07-29 06:27:06

我不是 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;

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

希望有帮助。

I'm not 100% sure I get what you mean, but I think it's something like this (assume "label" is 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;

I'm not sure about the repaint vs. refresh, and whether you should repaint/refresh the entire form, but that's up to you.

Hope that helps.

折戟 2024-07-29 06:27:06

这是 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í -德国埃斯特维兹-

And this is a variant o Bing solution, that show the percentage inside (middle) of the bar.

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;

Excuse-me for my bad English.
Regards.


Neftalí -Germán Estévez-

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文