الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استفسار/ عن طريقة تغيير اماكن السطور في اداة List

بدأه العقرب 2 في 14 مارس 2010 · 1 رد · 491 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اريد ان اغير اماكن السطور في اداة الـ List

عن طريق السحب والافلات اثناء تشغيل البرنامج

مثال: يعني لو عندي اداة لست ... وعندي اول سطر مكتوب فية احمد والتاني محمد والثالث محمود ... عايز اثناء تشغيل البرنامج لما اضغط علي السطر التاني اللي مكتوب فية محمد واسحبة لفوق .. ينتقل لأعلي ... ليصبح الترتيب (محمد - احمد - محمود) وشكرا

سلام

#2

السلام عليكم...

استعمل الأكواد التالية حسب مكان كل منها:

' قسم التصريحات العام
Private DoExchange As Boolean

Private Sub List1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyEscape Then
        DoExchange = False
        List1.MousePointer = 0
    End If
End Sub

Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = vbLeftButton Then
        DoExchange = True
        List1.Tag = CStr(List1.ListIndex)
    End If
End Sub

Private Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If DoExchange And (Button = vbLeftButton) And (List1.MousePointer <> 14) Then
        List1.MousePointer = 14
    End If
End Sub

Private Sub List1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim TempStr As String
    Dim TempData As Long
    Dim Idx As Long

    If Button = vbLeftButton Then
        If Not DoExchange Then Exit Sub

        If CLng(List1.Tag) > List1.ListIndex Then
            TempStr = List1.List(List1.Tag)
            TempData = List1.ItemData(List1.Tag)
            For Idx = List1.Tag To List1.ListIndex + 1 Step -1
                List1.List(Idx) = List1.List(Idx - 1)
                List1.ItemData(Idx) = List1.ItemData(Idx - 1)
            Next Idx
            List1.List(List1.ListIndex) = TempStr
            List1.ItemData(List1.ListIndex) = TempData
        ElseIf CLng(List1.Tag) < List1.ListIndex Then
            TempStr = List1.List(List1.Tag)
            TempData = List1.ItemData(List1.Tag)
            For Idx = List1.Tag To List1.ListIndex - 1
                List1.List(Idx) = List1.List(Idx + 1)
                List1.ItemData(Idx) = List1.ItemData(Idx + 1)
            Next Idx
            List1.List(List1.ListIndex) = TempStr
            List1.ItemData(List1.ListIndex) = TempData
        End If

        List1.MousePointer = 0
    End If
End Sub

لاحظ أن الحدث KeyDown يستخدم لإلغاء عملية النقل و ذلك بضغط المفتاح ESC قبل إفلات زر الفأرة. أما الإجراءات الأخرى الثلاثة (MouseDown و MouseMove و MouseUp) فهي لبدء و إتمام عملية السحب و الإفلات للبنود بالزر الأيسر للفأرة (طبعاً ضمن الـ ListBox نفسه).

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…