الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Splash Screen With Progressbar

بدأه backar-net في 8 أغسطس 2008 · 3 رد · 1,212 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندما يحتوي البرنامج على عدد ضخم من المكونات أو مكونات كبيرة الحجم - كالصور النقطية - يأخذ البرنامج وقتا ليتم تحميله بالكامل وفي النهاية يتم تنفيذ التابع ShowMainForm، وهناك طريقة لإخبار المستخدم بالانتظار حتى تمام التحميل وهي أن نضع فورم جديد نسميه SplashScreen. كما في المرفق.

ماهي طريقة وضع ProgressBar على هذا الفورم لكي يتقدم بشكل حقيقي أثناء وقت التحميل كاملا؟

أعتقد - كفكرة - أننا نحتاج لمعرفة وقت التحميل قبل أن يكتمل؟ لكن .. كيف يتم ذلك؟

أرجو أن يتم التوضيح إن كانت فكرتي خاطئة، أنا أحب طرح أفكاري كي أكون مناقشا ومشاركا وليس متلق فقط.

ولكم مني أطيب التحية ... بكار - نت.

SplashScreen.rar

#2

هناك مثال لما تبحث عنه لكن بالجافا أرجو أن يساعدك أحد من الأخوة الجافاويين في الأمر

http://www.koders.com/java/fid2FC84D800DE6...x?s=cdef%3Atree

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#3

اولا عليك انشاء SplashScreen واظهاره

ثم تقوم بانشاء الForms الباقية وكل مرة تحديث ProgressBar

مثال بسيط به 10 من Forms واستخدمت Gauge فيه Delphi_Progress_within_Splash_Screen.zip

[color= #000000; font-weight: bold;]program Project1[color= #000066;];

 

[color= #000000; font-weight: bold;]uses

  Forms[color= #000066;],

  SysUtils[color= #000066;],

  Unit1 [color= #000000; font-weight: bold;]in [color= #ff0000;]'Unit1.pas' [color= #808080; font-style: italic;]{Form1}[color= #000066;],

  USplash [color= #000000; font-weight: bold;]in [color= #ff0000;]'USplash.pas' [color= #808080; font-style: italic;]{FSplash}[color= #000066;],

  Unit2 [color= #000000; font-weight: bold;]in [color= #ff0000;]'Unit2.pas' [color= #808080; font-style: italic;]{Form2}[color= #000066;],

  Unit3 [color= #000000; font-weight: bold;]in [color= #ff0000;]'Unit3.pas' [color= #808080; font-style: italic;]{Form3}[color= #000066;],

  Unit4 [color= #000000; font-weight: bold;]in [color= #ff0000;]'Unit4.pas' [color= #808080; font-style: italic;]{Form4}[color= #000066;],

  Unit5 [color= #000000; font-weight: bold;]in [color= #ff0000;]'Unit5.pas' [color= #808080; font-style: italic;]{Form5}[color= #000066;],

  Unit6 [color= #000000; font-weight: bold;]in [color= #ff0000;]'Unit6.pas' [color= #808080; font-style: italic;]{Form6}[color= #000066;],

  Unit7 [color= #000000; font-weight: bold;]in [color= #ff0000;]'Unit7.pas' [color= #808080; font-style: italic;]{Form7}[color= #000066;],

  Unit8 [color= #000000; font-weight: bold;]in [color= #ff0000;]'Unit8.pas' [color= #808080; font-style: italic;]{Form8}[color= #000066;],

  Unit9 [color= #000000; font-weight: bold;]in [color= #ff0000;]'Unit9.pas' [color= #808080; font-style: italic;]{Form9}[color= #000066;],

  Unit10 [color= #000000; font-weight: bold;]in [color= #ff0000;]'Unit10.pas' [color= #808080; font-style: italic;]{Form10}[color= #000066;];

 

[color= #008000; font-style: italic;]{$R *.res}

[color= #000000; font-weight: bold;]Procedure Prog[color= #000066;];

[color= #000000; font-weight: bold;]Begin

    Application[color= #000066;].[color= #006600;]ProcessMessages[color= #000066;];

    FSplash[color= #000066;].[color= #006600;]Gauge1[color= #000066;].[color= #006600;]AddProgress[color= #000066;]([color= #000066;]random[color= #000066;]([color= #0000ff;]10[color= #000066;])[color= #0000ff;]+1[color= #000066;])[color= #000066;];

    [color= #000066;]sleep[color= #000066;]([color= #0000ff;]123[color= #000066;])[color= #000066;];

[color= #000000; font-weight: bold;]end[color= #000066;];

[color= #000000; font-weight: bold;]begin

[color= #808080; font-style: italic;]//  Application.Initialize;

  FSplash [color= #000066;]:[color= #000066;]= TFSplash[color= #000066;].[color= #006600;]Create[color= #000066;](Application[color= #000066;])[color= #000066;];

  FSplash[color= #000066;].[color= #006600;]Show[color= #000066;];

  FSplash[color= #000066;].[color= #006600;]Update[color= #000066;];

  FSplash[color= #000066;].[color= #006600;]Gauge1[color= #000066;].[color= #006600;]Progress [color= #000066;]:[color= #000066;]= [color= #0000ff;]1[color= #000066;];

  [color= #000066;]Randomize[color= #000066;];

 

  Application[color= #000066;].[color= #006600;]CreateForm[color= #000066;](TForm1[color= #000066;], Form1[color= #000066;])[color= #000066;]; Prog[color= #000066;];

  Application[color= #000066;].[color= #006600;]CreateForm[color= #000066;](TForm2[color= #000066;], Form2[color= #000066;])[color= #000066;]; Prog[color= #000066;];

  Application[color= #000066;].[color= #006600;]CreateForm[color= #000066;](TForm3[color= #000066;], Form3[color= #000066;])[color= #000066;]; Prog[color= #000066;];

  Application[color= #000066;].[color= #006600;]CreateForm[color= #000066;](TForm4[color= #000066;], Form4[color= #000066;])[color= #000066;]; Prog[color= #000066;];

  Application[color= #000066;].[color= #006600;]CreateForm[color= #000066;](TForm5[color= #000066;], Form5[color= #000066;])[color= #000066;]; Prog[color= #000066;];

  Application[color= #000066;].[color= #006600;]CreateForm[color= #000066;](TForm6[color= #000066;], Form6[color= #000066;])[color= #000066;]; Prog[color= #000066;];

  Application[color= #000066;].[color= #006600;]CreateForm[color= #000066;](TForm7[color= #000066;], Form7[color= #000066;])[color= #000066;]; Prog[color= #000066;];

  Application[color= #000066;].[color= #006600;]CreateForm[color= #000066;](TForm8[color= #000066;], Form8[color= #000066;])[color= #000066;]; Prog[color= #000066;];

  Application[color= #000066;].[color= #006600;]CreateForm[color= #000066;](TForm9[color= #000066;], Form9[color= #000066;])[color= #000066;]; Prog[color= #000066;];

  Application[color= #000066;].[color= #006600;]CreateForm[color= #000066;](TForm10[color= #000066;], Form10[color= #000066;])[color= #000066;]; Prog[color= #000066;];

 

  FSplash[color= #000066;].[color= #006600;]Gauge1[color= #000066;].[color= #006600;]Progress [color= #000066;]:[color= #000066;]= [color= #0000ff;]100[color= #000066;];sleep[color= #000066;]([color= #0000ff;]150[color= #000066;])[color= #000066;];

  FSplash[color= #000066;].[color= #006600;]Free[color= #000066;];

  Application[color= #000066;].[color= #006600;]Run[color= #000066;];

[color= #000000; font-weight: bold;]end[color= #000066;].

والسلام عليكم ورحمة الله

d4baa0.gif
#4

أشكركم كثيرا إخوتي على هذا التفاعل ..

شكرا أخي العزيز عبد العزيز لقد استعملت الطريقة نفسها مع بعض التعديلات لأن مشروعي ليس فيه

الكثير من الفورمات بل يحوي ثلاثة وفي كل منها عدد كبير من المكونات التي تحتاج إلى تهيئة في الحدث

OnCreate لذلك نقلت تعريف الإجراء Prog الذي يزيد العداد إلى الفورم الرئيس لكي تستفيد منه بقية

الفورمات وأصبحت أستخدمه في أحداث OnCreate لكل الفورمات الموجودة وأضفت إليه بارامتر

State:string لأظهر موضع التعمليات في الوقت الحالي (مثلا: جاري تحميل الواجهة الرسومية ...) وأضفت

Label على واجهة Splash تظهر تلك السلاسل النصية State.

أما بالنسبة لإشتراكي الجديد في المنتدى فهو ما (جننـي) لأني أحاول تسجيل الدخول منذ يومين على حسابي

القديم backar-net بلا جدوى لأن كلمة السر خطأ مع أنني لم أغيرها، وحاولت استخدام خاصية (نسيت كلمة

المرور) أيضا بلا جدوى (كود التسجيل غير محقق) دوما حوالي 15 مرة كررت التجربة (يومين من المحاولات).

فإذا لم يكن مزعجا أرجو النظر في هذا الموضوع وتفعيل اشتراكي القديم وحذف الحالي أو أتابع بالاشتراك

الجديد والله المستعان (اختاروا الأفضل للمنتدى).

مواضيع مشابهة