PDA

View Full Version : نمایش در Progress bar



m.4.r.m
سه شنبه 26 اردیبهشت 1391, 10:29 صبح
سلام دوستان یه سوال ؛

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

محسن واژدی
سه شنبه 26 اردیبهشت 1391, 11:06 صبح
سلام علیکم
خیلی متوجه منظورتون نشدم یعنی میخواهید ProgressBar یک حد max داشته باشد و بر اساس اون مقدار حجم فایل دیتابیس را نمایش دهید، مانند کد زیر؟
Private Sub Command1_Click()
ProgressBar1.Max = 10000000
ProgressBar1.Value = FileLen("c:\my_db.mdb")
End Sub

m.4.r.m
سه شنبه 26 اردیبهشت 1391, 11:13 صبح
اره اما باید یه تبدیلاتی انجام بگیره دیگه نه ؟ شما فرض کن تو این کد شما اندازه فایل 24 مگابایت باشه معادل بایتش میشه 300000000 اینا تقریبا حساب کن تا PROGRESSBAR اینو پر کنه چقدر زمان میبره ؟

m.4.r.m
سه شنبه 26 اردیبهشت 1391, 11:17 صبح
منظور من اینه که شما برنامه رو که اجرا می کنی میخوام قبلا از صفحه اول برنامه یه صفحه خوش آمد باشید و منتظر بمانید و اینجوری نشون بده و بنویسه بارگذاری دیتابیس و این بارگزاری رو تو پروگرس نشون بده همین .

محسن واژدی
سه شنبه 26 اردیبهشت 1391, 11:41 صبح
کد زیر حجم دیتابیس رو بر اساس مبناهای اندازه نمایش میدهد، البته این کد بر اساس برداشت های بنده از سوال اولتون و تا قبل از توضیح پست آخری بود،
بهرحال میتوانید با کمی ویرایش آنرا براساس مورد دلخواهتون تغییر دهید:
Function FileSize(strFile$) As String

FileSize = CDbl(FileLen(strFile))
Dim sFmS$, vSZ
Const iMax_Base% = 1000
With ProgressBar1

If FileSize < CDbl(1024) Then 'bytes
ProgressBar1.Max = iMax_Base%
vSZ = Format(FileSize, "#,###")
sFmS$ = " bytes"

ElseIf FileSize < (CDbl(1024) * CDbl(1024)) Then 'KB
ProgressBar1.Max = iMax_Base% * 0.85
vSZ = Format(FileSize / CDbl(1024), "#,###.00")
sFmS$ = " KB"

ElseIf FileSize < (CDbl(1024) * CDbl(1024) * CDbl(1024)) Then 'MB
ProgressBar1.Max = iMax_Base% * 0.5
vSZ = Format(FileSize / CDbl(1024) / CDbl(1024), "#,###.00")
sFmS$ = " MB"

ElseIf FileSize < (CDbl(1024) * CDbl(1024) * CDbl(1024) * CDbl(1024)) Then 'GB
ProgressBar1.Max = iMax_Base% * 0.25
vSZ = Format(FileSize / CDbl(1024) / CDbl(1024) / CDbl(1024), "###,###.00")
sFmS$ = "GB"

End If

ProgressBar1.Value = vSZ
'Label1 = vSZ & sFmS$
End With
End Function
موفق باشید

m.4.r.m
سه شنبه 26 اردیبهشت 1391, 15:59 عصر
خوب این تایع تا حدودی از لحاظ منطقی و تئوری درسته اما حالا موقع فراخوانی چیکار می کنه ؟ تو رویداد load چه اتفاقی می افته ؟ چه جوری میخوای اینو فراخوانی کنی ؟

M.T.P
سه شنبه 26 اردیبهشت 1391, 16:21 عصر
منظور من اینه که شما برنامه رو که اجرا می کنی میخوام قبلا از صفحه اول برنامه یه صفحه خوش آمد باشید و منتظر بمانید و اینجوری نشون بده و بنویسه بارگذاری دیتابیس و این بارگزاری رو تو پروگرس نشون بده همین .

دوست عزیز بارگزاری دیتابیس در اول برنامه بدون نیاز به اطلاعات آن اصلا کار درستی نیست. مخصوصا اگه Table ها اطلاعاتشون زیاد باشه .
با این کار بخشی از حافظه رو اشغال می کنید صرفا به خاطر نمایش خوش آمد گویی.
اما اگه این صفحه پیمایش فقط جنبه نمایشی داره می تونید با یک تایمر فرم پیمایش و خوش آمد گویی رو بسازید.

m.4.r.m
سه شنبه 26 اردیبهشت 1391, 18:46 عصر
خوب اونو بلدم سر کاری بزارم . مرسی بازم ممنون