0

だからここにロジック

1%="|"の場合 TLabel内および1つの「|」10回のループが必要です

したがって、100%=100倍に達するには"|" 1000回のループが必要です

コードを手伝ってもらえますか?

4

3 に答える 3

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;
于 2009-05-27T08:06:41.083 に答える
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;

再描画と更新の違い、およびフォーム全体を再描画/更新する必要があるかどうかはわかりませんが、それはあなた次第です。

お役に立てば幸いです。

于 2009-05-27T07:08:11.333 に答える
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-

于 2009-05-27T08:45:07.683 に答える