كيف يمكن إستخدام ProgressBar ليظهر داخل StatusBar عند إجراء نسخ أو قراءة ملف طويل نسبيا ..بمعنى أن يظهر شريط تقدم الإنجاز من داخل شريط الحالة أسفل واجهة البرنامج
كيف يمكن إستخدام ProgressBar ليظهر داخل StatusBar
مغلق
فقط اجعل للـ progress bar مكان في الـ status bar عن طريق تحديد عرض الـ Panel بما يناسبك ثم ضع الـprogress bar في المكان المصنوع واجعل خاصية appearence تساوي Flat. هذا بالنسبه للشكل ....
اما بالنسبه للعمل فهذا موضوع منفصل.
لاستخدام هذا الكود قم بفتح مشروع جديد و أضف لل Form1:
* ProgressBar, StatusBar, CommandButton
[ALIGN=LEFT]Option Explicit Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Declare Function SetParent Lib "user32" _ (ByVal hWndChild As Long, _ ByVal hWndNewParent As Long) As Long Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Any) As Long Const WM_USER = &H400 Const SB_GETRECT As Long = (WM_USER + 10) Private Sub ShowProgressInStatusBar(ByVal bShowPrgBar As Boolean) Dim RC As RECT If bShowPrgBar Then ' نوجد قياس الخانة التي سنضع فيهاشريط تقدم الإنجاز SendMessage StatusBar1.hwnd, SB_GETRECT, 1, RC ' Convert to Twips With RC .Top = (.Top * Screen.TwipsPerPixelY) .Left = (.Left * Screen.TwipsPerPixelX) .Bottom = (.Bottom * Screen.TwipsPerPixelY) - .Top .Right = (.Right * Screen.TwipsPerPixelX) - .Left End With ' نحدد الأب لمؤشر الحالة With ProgressBar1 SetParent .hwnd, StatusBar1.hwnd .Move RC.Left, RC.Top, RC.Right, RC.Bottom .Visible = True .Value = 0 End With Else SetParent ProgressBar1.hwnd, Me.hwnd ProgressBar1.Visible = False End If End Sub Private Sub Command1_Click() Dim i As Integer Call ShowProgressInStatusBar(True) For i = 1 To ProgressBar1.Max ProgressBar1.Value = i Next i End Sub[/ALIGN]
This Tip written by Chris Eastwood (www.codeguru.com/vb)
السلام عليكم:
شكرا لك يا أخي على الموضوع
وأشكر الأخ أبو خالد على الكود الرائع مع تمنياتي له بالتواصل والعطاء
تحياتي مقرررررررررررررررررررررررش:cool:
هذا الموضوع مغلق.
