delphi4arab منتديات دلفي للعرب

نسخة كاملة : استعمال progressBar في splashscreen
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
في مشروعي قمت بإنشاء splashscreen لبرنامج وفمت بإضافة عليها progressBar لتبين حالة التقدم
عندما أقوم بالمعاينة تظهر سبلاش سكرين لكن لا يظهر حالة التقدم
هده محاولتي
كود :
egin splashscreen:=Tsplashscreen.Create(Application); try splashscreen.Show; splashscreen.Timer1.Enabled:=true; splashscreen.ProgressBar1.Position:=splashscreen.ProgressBar1.Position+1; Application.Initialize; splashscreen.Update; sleep(10000); Application.MainFormOnTaskbar := True; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.CreateForm(TForm3, Form3); Application.CreateForm(TForm4, Form4); Application.CreateForm(TForm5, Form5); Application.CreateForm(TForm6, Form6); Application.CreateForm(TForm7, Form7); Application.CreateForm(TForm8, Form8); Application.CreateForm(TForm9, Form9); Application.CreateForm(TForm10, Form10); splashscreen.Hide; finally Application.Run; end; splashscreen.Free; end.
وعليكم السلام ورحمة الله

مما فوق اراك استخدمت Timer فماذا كتبت به (الحدث OnTimer) ؟
كتب في الحدث OnTimer

كود :
ProgressBar1.Position:=ProgressBar1.Position+1
طريقة أو حل سريع لكنه ليس انيق!
عدد الForm لديك مثلا 10 يكون :

كود :
[COLOR="Red"] Procedure Update; Begin splashscreen.ProgressBar1.Position:=splashscreen.ProgressBar1.Position+1; Sleep(Random(400)); end;[/COLOR] begin splashscreen:=Tsplashscreen.Create(Application); try splashscreen.Show; [color=red]//[/color]splashscreen.Timer1.Enabled:=true; [color=red] splashscreen.ProgressBar1.MAX:=10;[/color] splashscreen.ProgressBar1.Position:=[color=Red]0[/color]; splashscreen.Update; Application.Initialize; splashscreen.Update; [color=red]//[/color]sleep(10000); Randomize; Application.CreateForm(TForm1, Form1);[color=red]Update;[/color] Application.CreateForm(TForm2, Form2)[color=red];Update[/color]; Application.CreateForm(TForm3, Form3);[color=red]Update;[/color] Application.CreateForm(TForm4, Form4);[color=Red]Update;[/color] Application.CreateForm(TForm5, Form5);[color=red]Update;[/color] Application.CreateForm(TForm6, Form6);[color=red]Update;[/color] Application.CreateForm(TForm7, Form7);[color=red]Update;[/color] Application.CreateForm(TForm8, Form8);[color=red]Update;[/color] Application.CreateForm(TForm9, Form9);[color=red]Update;[/color] Application.CreateForm(TForm10, Form10);[color=red]Update;[/color] splashscreen.Hide; finally Application.Run; end; splashscreen.Free; end.
شكرا أخ B.M.AbdelAziZ

لكن لو سمحت شرح بسيط للكود

التعديل بسيط، بدلا من استخدام مكون Timer (يمكنك حذفه) انشات Function اسميتها Update تقوم بتحدث قيمة Position المكون ProgressBar باضافة واحد، كما هو مكتوب فوق بالاحمر

نضع بالخاصية MAX للمكون ProgressBar عدد الForms كما هو بمثالنا 10
نحدد الموضع Position بصفر
بعد انشاء كل Form نستدعي Update التي تقوم بما سبق (اضافة واحد لProsition مكون ProgressBar )
لاحظ :
كود :
Sleep(Random(400));
ناخذ رقم عشوائي من 400 وننتظر قليلا Sleep حتى لايكون التحديث سريعا جدا

اي شيئ اخر حدده وان شاء الله اجيبك
شكرا أخ B.M.AbdelAziZ على الردود

جربت الكود وهو شغال لكن مازلت لم أفهم شيئ

الخاصية max تعني القيمة القصوى للمكون pro bar من المفروض أن تكون 100 لكن أنت وضعت
كود :
splashscreen.ProgressBar1.MAX:=10;
abdelali91 كتب :splashscreen.ProgressBar1.MAX:=10
القيمة القصوى ( ProgressBar1.MAX) انت من تتحكم فيها ان اردت ان تستعمل 100 ضع في ال [PHP]Procedure Update
كود :
Begin splashscreen.ProgressBar1.Position:=splashscreen.ProgressBar1.Position+[color=Red]10[/color]; Sleep(Random(400));
وضع Procedure بعد كل create للفورم يقوم بإستدعاء هذه Procedure المسماة Update
عذرا على التطفل Smile
شكرا أخ louay