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

تغيير ترتيب العناصر داخل Listbox باستخدام خاصية السحب و الافلات?

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

الاخوه الاعزاء

اريد وضع list box يحتوي على عناصر معينه لكن اريد تغيير ترتيب هذه العناصر باستخدام خاصية السحب و الافلات ثم بعد ذلك اريد تخزين الترتيب الجديد

ارجو من عنده فكرة السحب و الافلات على نفس الlistBox شرحه لي؟؟؟؟؟؟؟؟؟؟؟؟

و مشكورين مسبقا

المهندس

#2

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

المثال التالي لا يعتمد على طريقة السحب و الإفلات (Drag-and-Drop) لكنه يستعمل أحداث الفأرة (MouseDown و MouseUp) لإنجاز العملية.

اضبط الخاصية MouseIcon للـ ListBox على أي أيقونة تمثل عملية السحب (فقط للفت انتباه المستخدم).

  1. ' في قسم التصريحات العام
  2. Private StartIndex As Long
  3.  
  4. Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  5. If Button = vbLeftButton Then
  6. List1.MousePointer = 99 ' تغيير شكل مؤشر الفأرة
  7. StartIndex = List1.ListIndex ' الاحتفاظ برقم البند المسحوب
  8. End If
  9. End Sub
  10.  
  11. Private Sub List1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  12. Dim TempItem As String
  13. Dim SourceItem As String
  14. Dim Index As Long
  15.  
  16. If Button = vbLeftButton Then
  17. List1.MousePointer = 0 ' استعادة الشكل الافتراضي لمؤشر الفأرة
  18. If (StartIndex <> -1) And (StartIndex <> List1.ListIndex) Then
  19. SourceItem = List1.List(StartIndex) ' الاحتفاظ بنص البند المسحوب
  20. For Index = List1.ListIndex To StartIndex Step Sgn(StartIndex - List1.ListIndex)
  21. TempItem = List1.List(Index) ' الاحتقاظ بنص البند الذي ستتم إزاحته إلى الأسف
    ل
  22. List1.List(Index) = SourceItem ' تبديل النص
  23. SourceItem = TempItem ' نقل نص البند المزاح إلى المتغير الآخر لأن المتغير ا
    لأول سيتم استعماله مع البند التالي
  24. Next Index
  25. End If
  26. End If
  27. End Sub
  28.  

ملاحظة مهمة: لاحظ أن اتجاه حلقة For يعتمد على اتجاه السحب (إلى الأعلى أو إلى الأسفل) و ذلك باستعمال عبارة Step مع جملة For، و قيمة التعبير الموجود أمام عبارة Step تكون قيمته إما 1 أو -1، حيث الدالة Sgn (و هي من دوال Visual Basic) تعطي إما 1 (إذا كانت القيمة موجبة) أو -1 (إذا كانت القيمة سالبة):

* إذا كان السحب إلى الأعلى فإن StartIndex أكبر من List1.ListIndex و بالتالي فإن الدالة Sgn ستعيد 1.

* إذا كان السحب إلى الأسفل فإن StartIndex أصغر من List1.ListIndex و بالتالي فإن الدالة Sgn ستعيد -1.

بالنسبة إلى حفظ محتويات القائمة فيمكنك حفظها في ملف نصي عادي (Text) ثم تحميلها من الملف عند الحاجة إليها.

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

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

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

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

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

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

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

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