الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

جلب جميع العناصر الموجودة علي النموذج

بدأه MMA_EG_Cairo في 17 فبراير 2012 · 8 رد · 410 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
For Each obj As Object In FormName.Controls
   If (TypeOf obj Is TabControl) Then
      For Each objPages As Object In obj.TabPages
         For Each objControls As Object In objPages.Controls
             MsgBox(objControls.Name)
         Next
      Next
   Else
      MsgBox(Obj.Name)
   End If
Next

لو سمحتك ، أريد كود مباشر بدلاً من الكود الموضع أعلاه !!!

فحينما كنت أتعامل مع Visual Basic 6.0 ، كنت قادر علي فعل هذا بالكود التالي :

For Each obj In FormName.Controls
   MsgBox(Obj.Name)
Next

لكن في فيدوال دوت نيت 2008 ، يقوم بالمرور علي كل ما هو مدرج بالنموذج فقط ، ولا يمر علي العناصر الموجودة داخل الحاويات

مع العلم أن هناك حاويات داخل الحاويات ، وكل حاوية بها كائنات أخري !!!

أرجو فكرة تساعدني علي المرور علي كل العناصر بطريقة مبسطة مثل فيجوال 6.0 !!!

شكراً لكم جميعاً

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#2

كمايلي :

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        printName(Me.Controls)

    End Sub


    Sub printName(ByVal oCon As Object)
        For Each objControls As Control In oCon

            If objControls.HasChildren Then
                Debug.WriteLine(objControls.Name)

                printName(objControls.Controls) 'recursive

            Else
                Debug.WriteLine(objControls.Name)
            End If

        Next

    End Sub
#3

لا حول ولا قوه الا بالله !!!!

هذا هو ما أفعله بالفعل !!!

ألم يوجد طريقة أخري مباشرة ؟؟؟

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#4

ما الغرض من الفكره

#5

ليس هناك غرض محدد ... لكنني كنت أعتدت علي الفيجوال 6.0 بأن أمر علي كل العناصر مباشرتاً ... هذه هي كل الفكرة !!!

علي كل حال شكراً لكم جميعاً

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#6

أخي العزيز لا أعتقد أن هناك عيب في طول الكود أو قصره ..

لا أعلم إن كان هناك إمكانية في VB6 للحصول على أسماء الـ Controls الموجودة داخل الـ Containers بكود قصير كما هو الحال مع الكود الذي وضعته ..

... إذا كنت تعتقد أن مشاركتي مفيده ، الرجاء قم بتقييمي ...

%2525D8%2525A8%2525D8%2525B5%2525D9%252585%2525D8%2525A9%252B%2525D8%2525B9%2525D9%252584%2525D9%252585%252B%2525D9%252588%2525D8%2525B5%2525D8%2525B1%2525D8%2525AE%2525D8%2525A9%252B%2525D8%2525A7%25

#7
اقتباس
لا أعلم إن كان هناك إمكانية في VB6 للحصول على أسماء الـ Controls الموجودة داخل الـ Containers بكود قصير كما هو الحال مع الكود الذي وضعته ..

في vb6 كانت كل الادوات موجودة في Controls بغض النظر عن وجودها داخل محتوى آخر

#8
TareqVB كتب:

في vb6 كانت كل الادوات موجودة في Controls بغض النظر عن وجودها داخل محتوى آخر

نستطيع القول إذن أن VB.NET انتبهت لهذه النقطة ، وبالتالي فالكود الطويل هنا لمصلحة المبرمج ولتسهيل عمل المبرمج .. أليس كذلك ؟

... إذا كنت تعتقد أن مشاركتي مفيده ، الرجاء قم بتقييمي ...

%2525D8%2525A8%2525D8%2525B5%2525D9%252585%2525D8%2525A9%252B%2525D8%2525B9%2525D9%252584%2525D9%252585%252B%2525D9%252588%2525D8%2525B5%2525D8%2525B1%2525D8%2525AE%2525D8%2525A9%252B%2525D8%2525A7%25

#9
عاشق للبرمجة كتب:

نستطيع القول إذن أن VB.NET انتبهت لهذه النقطة ، وبالتالي فالكود الطويل هنا لمصلحة المبرمج ولتسهيل عمل المبرمج .. أليس كذلك ؟

كما قال الأخ TareqVB ، فكانت كل الأمور مفتوحة !!!

لكن حكاية الميزة والعيب فأحياناً ميزة وأحياناً عيب !!!

هقول لحضرتك فكرة بسيطة ... في الفيجوال 6.0 هناك دالة تدعي RmDir لحذف فولدر في مسار محدد ((كما هو الحال في الدوت نيت)) ... وهناك تابع وظيفي API يدعي DeleteFolder ... التابع الوظيفي ينفذ فقط لا غير دون أن يعرض خطأ بالفيجوال ((فقط مجرد رقم خطأ)) ... أما الدالة RmDir ، فكانت مفوحة وإن لم يكن هناك الفولدر في مسارة الطبيعي يحدث خطأ !!!

هنا يأتي دور المبرمج في عملية الإختبار !!!

يعني كان مطول أيضاً في حالة لو أردنا جمع جميع العناصر الموجودة بداخل حاوية محددة ، مثال بسيط :

Dim obj As Object
For Each obj In Me.Controls
    If (obj.Container.Name = "Frame1") Then
        MsgBox obj.Name
    End If
Next

عكس الدوت نيت !!!

Dim obj As Object
For Each obj In GroupBox1.Controls
    MsgBox (obj.Name)
Next

علي كل حال الغرض واحد !!! وكل مشكله ولها حلها بغض النظر عن الطريقة نفسها !!!

شكراً لحضرتكم جميعاً

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…