24-07-13, 11:28 PM
السلام عليكم...
* نصيحة: إذا كان لديك عدد كبير - أو حتى عدد قليل - من المكونات من نفس النوع و التي تريد أن تطبق عليها نفس الكود (التحريك مثلاً) فإن أسهل و أوضح طريقة و أكثرها اختصاراً للكود هي استعمال مصفوفة مكونات (Control Array) حيث يكون للمكونات جميعاً (التابعين للمصفوفة) نفس الاسم و يميز بينها رقم المؤشر (Index).
للتوضيح: ضع زر أمر (Command1 مثلاً) و انقر عليه نقراً مزدوجاً لفتح الكود. سيكون إجراء الحدث Click للزر كالتالي:
الآن امسح هذا الكود (الإجراء) و عد إلى خصائص الزر و اضبط الخاصية Index على صفر، ثم انقر عليه نقراً مزدوجاً مرة أخرى. سيكون الإجراء بالشكل التالي:
الآن يمكنك نسخ الزر و لصقه أي عدد من المرات، و سيكون الاسم المشترك لجميع الأزرار هو Command1 و تتميز فيما بينها برقم الـ Index. الميزة في هذا أن جميع الأزرار (أو أية مكونات أخرى في مصفوفة مكونات) تتشارك نفس الإجراءات مع تمرير رقم الـ Index للمكون الذي قام باستدعاء الإجراء. بالإضافة إلى ذلك يمكنك إضافة المزيد من المكونات إلى المصفوفة أو إزالتها منها دون الحاجة إلى تعديل الكود. ممتاز!
لنفرض - في مثالك - أن لدينا مربعات صورة (PictureBox) ضمن مصفوفة مكونات باسم pbx تحتوي على 10 عناصر (0 إلى 9) أو أي عدد تريده. سيكون كود التحريك كالتالي:
و إذا كان لدينا مجموعة أزرار في مصفوفة باسم MyCommand و نريد تنفيذ أمر معين حسب الزر المضغوط فإن الإجراء يكون كالتالي:
نرجو الاستفادة و السلام.
* نصيحة: إذا كان لديك عدد كبير - أو حتى عدد قليل - من المكونات من نفس النوع و التي تريد أن تطبق عليها نفس الكود (التحريك مثلاً) فإن أسهل و أوضح طريقة و أكثرها اختصاراً للكود هي استعمال مصفوفة مكونات (Control Array) حيث يكون للمكونات جميعاً (التابعين للمصفوفة) نفس الاسم و يميز بينها رقم المؤشر (Index).
للتوضيح: ضع زر أمر (Command1 مثلاً) و انقر عليه نقراً مزدوجاً لفتح الكود. سيكون إجراء الحدث Click للزر كالتالي:
كود :
Private Sub Command1_Click()
End Subالآن امسح هذا الكود (الإجراء) و عد إلى خصائص الزر و اضبط الخاصية Index على صفر، ثم انقر عليه نقراً مزدوجاً مرة أخرى. سيكون الإجراء بالشكل التالي:
كود :
Private Sub Command1_Click(Index As Integer)
End Subالآن يمكنك نسخ الزر و لصقه أي عدد من المرات، و سيكون الاسم المشترك لجميع الأزرار هو Command1 و تتميز فيما بينها برقم الـ Index. الميزة في هذا أن جميع الأزرار (أو أية مكونات أخرى في مصفوفة مكونات) تتشارك نفس الإجراءات مع تمرير رقم الـ Index للمكون الذي قام باستدعاء الإجراء. بالإضافة إلى ذلك يمكنك إضافة المزيد من المكونات إلى المصفوفة أو إزالتها منها دون الحاجة إلى تعديل الكود. ممتاز!
لنفرض - في مثالك - أن لدينا مربعات صورة (PictureBox) ضمن مصفوفة مكونات باسم pbx تحتوي على 10 عناصر (0 إلى 9) أو أي عدد تريده. سيكون كود التحريك كالتالي:
كود :
Private SSX As Integer
Private SSY As Integer
Private Sub pbx_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
SSX = X
SSY = Y
End Sub
Private Sub pbx_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
pbx(Index).Left = pbx(Index).Left + X - SSX
pbx(Index).Top = pbx(Index).Top + Y - SSY
End If
End Subو إذا كان لدينا مجموعة أزرار في مصفوفة باسم MyCommand و نريد تنفيذ أمر معين حسب الزر المضغوط فإن الإجراء يكون كالتالي:
كود :
Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0
' تم النقر على الزر الأول
Case 1
' تم النقر على الزر الثاني
Case 2
' تم النقر على الزر الثالث
' ...
' ...
Case N
' تم النقر على الزر الأخير
End Select
End Subنرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
