كيفية جعل شريط التقدم في توربو دلفي باستخدام tlabel فقط لا tprogressbar

StackOverflow https://stackoverflow.com/questions/914288

  •  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-

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top