استعمال progressBar في splashscreen
#1
السلام عليكم
في مشروعي قمت بإنشاء 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.
الرد
#2
وعليكم السلام ورحمة الله

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

كود :
ProgressBar1.Position:=ProgressBar1.Position+1
الرد
#4
طريقة أو حل سريع لكنه ليس انيق!
عدد ال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.
الرد
#5
شكرا أخ B.M.AbdelAziZ

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

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

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

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

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

الخاصية max تعني القيمة القصوى للمكون pro bar من المفروض أن تكون 100 لكن أنت وضعت
كود :
splashscreen.ProgressBar1.MAX:=10;
الرد
#8
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
أدبني الدهر فأراني نقص عقلي وإذا ما ازددت علما زادني علما بجهلي
الرد
#9
شكرا أخ louay
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم