تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كود مشابه و ربما موديل
#2
السلام عليكم...

* نصيحة: إذا كان لديك عدد كبير - أو حتى عدد قليل - من المكونات من نفس النوع و التي تريد أن تطبق عليها نفس الكود (التحريك مثلاً) فإن أسهل و أوضح طريقة و أكثرها اختصاراً للكود هي استعمال مصفوفة مكونات (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

نرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
كود مشابه و ربما موديل - بواسطة asto - 24-07-13, 10:36 PM
كود مشابه و ربما موديل - بواسطة ناجي إبراهيم - 24-07-13, 11:28 PM
كود مشابه و ربما موديل - بواسطة asto - 25-07-13, 12:31 AM
كود مشابه و ربما موديل - بواسطة VB_Coder - 25-07-13, 02:48 AM
كود مشابه و ربما موديل - بواسطة asto - 25-07-13, 03:10 AM
كود مشابه و ربما موديل - بواسطة VB_Coder - 25-07-13, 04:59 AM
كود مشابه و ربما موديل - بواسطة asto - 26-07-13, 12:03 AM
كود مشابه و ربما موديل - بواسطة asto - 26-07-13, 12:35 AM
كود مشابه و ربما موديل - بواسطة VB_Coder - 26-07-13, 01:00 AM

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


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