منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : جلب عناصر قائمة فرعية في MenuStrip
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة اله وبركاته
اخوتي الكرام
اعمل حاليا على  برنامج انشاء ادوات desktop Application للغة Python اعتمادا على فيجوال ستوديو
بحيث نرسم ونضع مانريد من ادوات ثم يتم تحويلها الى ملف بلغة البايثون
كل الامور تسير بشكل ممتاز لكن واجهتني عقبة صغيرة لم اجد لها حلا
في المثال التالي لدي فورم وفيها menuStrip وفيه قوائم وكل قائمة فيها بنود ويمكن ان يكون احد البنود يحتوي على قائمة فرعية كما موضح في الصورة
قمت بكتابة كود جلب اسماء القوائم وبنود كل قائمة وتم ذلك لكنني لم استطع جلب القائمة الفرعية وبنودها 
والمطلوب كود حلقة فور على البنود فيما لو كانت تحتوي على قائمة فرعية وجلب بنودها 
اتمنى ان يكون الشرح واضح

  
(07-08-22, 06:59 PM)ابراهيم ايبو كتب : [ -> ]السلام عليكم ورحمة اله وبركاته
اخوتي الكرام
اعمل حاليا على  برنامج انشاء ادوات desktop Application للغة Python اعتمادا على فيجوال ستوديو
بحيث نرسم ونضع مانريد من ادوات ثم يتم تحويلها الى ملف بلغة البايثون
كل الامور تسير بشكل ممتاز لكن واجهتني عقبة صغيرة لم اجد لها حلا
في المثال التالي لدي فورم وفيها menuStrip وفيه قوائم وكل قائمة فيها بنود ويمكن ان يكون احد البنود يحتوي على قائمة فرعية كما موضح في الصورة
قمت بكتابة كود جلب اسماء القوائم وبنود كل قائمة وتم ذلك لكنني لم استطع جلب القائمة الفرعية وبنودها 
والمطلوب كود حلقة فور على البنود فيما لو كانت تحتوي على قائمة فرعية وجلب بنودها 
اتمنى ان يكون الشرح واضح

  
  تفضل استاذي الكريم انتظر التقييم تقييم الاستاذ لطلابه

(07-08-22, 08:21 PM)asmarsou كتب : [ -> ]
(07-08-22, 06:59 PM)ابراهيم ايبو كتب : [ -> ]السلام عليكم ورحمة اله وبركاته
اخوتي الكرام
اعمل حاليا على  برنامج انشاء ادوات desktop Application للغة Python اعتمادا على فيجوال ستوديو
بحيث نرسم ونضع مانريد من ادوات ثم يتم تحويلها الى ملف بلغة البايثون
كل الامور تسير بشكل ممتاز لكن واجهتني عقبة صغيرة لم اجد لها حلا
في المثال التالي لدي فورم وفيها menuStrip وفيه قوائم وكل قائمة فيها بنود ويمكن ان يكون احد البنود يحتوي على قائمة فرعية كما موضح في الصورة
قمت بكتابة كود جلب اسماء القوائم وبنود كل قائمة وتم ذلك لكنني لم استطع جلب القائمة الفرعية وبنودها 
والمطلوب كود حلقة فور على البنود فيما لو كانت تحتوي على قائمة فرعية وجلب بنودها 
اتمنى ان يكون الشرح واضح

  
  تفضل استاذي الكريم انتظر التقييم تقييم الاستاذ لطلابه
و هذا الرابط الذي تمت منه الاضافة
https://social.msdn.microsoft.com/Forums...=vbgeneral
السلام عليكم ورحمة الله وبركاته
اخي الكريم Asmarsou
اولا بارك الله فيك ولك 
ثانيا شكرا لك على الاطراء الجميل وهذا من ذوقك الرفيع
ثالثا كلنا نمر في معوقات برمجية بالرغم من أن الكود يكون قريبا منا لكننا نتوه احيانا عنه
واخيرا اقول ليس علم الاستاذ هو نهاية العلم بل هو جزء يسير منه وكل طالب علم مخلص يقينا سوف يتخطى ماتعلمه من اساتذته بفضل الله واجتهاده ومثابرته 
واعمال عقله وخزينته العلمية وهذا هو ايضا مبدئي وانت ياأخي asmarsou من المثابرين والمتابعين والمتفانين 
وادعو الله ان ينير لك طريقك البرمجي ونراك في مصاف المبرمجين ان شاء الله
سأعدل الكود حتر يناسب ماأنا بصدده
شكرا لك مرة أخرى

الان اصبح الكود على النحو التالي
كود :
  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

       For Each mainmenu As ToolStripMenuItem In Me.MenuStrip1.Items
           ' اسماء القوائم
           ListBox1.Items.Add(mainmenu.Text)

           For Each item As ToolStripItem In mainmenu.DropDownItems
               ' اسماء البنود في الوائم
               If item.Text = "" Then
                   item.Text = "-------------"
               End If
               ListBox2.Items.Add(item.Text)

               If TypeOf (item) Is ToolStripMenuItem Then
                   For Each menu As ToolStripItem In DirectCast(item, ToolStripMenuItem).DropDownItems
                     
                       ListBox3.Items.Add(menu.Text)
                   Next
               End If
           Next

       Next
   End Sub
(07-08-22, 08:59 PM)ابراهيم ايبو كتب : [ -> ]
السلام عليكم ورحمة الله وبركاته
اخي الكريم Asmarsou
اولا بارك الله فيك ولك 
ثانيا شكرا لك على الاطراء الجميل وهذا من ذوقك الرفيع
ثالثا كلنا نمر في معوقات برمجية بالرغم من أن الكود يكون قريبا منا لكننا نتوه احيانا عنه
واخيرا اقول ليس علم الاستاذ هو نهاية العلم بل هو جزء يسير منه وكل طالب علم مخلص يقينا سوف يتخطى ماتعلمه من اساتذته بفضل الله واجتهاده ومثابرته 
واعمال عقله وخزينته العلمية وهذا هو ايضا مبدئي وانت ياأخي asmarsou من المثابرين والمتابعين والمتفانين 
وادعو الله ان ينير لك طريقك البرمجي ونراك في مصاف المبرمجين ان شاء الله
سأعدل الكود حتر يناسب ماأنا بصدده
شكرا لك مرة أخرى

الان اصبح الكود على النحو التالي
كود :
  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

       For Each mainmenu As ToolStripMenuItem In Me.MenuStrip1.Items
           ' اسماء القوائم
           ListBox1.Items.Add(mainmenu.Text)

           For Each item As ToolStripItem In mainmenu.DropDownItems
               ' اسماء البنود في الوائم
               If item.Text = "" Then
                   item.Text = "-------------"
               End If
               ListBox2.Items.Add(item.Text)

               If TypeOf (item) Is ToolStripMenuItem Then
                   For Each menu As ToolStripItem In DirectCast(item, ToolStripMenuItem).DropDownItems
                     
                       ListBox3.Items.Add(menu.Text)
                   Next
               End If
           Next

       Next
   End Sub
و فيك بارك الله استاذ

(07-08-22, 08:59 PM)ابراهيم ايبو كتب : [ -> ]
السلام عليكم ورحمة الله وبركاته
اخي الكريم Asmarsou
اولا بارك الله فيك ولك 
ثانيا شكرا لك على الاطراء الجميل وهذا من ذوقك الرفيع
ثالثا كلنا نمر في معوقات برمجية بالرغم من أن الكود يكون قريبا منا لكننا نتوه احيانا عنه
واخيرا اقول ليس علم الاستاذ هو نهاية العلم بل هو جزء يسير منه وكل طالب علم مخلص يقينا سوف يتخطى ماتعلمه من اساتذته بفضل الله واجتهاده ومثابرته 
واعمال عقله وخزينته العلمية وهذا هو ايضا مبدئي وانت ياأخي asmarsou من المثابرين والمتابعين والمتفانين 
وادعو الله ان ينير لك طريقك البرمجي ونراك في مصاف المبرمجين ان شاء الله
سأعدل الكود حتر يناسب ماأنا بصدده
شكرا لك مرة أخرى

الان اصبح الكود على النحو التالي
كود :
  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

       For Each mainmenu As ToolStripMenuItem In Me.MenuStrip1.Items
           ' اسماء القوائم
           ListBox1.Items.Add(mainmenu.Text)

           For Each item As ToolStripItem In mainmenu.DropDownItems
               ' اسماء البنود في الوائم
               If item.Text = "" Then
                   item.Text = "-------------"
               End If
               ListBox2.Items.Add(item.Text)

               If TypeOf (item) Is ToolStripMenuItem Then
                   For Each menu As ToolStripItem In DirectCast(item, ToolStripMenuItem).DropDownItems
                     
                       ListBox3.Items.Add(menu.Text)
                   Next
               End If
           Next

       Next
   End Sub
و فيك بارك الله استاذ
(07-08-22, 08:59 PM)ابراهيم ايبو كتب : [ -> ]
السلام عليكم ورحمة الله وبركاته
اخي الكريم Asmarsou
اولا بارك الله فيك ولك 
ثانيا شكرا لك على الاطراء الجميل وهذا من ذوقك الرفيع
ثالثا كلنا نمر في معوقات برمجية بالرغم من أن الكود يكون قريبا منا لكننا نتوه احيانا عنه
واخيرا اقول ليس علم الاستاذ هو نهاية العلم بل هو جزء يسير منه وكل طالب علم مخلص يقينا سوف يتخطى ماتعلمه من اساتذته بفضل الله واجتهاده ومثابرته 
واعمال عقله وخزينته العلمية وهذا هو ايضا مبدئي وانت ياأخي asmarsou من المثابرين والمتابعين والمتفانين 
وادعو الله ان ينير لك طريقك البرمجي ونراك في مصاف المبرمجين ان شاء الله
سأعدل الكود حتر يناسب ماأنا بصدده
شكرا لك مرة أخرى

الان اصبح الكود على النحو التالي
كود :
  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

       For Each mainmenu As ToolStripMenuItem In Me.MenuStrip1.Items
           ' اسماء القوائم
           ListBox1.Items.Add(mainmenu.Text)

           For Each item As ToolStripItem In mainmenu.DropDownItems
               ' اسماء البنود في الوائم
               If item.Text = "" Then
                   item.Text = "-------------"
               End If
               ListBox2.Items.Add(item.Text)

               If TypeOf (item) Is ToolStripMenuItem Then
                   For Each menu As ToolStripItem In DirectCast(item, ToolStripMenuItem).DropDownItems
                     
                       ListBox3.Items.Add(menu.Text)
                   Next
               End If
           Next

       Next
   End Sub


السلام عليكم ورحمة الله وبركاته ..

الجمالية في الكود التالي بإنه إمكانك إضافة القوائم الفرعية مهما كانت درجتها  :
كود :
              If TypeOf (item) Is ToolStripMenuItem Then
                  For Each menu As ToolStripItem In DirectCast(item, ToolStripMenuItem).DropDownItems
                   
                      ListBox3.Items.Add(menu.Text)
                  Next
              End If

ولكن بشرط أن تضيفها حلقة داخل حلقة ..  فكل حلقة تنزل درجة .

لكن لازم يكون هناك كود بإمكانه قراءة كل الفروع مهما كانت درجتها دون الحاجة لإضافة القوائم دون الحاجة للتعديل على الكود إضافة حلقة داخلية أخرى ..
مثل مبدأ شغل الشجرة  ما يُهمها هو مفتاح عنصر الأب لتضيف له إبن .. فمهما كانت درجته لا تشترط عليك تحديد إضافة حلقة جديدة لإضافته كأب أو إبن أو حفيد سوى الترتيب بالإضافة فقط.

..