تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
استفسار
#1
ما معنى السطر التالى
 pos = 0

       Dgv.CurrentCell = Dgv.Rows(pos).Cells(Dgv.CurrentCell.ColumnIndex)
الرد
تم الشكر بواسطة:
#2
السلام عليكم ورحمة الله وبركاته
اخي سلام احييك على اجتهادك واصرارك في فهم الكود عند استخدامك له وبخاصة ان اخذته من مصدر ما لاستعماله وهذه هي طريق البرمجة (افهم ولاتحفظ)
بالنسبة للسطر الذي تسأل عنه 

كود :
Dgv.CurrentCell = Dgv.Rows(pos).Cells(Dgv.CurrentCell.ColumnIndex)

الطرف الاول اليساري هو : ان الخلية الحالية النشطة للداتاغرايد فيو تساوي 
الطرف اليميني : الداتا غرايد فيو ذات الصف ذو الاندكس (pos) للخلية (الداتا غرايد ذات الخلية الحالية النشطة للعمود ايا كان الاندكس العائد لها)
اعتقد ان ما لم تفهمه هو مابين القوسين وهو عائدية الخلية للعمود الذي فيه الخلية النشظة
قم بتغيير مابين القوسين الى صفر وضع مؤشر الماوس على خلية مجاورة للتي عليها الفوكس  اي غير العمود ثم اضغط احد ازرار التنقل ستلاحظ ان الخلية النشظة عادت الى العمود ذو الاندكس صفر اي العمود الاول وحتى لانتقيد بان تكون الخية النشظة في العمود الاول فقط كتبنا 

كود :
dgv.CurrentCell.ColumnIndex


وبالتالي ايا كان موقع الخلية في الاعمدة سيتم الانتقال للخلية النشطة في نفس العمود
بقي شيئ أخر لم يكن محسوبا ...
ماذا يحدث لو ان الصف الحالي هو الصف دو الاندكس صفر وقمت بوضع الماوس على الصف دو الاندكس (3) وضغطت على السابق ؟
ستلاحظ انه تم الانتقال الى الصف ذو الاندكس صفر مع ظهور رسالة ان هذا  الصف هو الاول (هنا ظهرت مشكلة تجاوز عدد من الصفوف الى الصف صفر)
 والسبب هو المتغير (pos) الذي يحمل قيمة الاندكس اثناء التحميل ويتغير مع ازرار التنقل وعندما وضعنا الماوس في خلية لصف اندكسه مختلف
بقي المتغير (pos) محتفظا بالقيمة قبل نقر الماوس
ولحل هذه الاشكالية اكتب هذا السطر في بداية الازرار (Previous و Next) فقط  قبل Pos +=1  او  Pos -=1

كود :
pos = dgv.CurrentRow.Index

بهذا تكون قيمة المتغير pos هي اندكس الصف الذي تم النقر عليه بالماوس 

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







الرد



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم