Как сделать панель прогресса в Турбо Дельфи, используя только tlabel, а не tprogressbar
-
06-09-2019 - |
Вопрос
Итак, здесь логика
для 1%= "|" в Tlabel и для одного "|" Нам нужно 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;
Я не уверен насчет перекрашивания против обновления, и должен ли вы перекрасить/обновить всю форму, но это зависит от вас.
Надеюсь, это поможет.
И это вариант решения для бинга, который показывает процент внутри (середины) бара.
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án Estévez-
Не связан с StackOverflow