ここでロジックはターボデルファイで進捗バーを作成する方法TLabel NOT TProgressBar
1%= "|" TLabelと1つの "|"我々は10回ループする必要があります
100%= 100回 "|"私たちは1000回ループする必要があります
あなたはコードを助けることができますか?
ここでロジックはターボデルファイで進捗バーを作成する方法TLabel NOT TProgressBar
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;
私は(TLabelである「ラベル」を想定する)私はあなたが何を意味するかを得るが、私はそれがこのようなものだと思う100%わからない:
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;
私は再描画の対についてはよく分かりませんフォーム全体を再ペイント/リフレッシュする必要があるかどうかを確認する必要がありますが、それはあなた次第です。
希望に役立ちます。
はい、そのような何か。 ボタンを使用してプロセスを開始する場合、どうすればよいですか? – Otip88
yorコードをデコードして begin label1.caption:= ''; i:= 1〜1000が始まる mod 10 = 0の場合、label1.caption:= label1.caption + '|'; label1.repaint(); end; end; しかし、 "|"ボタンを押すと表示されます。 – Otip88
ボタンの "OnClick"イベントには、該当するウィンドウの "OnClick"をダブルクリックします。あなたの処理が速いのでおそらく速く見えます(あなたのために良い!)...あなたの全体のプロセスが1秒かかる場合、バーは速く見えます。あなたがそれらを遅く見せたいのであれば、100回に1度しかバーを表示しません( "i mod 100 = 0")、それは遅く表示されます。 –
そして、これはバーの(中央)内部のパーセンテージを示しビングソリューションO変種、です。
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-
それはexcactly私が話しているものです!あなたは揺れる! – Otip88
必要に応じて再塗りすることを忘れないでください。 "X mod 10 = 0の場合はLabel1.Repaint"のようなテストがパフォーマンスを向上させるかどうかを調べます。 –