PDA

View Full Version : نمایش ProgressBar در SplashScreen



Gladiator
شنبه 05 اردیبهشت 1383, 09:54 صبح
با سلام

این یک سوال قدیمیه که توی فروام قدیمی سایت مطرح کردم و آقای کرامتی جوابشو داده بود ولی الان به فورام قدیمی سایت دسترسی ندارم و چگونگی این کار هم توی ذهنم نمونده ٬ لطفا راهنمایی بفرمایید . با ذکر مثال .

متشکرم .

Gladiator
شنبه 05 اردیبهشت 1383, 09:56 صبح
حتما متوجه سوالم شدید ٬ میخوام لود شدن برنامه رو ( هر چقدر که میخواد طول بکشه ) با ProgressBar بروی فرم SplasH Screen نمایش بدم .

متشکرم .

مهدی کرامتی
شنبه 05 اردیبهشت 1383, 11:22 صبح
از منوی Project گزینه View Source را انتخاب کرده و در سورس کد پروژه تغییرات زیر را انجام دهید:

در اینجا N را برابر تعداد فرمهای برنامه‌تان قرار دهید، یعنی اگر برنامه شما 5 فرم داشته باشد بجای N عدد 5 را تایپ کنید. در ضمن فراموش نکنید که روی فرم SplashScreen یک ProgressBar‌ قرار دهید.



////****
begin
Application.Initialize;
with TSPLASHScreen.Create(nil) do
try
PROGRESSBar1.Max := N*10;
Show;
Update;
Application.CreateForm(TForm1, Form1);
PROGRESSBar1.StepBy(10);
Application.CreateForm(TForm2, Form2);
PROGRESSBar1.StepBy(10);
.........
.........
.........
Application.CreateForm(TFormN, FormN);
PROGRESSBar1.StepBy(10);
finally
Free;
end;
Application.Run;
end.

omid_delphi2
شنبه 05 اردیبهشت 1383, 11:48 صبح
با سلام
این کد داخل ویندوز XP درست کار نمیکند و پیغام خطا میدهد
ولی در ویندوز 98درست کار میکند

شنبه 05 اردیبهشت 1383, 12:22 عصر
سلام گلادی جون خوبی مهندسک؟؟ :wink:
اقا ور میداری یه دونه پروگرس بار روی فرم اسپلش میزاری
بعد خاصیت max رو میزاری به تعداد فرمهای پروژه ست میکنی
بعد توی oncreate هر کدوم از اون فرم ها یه دونه

splash1.ProgressBar1.StepBy(1);
اضافه میکنی
خوش باشی امیر جون
:kiss:

شنبه 05 اردیبهشت 1383, 12:34 عصر
:( انگار یه کم دیر کردم پست اقا مهدی رو ندیدم
به هر حال هر دو روش دقیقا یکی هستن

Pichidehtarin
شنبه 05 اردیبهشت 1383, 12:40 عصر
با سلام
استادید فقط به پیشرفت ProgressBar همگام با ساخته شدن فرم ها اشاره کردن .
شاید برنامه بانک اطلاعاتی داشته باشه که برای بار گذاریش زمان لازم باشه یا رجیستری زیادی رو فراخوانی کنه .
اگه به کدها و راهنمایی های فوق دقت کرده باشی حتما در مورد پیشرفت ProgressBar چیزهایی فهمیدی با این حساب اگه بخوای ProgressBar رو تو زمان های متفاوت پیشرفت بدی باید بعد از کد اونها چند تا استپ بهش اضافه کنی مثلا اگه میخوای از بانک اطلاعاتی استفاده کنی بهتره اون رو از طریق کد بارگذاری کنی و کد پیشرفت ProgressBar رو بعد از کد بارگذاری بانک اطلاعاتی قرار بدی .
من در حالت کلی منظورم اینه که هر جا زمانی مصرف میشه ProgressBar رو پیشرفت بده .

phantasm
شنبه 05 اردیبهشت 1383, 23:39 عصر
ضمنا خیلی بهینه تره که این کارها رو توی background و با یه thread دیگه انجام داد.

مهدی کرامتی
یک شنبه 06 اردیبهشت 1383, 01:32 صبح
نمایش یک Splash Screen کار آنقدر بخصوصی نیست که در یک Thread انجام شود.

Gladiator
یک شنبه 06 اردیبهشت 1383, 07:57 صبح
آقایون متشکرم . :heart: :flower:

phantasm
یک شنبه 06 اردیبهشت 1383, 12:04 عصر
نمایش یک Splash Screen کار آنقدر بخصوصی نیست که در یک Thread انجام شود.

من فکر میکنم یکی از مواردی که thread ها میتونن مفید باشن اینه که چند تا process قراره تقریبا همزمان دنبال بشن و یه ارتباط نزدیکی بینشون برقراره , برای همین در اینجا چون آپ دیت کردن ProgressBar ارتباط نزدیکی با load داره عرض کردم
" خیلی بهینه تره که این کارها رو توی background و با یه thread دیگه انجام داد.".مطمئنا بدون thread هم کارها پیش میره.
لطفا اگه اشتباه میکنم راهنمایی بفرمایید.

مهدی کرامتی
یک شنبه 06 اردیبهشت 1383, 12:08 عصر
من فکر میکنم یکی از مواردی که thread ها میتونن مفید باشن اینه که چند تا process قراره تقریبا همزمان دنبال بشن و یه ارتباط نزدیکی بینشون برقراره , برای همین در اینجا چون آپ دیت کردن ProgressBar ارتباط نزدیکی با load داره عرض کردم
" خیلی بهینه تره که این کارها رو توی background و با یه thread دیگه انجام داد
اگر ممکنه یک مثال عملی همراه با کد و مثال برای چنین کاربردی اینجا نوشته و ضمیمه کنید.