2009-05-27 63 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-