كيفية جعل شريط التقدم في توربو دلفي باستخدام tlabel فقط لا tprogressbar
-
06-09-2019 - |
سؤال
حتى هنا المنطق
ل 1٪ = "|" في tlabel وواحد "|" نحتاج إلى حلقات 10 مرات
حتى تصل إلى 100٪ = 100 مرة "|" نحتاج إلى حلقات 1000 مرة
هل يمكنك مساعدتي في الرمز؟
المحلول
ربما يمكنك استخدام وظيفة Stringchar؟
شيء من هذا القبيل:
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