PDA

View Full Version : نحوه استفاده از ProgressBar



ehsan_zanganeh
دوشنبه 16 مهر 1386, 14:31 عصر
با سلام

چطور می شه از ProgressBar استفاده کرد.
مثلا می خوایم از ابتدای یک کار شروع و در پایان به انتها برسه

VisualStudio
دوشنبه 16 مهر 1386, 15:40 عصر
با این دستور یک خانه پر میشه که شما می تونید در حلقه یا یک ساختار تصمیم گیری بگزارید
ProgressBar.value +=1

ehsan_zanganeh
دوشنبه 16 مهر 1386, 15:56 عصر
ببینید من یک دستور select دارم . می خوام از ابتدا شروع کنه بکار و در پایان تمام بشه

ehsan_zanganeh
سه شنبه 17 مهر 1386, 11:31 صبح
کسی مطلبی نداره. می دونم توی یک حلقه بزارم می تونم این کار رو بکنم. ولی برای مورد بالا می خوام یا برای لود شدن فرم.

مرسی

sabair
سه شنبه 17 مهر 1386, 11:39 صبح
دوست عزیز این دستور برای رمز است
برای مثال اگر رمز شما 1 بود سپس ProgressBar اجراشود تا value آن =100 شود سپس فرم 2 نمایش دهد
کد


PublicClass Form1
Dim A AsInteger
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox1.Text = "1"Then
Timer1.Enabled = True
ProgressBar1.Visible = True
Else
MsgBox("رمز اشتباه است ")
EndIf
EndSub
PrivateSub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ProgressBar1.Value = 1
A = A + 1
ProgressBar1.Value = System.Convert.ToString(A)
If A = 100 Then
Form2.Show()
EndIf
EndSub
EndClass

در ضمن تایمیر interval آن را 1 باشد

این مطلب ارزش تشکر نداشت
برای لود شدن فرم
درضمن تایمر Enabled=true باشد


PublicClass Form1
Dim A AsInteger
PrivateSub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ProgressBar1.Value = 1
A = A + 1
ProgressBar1.Value = System.Convert.ToString(A)
If A = 100 Then
Form2.Show()
EndIf
EndSub
EndClass

sabair
سه شنبه 17 مهر 1386, 11:50 صبح
با این دستور یک خانه پر میشه که شما می تونید در حلقه یا یک ساختار تصمیم گیری بگزارید
ProgressBar.value +=1
اصلا به دستور حلقه احتیاجی نیست
برنامه را پیچید می کند
باتشکر

ehsan_zanganeh
سه شنبه 17 مهر 1386, 13:18 عصر
دوستان من می خوام در حین انجام کار ProgressBar مقدارش تغییر کنه

ehsan_zanganeh
سه شنبه 17 مهر 1386, 14:18 عصر
یعنی در حال لود فرم یا جستجو، ProgressBar تغییر کنه و در پایان مقدارش به 100 برسه

sabair
سه شنبه 17 مهر 1386, 15:16 عصر
دوست عزیز این دستور برای رمز است
برای مثال اگر رمز شما 1 بود سپس ProgressBar اجراشود تا value آن =100 شود سپس فرم 2 نمایش دهد
کد


PublicClass Form1
Dim A AsInteger
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox1.Text = "1"Then
Timer1.Enabled = True
ProgressBar1.Visible = True
Else
MsgBox("رمز اشتباه است ")
EndIf
EndSub
PrivateSub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ProgressBar1.Value = 1
A = A + 1
ProgressBar1.Value = System.Convert.ToString(A)
If A = 100 Then
Form2.Show()
EndIf
EndSub
EndClass

در ضمن تایمیر interval آن را 1 باشد

این مطلب ارزش تشکر نداشت
برای لود شدن فرم
درضمن تایمر Enabled=true باشد


PublicClass Form1
Dim A AsInteger
PrivateSub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ProgressBar1.Value = 1
A = A + 1
ProgressBar1.Value = System.Convert.ToString(A)
If A = 100 Then
Form2.Show()
EndIf
EndSub
EndClass

دوست عزیز این کد تست کنید مشکل شما برطرف می شود
در ضمن اگر مشکل شما برطرف نشد
یکی از برنامه نویسان وبی دانت به نام استاد آنلاین در یاهو مسنجر پاسخ گوی شما می باشد
ostadonline2@yahoo.com
پس دیگر بحث به این سادگی را گسترش نفرمائید

saeed_rezaei
چهارشنبه 18 مهر 1386, 00:35 صبح
با سلام

چطور می شه از ProgressBar استفاده کرد.
مثلا می خوایم از ابتدای یک کار شروع و در پایان به انتها برسه

سلام.
در کل روش استفاده از progress رو دوستمون آقای visual studio گفتند. با کدی که ایشون نوشتن شما می تونید progress بار رو تغییر وضعیت بدید که البته احساس میکنم که اینرو هم خودتون می دونستید.
چیزی که من از سوال شما استنتاج می کنم، شروع و پایان عملیات هست.
ببینید. شروع و انتهای عملیات رو باید به صورت عددی در minimum و maximum وارد کنید. نقطه شروع رو غالب اوقات صفر می زنن اما نقطه پایان به هدف و الگوریتم کارتون بر میگرده.
برای مثال فرض کنید می خواید تعداد صد فایل رو در محل دیگه ای کپی کنید. خوب بدین طریق نقطه شروع و پایان شما یک تا صد می شه که با کپی هر فایل یکی به مقدار value اضافه می شه.
این روش برای حالت شمارش خیلی راحت هست. اما برای حالتهایی که شمارش در کار نیست و یا اینکه با انجام اون عملیات سیستم به پردازش دیگه ای نمی پردازه قضیه فرق می کنه. در این حالتها شما بایستی از threadاستفاده کنید.

حالا من نمی دونم منظور شما از دستور select کدوم هستش.
select case
یا select دیتابیس.

ehsan_zanganeh
چهارشنبه 18 مهر 1386, 10:18 صبح
سلام.
در کل روش استفاده از progress رو دوستمون آقای visual studio گفتند. با کدی که ایشون نوشتن شما می تونید progress بار رو تغییر وضعیت بدید که البته احساس میکنم که اینرو هم خودتون می دونستید.
چیزی که من از سوال شما استنتاج می کنم، شروع و پایان عملیات هست.
ببینید. شروع و انتهای عملیات رو باید به صورت عددی در minimum و maximum وارد کنید. نقطه شروع رو غالب اوقات صفر می زنن اما نقطه پایان به هدف و الگوریتم کارتون بر میگرده.
برای مثال فرض کنید می خواید تعداد صد فایل رو در محل دیگه ای کپی کنید. خوب بدین طریق نقطه شروع و پایان شما یک تا صد می شه که با کپی هر فایل یکی به مقدار value اضافه می شه.
این روش برای حالت شمارش خیلی راحت هست. اما برای حالتهایی که شمارش در کار نیست و یا اینکه با انجام اون عملیات سیستم به پردازش دیگه ای نمی پردازه قضیه فرق می کنه. در این حالتها شما بایستی از threadاستفاده کنید.

حالا من نمی دونم منظور شما از دستور select کدوم هستش.
select case
یا select دیتابیس.

با سلام و تشکر

منظورم select دیتابیس است که برای فرم جستجو نوشتم. که ممکنه کمی طول بکشه و می خوام این انتظار رو با progressbar نشون بدم. که از ابتدای select شروع بشه و در نهایت 100 درصد بشه

مرسی

VisualStudio
چهارشنبه 18 مهر 1386, 17:14 عصر
با سلام و تشکر

منظورم select دیتابیس است که برای فرم جستجو نوشتم. که ممکنه کمی طول بکشه و می خوام این انتظار رو با progressbar نشون بدم. که از ابتدای select شروع بشه و در نهایت 100 درصد بشه

مرسی

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

saeed_rezaei
چهارشنبه 18 مهر 1386, 23:59 عصر
سلام.
وقتی عملیات ، فقط یه پروسس هست و اونهم وقت گیر قضیه فرق می کنه.
شما وقتی دستور select رو اجرا می کنید دوتا مشکل وجود داره.
وقتی این دستور اجرا می شه، کنترل زمان از دست سیستم شما خارج هست.
دوم اینکه شما از قبل که نمی دونید چه تعداد رکورد ممکنه برگشت داده بشن. درسته.
همانطور که قبلا هم گفتم progress رو برای وقتی استفاده می کنند که حداقل با عملیات نوع شمارشی کار کنید و بتونید در حین انجام عملیات شمارش هم صورت بگیره.
اجازه بده یه مثال عجیب ساختمانی بزنم. این دو حالت کاملا شبیه خالی کردن یه کامیون بلوک با خالی کردن یه کامیون ماسه هست. وقتی بلوک می گیری، می دونی چه تعداد بلوک داری، و هر کارگر داره چند تا بلوک رو جابه جا می کنه. خوب خیلی راحت می تونی واسش پروگرس بزنی
اما وقتی ماسه می زنی، به این سادگی ها نیست. این دیگه یه مقدار عددی نیست. لحظه اولی که جک می زنه یه زره خالی می شه اما یهو کل ماسه خالی می شه.
دستور select دیتابیس، نه مشخص می کنه که چقدر زمان می گیره و نه مشخص می کنه که چه تعداد رکورد رو بر می گردونه. عموما در این حالتهایی که هیچی در مورد عملیات نمی دونیم، از پروگرسهای حلقوی استفاده می شه. این پروگرسها رو که مطمئنا تا حالا دیدی، به صورت یه حلقه هست، فقط داره روند کار رو نشون می ده و اصلا مشخص نیست که کی عملیات تموم می شه. پیشنهاد من استفاده از این پروگرس توی برنامتون هست.
اما چنانچه به هر دلیلی بازم مایلید که از همین پروگرسهای معمول خطی استفاده کنید. بایستی یه thread درست کنید که البته بااستفاده از timer هم قابل حل هست. بعد در هر بار اجرای این thread یا timer.tick همینجوری یه مقدار به مقادیر قبلی اضافه کنید. حالا ممکنه قبل ازاینکه پروگرس به صد برسه کار select انجام بشه یا اینکه تا چهار تا صدتایی پیش بره اما همچنان ادامه داشته باشه.

ehsan_zanganeh
پنج شنبه 19 مهر 1386, 10:07 صبح
با سلام و تشکر

ببینید دوستان می تونیم از روش دوستمون visual studio استفاده کنیم ولی روش خوبی نیست.
چون ممکنه نتیجه رو ببینیم ولی progress هنوذ تموم نشده باشده.

ولی یه سئول باقی می مونه که پس وقتی یک فرم رو توی visual studio باز می کنیم این حالت رعایت می شه.

با عرض پوزش راجع به thread یه توضیحی بدید من نمی دونم چیه.

با تشکر

ehsan_zanganeh
جمعه 05 بهمن 1386, 14:17 عصر
کسی سئوال من رو نمی تونه جواب بده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟