だからここにロジック
1%="|"の場合 TLabel内および1つの「|」10回のループが必要です
したがって、100%=100倍に達するには"|" 1000回のループが必要です
コードを手伝ってもらえますか?
だからここにロジック
1%="|"の場合 TLabel内および1つの「|」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ánEstévez-