2009-05-27 56 views

回答

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; 
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; 

我不知道对与重绘刷新,以及是否应该重新绘制/刷新整个表单,但这取决于您。

希望有所帮助。

+0

是,类似的东西。 如果我使用一个按钮来开始这个过程,我想怎么做? – Otip88 2009-05-27 07:21:11

+0

我将yor码解码为 begin label1.caption:=''; for i:= 1 to 1000 do begin if i mod 10 = 0 then label1.caption:= label1.caption +'|'; label1.repaint(); 结束; 结束; 但似乎“|”显示更快.. – Otip88 2009-05-27 07:46:13

1

这是一个变体Ø兵解,即显示条内(中)的百分比。

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í - 德语Estévez-