所以这里的逻辑
为 1%="|" 在 TLabel 和一个“|” 我们需要循环 10 次
所以要达到 100%= 100 次 "|" 我们需要循环 1000 次
你能帮我写代码吗?
所以这里的逻辑
为 1%="|" 在 TLabel 和一个“|” 我们需要循环 10 次
所以要达到 100%= 100 次 "|" 我们需要循环 1000 次
你能帮我写代码吗?
也许您可以使用 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;
我不是 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;
我不确定重绘与刷新,以及您是否应该重绘/刷新整个表单,但这取决于您。
希望有帮助。
这是 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án Estévez-