11-08-13, 07:43 PM
11-08-13, 09:21 PM
السلام عليكم
- قم بتسمية جميع التكستات بإسم واحد لكي تكون في مصفوفة ، ثم إستخدم هذا الكود ، فقط غير إسم ال Picture1 إلى الإسم الموحد للتكستات :
- تحياتي .
- قم بتسمية جميع التكستات بإسم واحد لكي تكون في مصفوفة ، ثم إستخدم هذا الكود ، فقط غير إسم ال Picture1 إلى الإسم الموحد للتكستات :
كود :
Dim SSX As Integer
Dim SSY As Integer
Private Sub Picture1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
SSX = X
SSY = Y
End Sub
Private Sub Picture1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
Picture1(Index).Left = Picture1(Index).Left + X - SSX
Picture1(Index).Top = Picture1(Index).Top + Y - SSY
End If
End Sub
- تحياتي .
11-08-13, 10:14 PM
VB_Coder كتب :السلام عليكم
- قم بتسمية جميع التكستات بإسم واحد لكي تكون في مصفوفة ، ثم إستخدم هذا الكود ، فقط غير إسم ال Picture1 إلى الإسم الموحد للتكستات :
كود :
Dim SSX As Integer
Dim SSY As Integer
Private Sub Picture1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
SSX = X
SSY = Y
End Sub
Private Sub Picture1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
Picture1(Index).Left = Picture1(Index).Left + X - SSX
Picture1(Index).Top = Picture1(Index).Top + Y - SSY
End If
End Sub
- تحياتي .
لا لكل تكست و لنطبق المصفوفة احداثيات معينة فالمطلوب انه اذا حركت ذو الاندكس=0 اريد ان يتحرك ذو الاندكسات من 1-7 دفعة واحدة بنفس الطريقة و نفس المسافة
11-08-13, 11:19 PM
السلام عليكم...
1. كما قال أخونا VB_Coder: قم بتسمية كل الـ TextBoxes المعنية بنفس الاسم حتى تكون في مصفوفة مكونات.
2. انسخ الكود التالي و قم بتغيير Text1 إلى الاسم الذي لديك:
* كما هو مذكور في الكود، لا تستعمل حلقة For ... Next العادية ذات العداد الرقمي لأنها ستتسبب في حدوث خطأ في حالة حذف أحد الـ TextBoxes المنتمية للمصفوفة. بالإضافة إلى ذلك فإن استعمال حلقة For ... Next ستحتاج منك إلى إعادة تعديل الكود إذا قمت بإنقاص أو زيادة عدد الـ TextBoxes المنتمية للمصفوفة، أما استعمال حلقة For Each فإنها لا تتسبب في الخطأ المذكور، و لا تحتاج إلى تعديل لأنه لا يهمها عدد المكونات في المصفوفة.
نرجو الاستفادة و السلام.
1. كما قال أخونا VB_Coder: قم بتسمية كل الـ TextBoxes المعنية بنفس الاسم حتى تكون في مصفوفة مكونات.
2. انسخ الكود التالي و قم بتغيير Text1 إلى الاسم الذي لديك:
كود :
Private StartX As Single
Private StartY As Single
Private Sub Text1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
StartX = X
StartY = Y
End Sub
Private Sub Text1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
'Dim Idx As Long ' احذف هذا السطر
Dim Ctrl As Control
If Button = vbLeftButton Then
For Each Ctrl In Text1
Ctrl.Left = Ctrl.Left + X - StartX
Ctrl.Top = Ctrl.Top + Y - StartY
Next Ctrl
' لا تستعمل هذه الطريقة. احذف الأسطر الأربعة التالية
' For Idx = Text1.LBound To Text1.UBound
' Text1(Idx).Left = Text1(Idx).Left + X - StartX
' Text1(Idx).Top = Text1(Idx).Top + Y - StartY
' Next Idx
End If
End Sub
* كما هو مذكور في الكود، لا تستعمل حلقة For ... Next العادية ذات العداد الرقمي لأنها ستتسبب في حدوث خطأ في حالة حذف أحد الـ TextBoxes المنتمية للمصفوفة. بالإضافة إلى ذلك فإن استعمال حلقة For ... Next ستحتاج منك إلى إعادة تعديل الكود إذا قمت بإنقاص أو زيادة عدد الـ TextBoxes المنتمية للمصفوفة، أما استعمال حلقة For Each فإنها لا تتسبب في الخطأ المذكور، و لا تحتاج إلى تعديل لأنه لا يهمها عدد المكونات في المصفوفة.
نرجو الاستفادة و السلام.
11-08-13, 11:34 PM
تمام اخوان مشكورون