اذهب الي المحتوي
أوفيسنا

درس في طريقة التعامل مع ListView


الردود الموصى بها

بسم الله الرخمان الرحيم

السلام عليكم ورحمة الله وبركاته

 

لاحظتُ من خلال تصفحي للمنتدى شح المعلومات عن عنصر التحكم List View على عكس list Box برغم انه يمكن التعامل مع الاولى مثلما نتعامل مع List Box

لذى بادرت بهذا المرفق الذي جمعت فيه ما استطعت من معلومات لكيفية التعامل مع ListView 

أرجو ان اكون قد وفقت ولو قليلا في شرح هذه الاداة كما ارجو ان تعم فائدته الجميع 

ملاحضة هامة

المشكلة الوحيدة في عنصر التحكم ListView هي انه يمكن ان يحدث خطأ أثناء فتح الملف وذالك لعدم توافق النسخة المستعملة في المرفق مع النسخة التي عند الذي يحدث عنده الخطاء

لذلك ارفقت ملفين احدهما يحوي الشرح للاكواد فقط دون امثلة عملية اما الثاني يحوي الامثلة العملية

 

مع تحيات اخوكم في الله

شوقي ربيع

درس في التعامل مع istviewبدون امثلة عملية.rar

درس في التعامل مع istview 2007 مع امثلة عملية.rar

تم تعديل بواسطه دغيدى
  • Like 3
رابط هذا التعليق
شارك

السلام عليكم

احي العزيز  ابو عبد الله (الجزيرة)

شكرا لمرورك ولكلماتك الجميلة

وانا ايضا ااسف لعدم اشتغال ملف الامثلة لديك

كل ماعليك هو انشاء فورم واضف اليه العناصر الازمة حسب كل شرح ثم الصق به الاكواد

وستلاحض بنفسك مدى جمال التعامل مع listview

تقبل تحياتي وشكري

رابط هذا التعليق
شارك

اخي الحبيب // شوقي ربيع   (ملك الحركات )) الغالي

لقد جمعت بين الدقة والاحتراف في اعمالك

وكالعادة الحركات الجميلة التي تتخللها روحكم الصافية

جزاك الله خيرا 

بارك الله فيك

تقبل تحياتي

رابط هذا التعليق
شارك

S6hT2.gif

الاخ الحبيب / شوقي ربيع

بارك الله فيك

فكرة جميله وشرح رائع من شخص ارووع

جزاك الله خيرا

Qqg5V.gif

رابط هذا التعليق
شارك

السلام عليكم

سيدتي الفاضلة ام عبد الله

صرني مرورك العطر وكلماتك الجميلة

وبخصوص طلب سأحاول تلبيته في القريب ان شاء الله

تقبلي تحياتي وشكري

رابط هذا التعليق
شارك

السلام عليكم

الاخ الحبيب ضاحي الغريب (القلب النابض للمنتدى)

والله اخجلتني بكلماتك الجميلة هته

سعدت بمرورك العطر اخي الغريب

تقبل تحياتي وشكري

رابط هذا التعليق
شارك

السلام عليكم

اخي الحبيب حمادة عمر (روح المنتدى )

يكفني مرورك العطر لتكتمل فرحتي

سعدت بمرورك العطر وكلماتك الجميلة

تقبل تحياتي وشكري

رابط هذا التعليق
شارك

اخى شوقى ربيع

ممتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتتاز

الله الله

عضو محترف صحيح

استمر وعلمنا مما علمك الله

رابط هذا التعليق
شارك

فرضا لديك جدول بينات تريد ان يضهر كله وبتنسيقاته في ListView
 هذا الكود مستقى من احد الاكواد الخبورية لعمل المطلوب
 

Private Sub UserForm_Initialize()
Dim I, CEL, Y
Set sh = Feuil1
LastRow = sh.Cells(sh.Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1, 1).End(xlUp).Row
LastColumn = sh.Cells(1, sh.Range("A1").SpecialCells(xlCellTypeLastCell).Column + 1).End(xlToLeft).Column

With Me.ListView1
    With .ColumnHeaders
        .Clear
        For I = 1 To 7
        .Add , , sh.Cells(1, I), sh.Cells(1, I).Width
        Next
    End With
     .View = lvwReport
    .Gridlines = True
    .FullRowSelect = True
    .HideColumnHeaders = False
    .LabelEdit = 1
    
    
End With

ListView1.ListItems.Clear
With Feuil1
    Set rng = sh.Range(sh.Range("a2"), sh.Cells(LastRow, 1))
    For Each CEL In rng
        With ListView1
            .ListItems.Add , , CEL
            For Y = 2 To LastColumn
            .ListItems(.ListItems.Count).ListSubItems.Add , , sh.Cells(CEL.Row, Y)
            Next
        End With
    Next
End With


End Sub

هذا الكود لجلب محتويات جدول من 7 اعمدة وجميع الصفوف التي تحوي بينات في نطاق الاعمدة السبع
 حيث اسماء رؤس الاعمدة في اليست هي نفسها اسماء رؤس الاعمدة في الجدول
 عرض (Width)الاعمدة في اليست هي نفس العرض في الجدول
 للزيادة او انقاص في عدد الاعمدة غير في الحلقة التكرارية مثلا لجدول من 10 اعمدة نغي For I = 1 To 7 الىFor I = 1 To 10
 ارجو ان تكون الفكرة قد وصلت
 

 

 

 

رابط هذا التعليق
شارك

هذا الكود للبحث عن البينات في العمود الاول ةاضهار النتائج في اليست فيو

Private Sub Rabie_SearchNom()
Dim M
listviwlist
With Me.ListView1
    With .ColumnHeaders
        .Clear
        
       .Add , , Feuil1.Range("a1"), 246
       
    End With
     .View = lvwReport
    .Gridlines = True
    .FullRowSelect = True
    .HideColumnHeaders = True
    .LabelEdit = 1
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
End With

ListView1.ListItems.Clear
M = TextBox1.Text
If M = "" Then GoTo 1
With Feuil1
LR = .Cells(Rows.Count, 1).End(xlUp).Row
Set A = Feuil1.Range("a2:a" & LR).Find(M)
If Not A Is Nothing Then
F = A.Address
Do
If Application.WorksheetFunction.Search(M, A, 1) = 1 Then

With ListView1
.ListItems.Add , , A
End With

End If
Set A = Feuil1.Range("a2:a" & LR).FindNext(A)
Loop While Not A Is Nothing And A.Address <> F
End If
End With

1 End Sub

رابط هذا التعليق
شارك

استاذ شوقي ربيع

بارك الله لك

شرح جميل 

ولي طلب عند حضرتك

انا الحمد لله طبقت الشرح

بس البيانات بتظهر عندي في الليست فيو من اليسار الي اليمين

وانا عاوزها من اليمين الي اليسار

يعني لما طبقت الشرح

ظهر عندي من اليسار العمود A B C D E F G وانا طلبي عند حضرتك انت ظهر البيانا ت من اليمين GFEDCBA

رابط هذا التعليق
شارك

السلام عليكم
الاخ ابو ادم
اولا اشكرك لمرورك ولكلماتك الجميلة
ثنيا انا سعيدا جدا لتطبيقك الشرح و نجاحك فيه
اما بخصوص طلبك بعد جهدا حهيد اليك الحل
اولا ضع هذا الكود في بداية الاكواد الخاصة باليوزر فورم
 

Option Explicit

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Const GW_CHILD = 5
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYOUTRTL = &H400000

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function InvalidateRect Lib "user32.dll" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long) As Long
Private Declare Function GetWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal wCmd As Long) As Long

Private Sub ListRTL(Liv As ListView)
    Dim rClientRect As RECT
    Dim ReturnStyle As Long
    Dim Header_hWnd As Long
    
    ReturnStyle = GetWindowLong(Liv.hwnd, GWL_EXSTYLE)
    SetWindowLong Liv.hwnd, GWL_EXSTYLE, ReturnStyle Or WS_EX_LAYOUTRTL
    GetClientRect Liv.hwnd, rClientRect
    InvalidateRect Liv.hwnd, rClientRect, True
    Header_hWnd = GetWindow(Liv.hwnd, GW_CHILD)
    ReturnStyle = GetWindowLong(Header_hWnd, GWL_EXSTYLE)
    SetWindowLong Header_hWnd, GWL_EXSTYLE, ReturnStyle Or WS_EX_LAYOUTRTL
    GetClientRect Header_hWnd, rClientRect
    InvalidateRect Header_hWnd, rClientRect, True
End Sub

ثانيا ضع هذا الكود في حدث UserForm_Activate

ListRTL ListView1

الثا ستضهر لديك مشكلة عند تشغيل الفورم  هي مشكلة تعريف المتغيرات
استبدل الاكواد الاولى اي المتغيرات في UserForm_Initialize
بهذه الاكواد

Dim I As Integer, Y As Integer, LastRow As Integer, LastColumn As Integer
Dim cel, Rng, sh

جرب ولاحض بنفسك

مع تحياتي وشكري

رابط هذا التعليق
شارك

الاخ والاستاذ شوقي ربيع

ماشاء الله عليك

تمت التجربة واكثر من رائع بارك الله فيط وزادك علما

اخي الكريم

هل من الممكن شرح مبسط لما تم لجعل البيانات من اليمين لليسار

ولي طلب اخر بع اذن حضرتك هل من الممكن التحكم في تنسيق البيانات داخل الليست فيو

معلش ارهقتك بطلباتي لكن كرمك هو الذي شجعني

جزاك الله كل خير

رابط هذا التعليق
شارك

زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information