PDA

View Full Version : سوال: بارگذاری برنامه در هنگام نمایش فرم Splash Screen



JaVa
جمعه 13 بهمن 1391, 20:52 عصر
سلام و درود بر شما.:لبخندساده:

دوستان تا حالا شما بارها شاهد این موضوع بودید که وقتی یه برنامه سنگین مثل فتوشاپ رو باز می کنید

در فرم Splash اون برنامه شاهد بارگذاری یه سری موضوعات مثل فونت و.. هستید. می خواستم بدونم این که

این موضوعات فقط برای سرگرم کردن کاربره و قشنگ تر شدن برنامه هست یا اینکه واقعا دارن بارگذاری می شن.

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


ممنون از لطفتون.:لبخندساده:

djhooman
جمعه 13 بهمن 1391, 21:42 عصر
ممنون میشم یکی راهنمایی کنه ... منم دوست دارم بدونم ....

فرید نجفلو
جمعه 13 بهمن 1391, 21:55 عصر
سلام
نه واسه سرگرمی نیست!
راه دوری هم نرید همین ویژوال استیو هم اگه دقت کنید سلوشن رو لود می کنه اما پروگراس بار یا ظاهرش گیر نمی کنه
همه اینها از چند نخی استفده میشه
شما برای لود باید کد ها رو با یه نخ جدید (نه اونی که فرم رو داره اجرا می کنه) اجرا کنید
البته یادتون باشه کار با چند نخی اون هم اگه با فرم و کنترل ها تعامل داشته باشه سخت تر هم میشه!

JaVa
جمعه 13 بهمن 1391, 22:16 عصر
شما برای لود باید کد ها رو با یه نخ جدید (نه اونی که فرم رو داره اجرا می کنه) اجرا کنید


برای روشن تر شدن موضوع لطفا یه مثال هم بزنید.

یه سئوال دیگه : اگه بخوایم مراحل بارگذاری برنامه رو داخل یه Progress Bar نشون بدیم . که یه رابطه با بارگذاری فرم داشته باشه چی ؟
(پر شده Progress bar به اینضورت نباشه که خودمون بیام داخل یه تایمر مقدار Value پروگرس بار رو افزایش بدیم.)

با تشکر.

the king
جمعه 13 بهمن 1391, 23:04 عصر
برای روشن تر شدن موضوع لطفا یه مثال هم بزنید.

یه سئوال دیگه : اگه بخوایم مراحل بارگذاری برنامه رو داخل یه Progress Bar نشون بدیم . که یه رابطه با بارگذاری فرم داشته باشه چی ؟
(پر شده Progress bar به اینضورت نباشه که خودمون بیام داخل یه تایمر مقدار Value پروگرس بار رو افزایش بدیم.)

با تشکر.

اگه کاری که قراره در هنگام Load انجام بشه تقسیم بندی مشخصی داره و از ابتدا می دونید که دقیقا چند مرحله است میشه همچین کاری رو انجام داد،
اما معمولا قابل پیشبینی کردن نیست و باید به نمایش یک انیمیشن یا یک ProgressBar ای که وقتی به انتها میرسه مجددا از سر شروع می کنه یا
نمایش عنوان کاری که الان داره انجام میشه اکتفا کرد.

Hossis
شنبه 14 بهمن 1391, 08:24 صبح
چرا این قدر پیچیده اش می کنید
تو فرم اسپلش, یک لیبل بگذارید با متن «در حال بارگیری ....»
اسپلش فقط برای این هست که کاربر بدونه برنامه اش در حال اجرا هست و هنگ نشده و مشکلی نداره, حال ضرورتی نداره که تک تک مراحل و جزئیات رو هم نشون بدید و چیزهایی که کاربر اصلا نیازی به دونستن اون نداره, معرفی کنید.
من از این اسپلش ها زیاد درست کردم و همه هم ازش راضی اند. خیلی از بازی های بزرگ و برنامه های سنگین هم همین کار رو می کنند.

JaVa
شنبه 14 بهمن 1391, 16:03 عصر
چرا این قدر پیچیده اش می کنید
تو فرم اسپلش, یک لیبل بگذارید با متن «در حال بارگیری ....»
اسپلش فقط برای این هست که کاربر بدونه برنامه اش در حال اجرا هست و هنگ نشده و مشکلی نداره, حال ضرورتی نداره که تک تک مراحل و جزئیات رو هم نشون بدید و چیزهایی که کاربر اصلا نیازی به دونستن اون نداره, معرفی کنید.
من از این اسپلش ها زیاد درست کردم و همه هم ازش راضی اند. خیلی از بازی های بزرگ و برنامه های سنگین هم همین کار رو می کنند.

این هم یه نمونه از گفته شما.

Public Class FrmSplash

Public counter As Integer
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
counter = counter + 5
If counter = 25 Then lblload.Text = " در حال بار گیری فایل"
If counter = 50 Then lblload.Text = "در حال بارگیری فونت ها"
If counter = 75 Then lblload.Text = "در حال بارگیری استایل برنامه"
If counter = 100 Then lblload.Text = "شروع برنامه"
End Sub

Private Sub FrmSplash_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
counter = 0
Timer1.Interval = 100
Timer1.Enabled = True

lblload.Text = " در حال بار گیری منابع"
End Sub
End Class

Hossis
شنبه 14 بهمن 1391, 16:31 عصر
این هم یه نمونه از گفته شما.

Public Class FrmSplash

Public counter As Integer
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
counter = counter + 5
If counter = 25 Then lblload.Text = " در حال بار گیری فایل"
If counter = 50 Then lblload.Text = "در حال بارگیری فونت ها"
If counter = 75 Then lblload.Text = "در حال بارگیری استایل برنامه"
If counter = 100 Then lblload.Text = "شروع برنامه"
End Sub

Private Sub FrmSplash_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
counter = 0
Timer1.Interval = 100
Timer1.Enabled = True

lblload.Text = " در حال بار گیری منابع"
End Sub
End Class
خوب در این مثال مشکل اینه که اگر یک وقت تایمر, به صد درصد رسید ولی هنوز لود نشد, چه اتفاقی می افته؟؟ ممکنه همه سیستم ها, به یک اندازه سریع نباشند.
در ضمن در رویداد تایمر باید لیبل رو هم رفرش کنید تا مقدار جدید رو نشون بده !
موفق باشید.

JaVa
شنبه 14 بهمن 1391, 16:45 عصر
در ضمن در رویداد تایمر باید لیبل رو هم رفرش کنید تا مقدار جدید رو نشون بده !


بدون رفرش کردن هم متن لیبل عوض میشه. امتحان کنید ؟


خوب در این مثال مشکل اینه که اگر یک وقت تایمر, به صد درصد رسید ولی هنوز لود نشد, چه اتفاقی می افته؟؟ ممکنه همه سیستم ها, به یک اندازه سریع نباشند.

خوب چاره کار چیه ؟

JaVa
شنبه 14 بهمن 1391, 17:03 عصر
سلام.

دوستان یه روش دیگه که دیگخ نیازی به کد نویسی نداره استفاده از این روشی هست که این پایین می گم :

این هم مراحل کار:


http://barnamenevis.org/attachment.php?attachmentid=91164&d=1344785686

http://barnamenevis.org/attachment.php?attachmentid=91165&d=1344785686

http://barnamenevis.org/attachment.php?attachmentid=91166&d=1344785686

این چطور ه ؟؟

آیا خود vb.net دیگه وقتی که بارگذاری برنامه تموم شد فرم اسپلش رو می بنده و فرم اصلی نمایش می ده ؟

با تشکر

arashsoft
شنبه 01 شهریور 1393, 11:24 صبح
سلام
برای سی شارپ چطور splash را وارد کنیم