PDA

بازدید نسخه کامل شده : نمايش Progress Bar


Mojgan110
07-21-2006, 02:06 AM
توي يك Thread ، اينجوري نوشتم كه يك Progress Bar نشان بدهد.
ولي خيلي تند حركت ميكنه ، هرچقدر عددهايش را هم افزايش ميدهم ، فرقي نميكند.

فكر كنم مشكل از الگوريتمش باشد .

بگيد چشه!! ( لطفا" :Jumpin: )

procedure TTestThread.ShowProgress;
var
i,j,place: Integer;
begin
for i:= 1 to 9000000 do
for j:= 1 to 9000000 do
for place:= 1 to 100 do
Form3.ProgressBar1.Position:= place;
end;

Mojgan110
07-21-2006, 05:53 PM
كسي نظري نداشت ؟

balabala
07-21-2006, 06:41 PM
سلام مژگان
من چند روزی سرم شلوغ بود ویندوزم خراب شده بود.
خب ببینم توی دلفی تایمر دارید؟ اگر دارید توی تایمر یه متغییر بزار و زیادش کن بعد تایمر رو هر چند ثانیه صدا بزن. ولی در کل پراگرسبار باید نشان دهنده پیشرفت یه چیزی باشه. اینجوری الکی میشه :دی

Mojgan110
07-21-2006, 06:49 PM
سلام مژگان
من چند روزی سرم شلوغ بود ویندوزم خراب شده بود.
خب ببینم توی دلفی تایمر دارید؟ اگر دارید توی تایمر یه متغییر بزار و زیادش کن بعد تایمر رو هر چند ثانیه صدا بزن. ولی در کل پراگرسبار باید نشان دهنده پیشرفت یه چیزی باشه. اینجوری الکی میشه :دی

سلام و مرسي مهندس مهدي :secret_smile:

دلفي چي كه نداره ! تايمر هم داره .......

ميخواستم بدون اون نشون بدم ، با حلقه For . آخه تايمر هم خودش Thread ايجاد ميكنه . اگه چاره اي نيست ، خب چشم ، تايمر استفاده ميكنم.

//
آره . نشون دهنده يك پردازش ديتابيس هست ... وقتي شروع ميشه ، ميخوام اين پروگسسه ، هي بياد و بره ، وقتي پردازش تموم شد هم كه غيبش بزنه :secret_smile:

balabala
07-21-2006, 07:19 PM
سلام و مرسي مهندس مهدي :secret_smile:

دلفي چي كه نداره ! تايمر هم داره .......

ميخواستم بدون اون نشون بدم ، با حلقه For . آخه تايمر هم خودش Thread ايجاد ميكنه . اگه چاره اي نيست ، خب چشم ، تايمر استفاده ميكنم.

//
آره . نشون دهنده يك پردازش ديتابيس هست ... وقتي شروع ميشه ، ميخوام اين پروگسسه ، هي بياد و بره ، وقتي پردازش تموم شد هم كه غيبش بزنه :secret_smile:سلام مهندس مژگان، کجایی؟! :confident:

میشه از فانکشن Sleep توی API هم استفاده کرد اگر میخوای حتما حلقه باشه. میتونی چند میلی ثانیه برنامه رو باهاش نگه داری تا پراگرس نرمتر نشون داده بشه ولی برای این کاری که شما گفتی توصیه نمیشه... حالا خواستی امتحانش بکن.

اگر برای پردازشه، میتونی کل پردازش رو درصدش رو حساب کنی بعد هر 1 درصدی که رفت جلو یکی به پراگرس بار اضافه کنی.
مثلا:
اگر 3000 رکورد میخوای پردازش بشه:
value=3000 * i / 100
(الان اینو امتحان نکردم، شاید باید جای i و 100 رو عوض کنی :baffle:، بلاخره این سه تا پارامتر رو اینقدر اینور اونور کن خودش درست میشه :sexy_girl:)

که i اینجا رکوردی هست که داره پردازش میشه. بعد این value رو توی پراگرس بار بزاد تا نشون بده.