11-12-19, 01:54 AM
11-12-19, 05:25 AM
كود :
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
DataGridView1.AllowDrop = True
End Sub
Private CR As Integer, CC As Integer, CV As Object
Private Sub DataGridView1_DragOver(ByVal sender As Object, ByVal e As DragEventArgs) Handles DataGridView1.DragOver
e.Effect = DragDropEffects.Move
End Sub
Private Sub DataGridView1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles DataGridView1.DragDrop
Dim ClientPoint As Point = DataGridView1.PointToClient(New Point(e.X, e.Y))
Dim hit As DataGridView.HitTestInfo = DataGridView1.HitTest(ClientPoint.X, ClientPoint.Y)
DataGridView1.Item(CC, CR).Value = Nothing
CR = hit.RowIndex : If CR < 0 Then Exit Sub
CC = hit.ColumnIndex : If CC < 0 Then Exit Sub
DataGridView1.Item(CC, CR).Value = CV
End Sub
Private Sub DataGridView1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles DataGridView1.MouseDown
Dim hit As DataGridView.HitTestInfo = DataGridView1.HitTest(e.X, e.Y)
CR = hit.RowIndex : If CR < 0 Then Exit Sub
CC = hit.ColumnIndex : If CC < 0 Then Exit Sub
CV = DataGridView1.Item(CC, CR).Value : If CV Is Nothing Then Exit Sub
DataGridView1.DoDragDrop(CV, DragDropEffects.Move)
End Sub11-12-19, 11:44 PM
الله يسعدك أخي الكريم
لكن لو تكرمت بشرح هذا الكود
لكن لو تكرمت بشرح هذا الكود
12-12-19, 01:01 PM
السلام عليكم ورحمة الله وبركاته
السطر الموجود في حدث التحميل
لتمكين خاصية السحب والافلات للأداة
"""""""""""""""""""""""""""""""""""""""""""""""""
لديك ثلاث متغيرات
CR و CC متغيران رقميان الغرض منهما الحصول على رقم العمود والصف عند الضغط بزر الماوس على أي خلية
CV من نوع كائن هذا يأخذ القيمة الموجوده في الخلية التي تم ضغط الماوس عليها سواء نصية او رقمية او....الخ
""""""""""""""""""""""""""""""""""""""""""""""""
والكود التالي
هو حدث مرتبط بعملية السحب والافلات عند تحريك الماوس بالبيانات , يتم تغيير مؤشر الماوس بالشكل الذي تضعه ومثل ماتشوف الشكل السابق Move
"""""""""""""""""""""""""""""""""""""""""""""""
حدث الضغط بزر الماوس مع بعض الشروط ,, وهي عند الضغط بالماوس الحصول على النقطة التي تم الضغط عليها والوصول الى الخلية الموجوده في هذه النقطة واضافة رقم العمود الى المتغير CC ورقم الصف الى المتغير CR واضافة قيمة الخلية التي تم الضغط عليها للمتغير CV
""""""""""""""""""""""""""""""""""""""""""""""
واخيرآ هوا حدث السحب والافلات عند ترك زر الماوس يتم اخذ النقطة التي ترك فيها الزر ثم وضع القيمة السابقة وهي CV الى الخلية الجديده ,, ومسح بيانات الخلية التي رقم العمود فيها هو CC ورقم الصف فيها هوا CR لاننا قمنا بتحريك البيانات منها
ان شاء الله يكون الشرح مفهوم اخي؟
السطر الموجود في حدث التحميل
كود :
DataGridView1.AllowDrop = Trueلتمكين خاصية السحب والافلات للأداة
"""""""""""""""""""""""""""""""""""""""""""""""""
لديك ثلاث متغيرات
كود :
Private CR As Integer, CC As Integer, CV As ObjectCV من نوع كائن هذا يأخذ القيمة الموجوده في الخلية التي تم ضغط الماوس عليها سواء نصية او رقمية او....الخ
""""""""""""""""""""""""""""""""""""""""""""""""
والكود التالي
كود :
Private Sub DataGridView1_DragOver(ByVal sender As Ob ect, ByVal e As DragEventArgs) Handles DataGridView1.DragOver
e.Effect = DragDropEffects.Move
End Sub"""""""""""""""""""""""""""""""""""""""""""""""
كود :
Private Sub DataGridView1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles DataGridView1.MouseDown
Dim hit As DataGridView.HitTestInfo = DataGridView1.HitTest(e.X, e.Y)
CR = hit.RowIndex : If CR < 0 Then Exit Sub
CC = hit.ColumnIndex : If CC < 0 Then Exit Sub
CV = DataGridView1.Item(CC, CR).Value : If CV Is Nothing Then Exit Sub
DataGridView1.DoDragDrop(CV, DragDropEffects.Move)
End Subحدث الضغط بزر الماوس مع بعض الشروط ,, وهي عند الضغط بالماوس الحصول على النقطة التي تم الضغط عليها والوصول الى الخلية الموجوده في هذه النقطة واضافة رقم العمود الى المتغير CC ورقم الصف الى المتغير CR واضافة قيمة الخلية التي تم الضغط عليها للمتغير CV
""""""""""""""""""""""""""""""""""""""""""""""
كود :
Private Sub DataGridView1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles DataGridView1.DragDrop
Dim ClientPoint As Point = DataGridView1.PointToClient(New Point(e.X, e.Y))
Dim hit As DataGridView.HitTestInfo = DataGridView1.HitTest(ClientPoint.X, ClientPoint.Y)
DataGridView1.Item(CC, CR).Value = Nothing
CR = hit.RowIndex : If CR < 0 Then Exit Sub
CC = hit.ColumnIndex : If CC < 0 Then Exit Sub
DataGridView1.Item(CC, CR).Value = CV
End Subان شاء الله يكون الشرح مفهوم اخي؟
13-12-19, 12:25 AM
واضح جدا الله يسعدك ويرحم والديك
13-12-19, 03:21 AM
طيب أخي
هل ممكن أعرف رقم العمود والصف للخلية التي وقع عليها الافلات
حتى أميزها بلون مختلف
هل ممكن أعرف رقم العمود والصف للخلية التي وقع عليها الافلات
حتى أميزها بلون مختلف
13-12-19, 12:02 PM
نعم شوف الكود بعد التعديل وراح تفهم القصد
كود :
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
DataGridView1.AllowDrop = True
End Sub
Private CR As Integer, CC As Integer, CV As Object
Private Sub DataGridView1_DragOver(ByVal sender As Object, ByVal e As DragEventArgs) Handles DataGridView1.DragOver
e.Effect = DragDropEffects.Move
End Sub
Private Sub DataGridView1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles DataGridView1.DragDrop
Dim ClientPoint As Point = DataGridView1.PointToClient(New Point(e.X, e.Y))
Dim hit As DataGridView.HitTestInfo = DataGridView1.HitTest(ClientPoint.X, ClientPoint.Y)
DataGridView1.Item(CC, CR).Value = Nothing
DataGridView1.Item(CC, CR).Style.BackColor = Color.White
MsgBox("تم سحب القيمة من العمود : " & CC + 1 & vbNewLine & "و الصف : " & CR + 1)
CR = hit.RowIndex : If CR < 0 Then Exit Sub
CC = hit.ColumnIndex : If CC < 0 Then Exit Sub
DataGridView1.Item(CC, CR).Value = CV
DataGridView1.Item(CC, CR).Style.BackColor = Color.Brown
MsgBox("تم الاسقاط على العمود : " & CC + 1 & vbNewLine & " والصف : " & CR + 1)
End Sub
Private Sub DataGridView1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles DataGridView1.MouseDown
Dim hit As DataGridView.HitTestInfo = DataGridView1.HitTest(e.X, e.Y)
CR = hit.RowIndex : If CR < 0 Then Exit Sub
CC = hit.ColumnIndex : If CC < 0 Then Exit Sub
CV = DataGridView1.Item(CC, CR).Value : If CV Is Nothing Then Exit Sub
DataGridView1.DoDragDrop(CV, DragDropEffects.Move)
End Sub13-12-19, 10:22 PM
الله يعطيك الصحة والعافية