سلام دوستان
تو اين تاپيك ميخوام براتون نحوه ساخت يك درصد پيشرفت فرايند رو بهتون آموزش بدم
خب اول نتيجه نهايي رو بهتون نشون ميدم.
اين كد همان فرايندي هست كه قرار هست انجام بشه و ما درصد پيشرفت اين فرايند رو متوجه بشيم.
قسمت هايي كه با سبز مشخص كردم اجباري هست و بايد وجود داشته باشه. بقيش با توجه به كاري كه ميخوايم انجام بديم تغيير ميكنه
خب در آخر هم كد زير رو در ادامه كدهاي قبل اضافه ميكنيم
اين كد براي شروع فرايند هست و درواقع با اجراي اين كد فرايند استارت ميخوره
به همين راحتي يك فرم درصد پيشرفت ساختيم. من يك نمونه هم پيوست ميكنم كه بهتر بتونين استفاده كنيد[/COLOR]
تو اين تاپيك ميخوام براتون نحوه ساخت يك درصد پيشرفت فرايند رو بهتون آموزش بدم
خب اول نتيجه نهايي رو بهتون نشون ميدم.
کد:
[COLOR=#008000]Sub code()
خب حالا بريم مرحله به مرحله اين درصد پيشرفت رو بسازيم.
اول از همه يك فرم ميسازيم با دوتا ليبل و يك فريم. فريم براي كادر، يك ليبل براي نشون دادن ميزان پيشرفت (قسمت آبي رنگ) يك ليبل براي نشون دادن درصد (قسمت عددي)
حالا روي فرم كليك ميكنيم و F7 رو ميزنيم. تمامي كدها رو حذف كرده و كدهاي زير رو بهش اضافه ميكنيم
کد:
'Hide a UserForm's Close Button
'Find the userform's Window
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'Get the current window style
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
'Set the new window style
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Const GWL_STYLE = -16
Const WS_SYSMENU = &H80000
Private Sub UserForm_Initialize()
Dim hWnd As Long, lStyle As Long
'Which type of userform
If Val(Application.Version) >= 9 Then
hWnd = FindWindow("ThunderDFrame", Me.Caption)
Else
hWnd = FindWindow("ThunderXFrame", Me.Caption)
End If
'Get the current window style and turn off the Close button
lStyle = GetWindowLong(hWnd, GWL_STYLE)
SetWindowLong hWnd, GWL_STYLE, (lStyle And Not WS_SYSMENU)
End Sub
اين كد باعث ميشه كه دكمه خروج از بالاي فرم حذف بشه و پنجره قابل بسته شدن نباشه كه البته ضروري هم نيست. من ترجيح دادم دكمه حذف بشه
بعد در ادامه اين كد رو اضافه ميكنيم:
کد:
Private Sub UserForm_Activate()
code
End Sub
اين كد باعث ميشه بعد از فعال شدن فرم درصد پيشرفت يكسري كد اجرا بشه
خب حالا يك ماژول ميسازيم و اين كدها رو داخل ماژول ميذاريم:
[COLOR=#008000]Dim i As Integer, j As Integer, pctCompl As Single[/COLOR]
For i = 1 To 100
[COLOR=#008000] pctCompl = i[/COLOR]
[COLOR=#008000] progress pctCompl[/COLOR]
Application.Wait Now() + TimeSerial(0, 0, 1)
Next i
[COLOR=#008000]Unload UserForm1[/COLOR]
[COLOR=#008000]End Sub[/COLOR]
[COLOR=#008000]Sub progress(pctCompl As Single)[/COLOR]
[COLOR=#008000]UserForm1.Text.Caption = pctCompl & "%"[/COLOR]
[COLOR=#008000]UserForm1.Bar.Width = pctCompl * 2[/COLOR]
[COLOR=#008000]DoEvents[/COLOR]
[COLOR=#008000]End Sub[/COLOR]
قسمت هايي كه با سبز مشخص كردم اجباري هست و بايد وجود داشته باشه. بقيش با توجه به كاري كه ميخوايم انجام بديم تغيير ميكنه
خب در آخر هم كد زير رو در ادامه كدهاي قبل اضافه ميكنيم
کد:
Sub CallFrom() UserForm1.Show End Sub
به همين راحتي يك فرم درصد پيشرفت ساختيم. من يك نمونه هم پيوست ميكنم كه بهتر بتونين استفاده كنيد[/COLOR]
کامنت