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

كيف يمكن عمل مصفوفة ادوات في دوت نت

مغلق
بدأه gaf58 في 8 ديسمبر 2005 · 37 رد · 4,015 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الاخوة الافاضل

كيف يمكن عمل مصفوفة من التكست بوكس في الدوت نت 2005 ؟

في فيجوال 6 كنا ننسخ التكست بوكس و نلصقه فيتحول الي مصفوفة

وكيف نكنب الكود التالي في الدوت نت

For i = Text1.LBound To Text1.UBound
Text1(i).Left = 120
Next i

تحياتي

29_09_05_02_32_59_1128029579_4_13_3[_].gif

صور gif شفافة لتجميل واجة البرنامج

الخط العثماني للمهتمين ببرمجة برامج تلاوة القرآن

كيف يمكن عمل سكرول بالماوس, scroling by mouse wheel

كبفية استعراض ملف PDF في تكست

06_02_06_08_01_06_1139241666down-logo_1.gif

هل نكذب علي الله ام نكذب علي انفسنا

البـر لا يبلي ، و الذنب لا ينسـي ، و الديـان لا يمـوت ، افعـل مـا شئت كما تـديـن تـدان

ليس كل من تعمم مفتيا ، بل ان الدين الاسلامي ليس قيه كهانه و بالتالي ليس فيه ما يعرف ب رجال الدين – احمد رجب

                                  مع خالص تحيـــــــــــــــــــــــــــــــــاتي

                                                   GAF58 

#2

بسم الله الرحمن الرحيم

أخي الكريم هذا ماكنت تكتبه في VB6 ولكن في الدوت نت لم يعاد هناك مصفوفة من الأدوات إذا أردت أن تقوم بتخزين مجموعة من الأدوات فعليك بإنشاء مصفوفة من النوع الذي تريد ثم أكتب ما كنت تكتب في VB6

مثال الشكل الأول:

   
     Dim ControlArray(2) As Control
    ControlArray(0) = txt1
    ControlArray(1) = lbl2
    ControlArray(2) = but3

     For Each Control ctl In ControlArray
          ctl .Left = 20
     Next

الشكل الثاني:

   
     Dim TextBoxArray(2) As TextBox
    TextBoxArray(0) = txt1
    TextBoxArray(1) = txt2
    TextBoxArray(2) = txt3

     For Each TextBox txt In TextBoxArray
          txt.Left = 20
     Next

كما تستطيع أن تنشئ Collection من الأدوات وتستطيع أن تتعامل معها في نفس الشكل

أما إذا كنت تستخدم ال VB 2005 فتستطيع أن تكتب

     Dim TextBoxCollection As System.Collections.ObjectModel.Collection(Of TextBox)
    TextBoxCollection .Add( txt1 )
    TextBoxCollection .Add( txt2 )
    TextBoxCollection .Add( txt3 )

     For Each TextBox txt In TextBoxCollection 
          ctl .Left = 20
     Next

أو

     Dim ControlCollection As System.Collections.ObjectModel.Collection(Of Control)
    ControlCollection.Add( txt1 )
    ControlCollection.Add( lbl2 )
    ControlCollection.Add( but3 )

     For Each Control ctl In ControlCollection
          ctl .Left = 20
     Next

أتمنى أن تكون قد توصلت إلى ما تريد

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)

التوقيت في دمشق:

<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">

#3

إضافة لما قال الأخ TarekNajem04

إذا كنت تريد أن تظهر هذه المصفوفة وقت التصميم فعليك كتابتها ( أو استدعاء الإجراء الذي يحتويها ) في الـ InitializeComponent للفورم

إذا كان كلامي غير واضح ممكن أعملك مثال

#4

اخونا الكريم TarekNajem04

شكرا جزيلا علي الشرح الجميل خاصة وانني مبتدئ دون نت ولقد اضفت لي معلومة جديدة

جزاك الله خيرا اخي الفاضل

===

اخونا الكريمharoon

شكرا جزيلا للاهتمام والمتابعة

بالطبع اكون شاكر جدا لو ارفقت مثال لان بالتاكيد سوف يكون فيه لمستك الخاصة ويعتبر اضافة لي ولكل من يتابع الموضوع ولمكتبة الموقع

جزيت عني خير الجزاء اخي الفاضل

بصراحة لم اكن اتوقع ان هذا السؤال سوف ياخذ هذا الاهتمام

تحياتي

29_09_05_02_32_59_1128029579_4_13_3[_].gif

صور gif شفافة لتجميل واجة البرنامج

الخط العثماني للمهتمين ببرمجة برامج تلاوة القرآن

كيف يمكن عمل سكرول بالماوس, scroling by mouse wheel

كبفية استعراض ملف PDF في تكست

06_02_06_08_01_06_1139241666down-logo_1.gif

هل نكذب علي الله ام نكذب علي انفسنا

البـر لا يبلي ، و الذنب لا ينسـي ، و الديـان لا يمـوت ، افعـل مـا شئت كما تـديـن تـدان

ليس كل من تعمم مفتيا ، بل ان الدين الاسلامي ليس قيه كهانه و بالتالي ليس فيه ما يعرف ب رجال الدين – احمد رجب

                                  مع خالص تحيـــــــــــــــــــــــــــــــــاتي

                                                   GAF58 

#5

تكرم عينك أخي الكريم ....

انتظر المثال في وقت لاحق

#6
haroon كتب:
تكرم عينك أخي الكريم ....

انتظر المثال في وقت لاحق

شكرا جزيلا اخونا العزيز

بانتظارك علي احر من الجمر

29_09_05_02_32_59_1128029579_4_13_3[_].gif

صور gif شفافة لتجميل واجة البرنامج

الخط العثماني للمهتمين ببرمجة برامج تلاوة القرآن

كيف يمكن عمل سكرول بالماوس, scroling by mouse wheel

كبفية استعراض ملف PDF في تكست

06_02_06_08_01_06_1139241666down-logo_1.gif

هل نكذب علي الله ام نكذب علي انفسنا

البـر لا يبلي ، و الذنب لا ينسـي ، و الديـان لا يمـوت ، افعـل مـا شئت كما تـديـن تـدان

ليس كل من تعمم مفتيا ، بل ان الدين الاسلامي ليس قيه كهانه و بالتالي ليس فيه ما يعرف ب رجال الدين – احمد رجب

                                  مع خالص تحيـــــــــــــــــــــــــــــــــاتي

                                                   GAF58 

#7

السلام عليكم

مرفق مثال يعمل مصفوفة من الأزرار وقت التصميم ولي عليه عدة ملاحظات:

1- لا تعدل أي شيء في نافذة المصمم قبل الاطلاع على الكود المرفق لأن المصمم عندها سيعيد كتابة الكود الخاص به وسيذهب عملنا هباءً منثورا لأن هذه المنطقة مخصصة للمصمم ونحن الآن نقوم بالاعتداء عليها

2- لن تلاحظ أي فرق مرئي بين هذا المشروع وبين مشروع آخر تقوم بإضافة الإزرار فيه يدوياً ستظهر لك الأزرار مباشرة عند فتح المشروع وعندها ستظن بأني مخادع لذلك لفهم الكود المكتوب اعمل مشروع جديد اذهب مباشرة إلى محرر الكود للفورم وافتح منطقة كود المصمم #Region " Windows Form Designer generated code " لإظهار الكود الذي يكتبه المصمم وعدل الكود كما هو وارد في المثال وستلاحظ أن التغييرات التي تعملها تظهر مباشرة في الفورم وقت التصميم

3- ستلاحظ أننا لم نغير شيئاً سوى استخدام الوظيفة me.controls.addRange لإضافة مصفوفة الأزرار بدل إضافة هذه الأزرار فرادى باستخدام me.controls.add لإضافة هذه الأزرار فرادى

4- جماعة Microsoft يقولون أنه لم يعد هناك داع لمصفوفة الأدوات وقت التصميم بسبب الوظائف الجديدة التي توفرها .net .... خذ ذلك بالحسبان.

5- كما ذكرت هذه المنطقة مخصصة لمصمم الفورم وليست لنا وقبل الكود الذي كتبناه سترى ملاحظة يكتبها المحرر تلقائياً تنصح (أو تأمر) بعدم تحرير هذه المنطقة من يدوياً ... لذلك عليك التعامل مع هذه المنطقة بحذر شديد ... ومن الجدير بالذكر أن هذه المنطقة تم فصلها تماماً عن الكود الذي يكتبه المبرمج في النسخة 2005 من الفيجوال ستوديو.

6- سترى أيضاً أنه يمكننا إضافة أي كونترول وتحديد خصائصه وقت التصميم وباستخدام الكود فقط وهذا من إبداعات دوت نت التي لم نكن قادرين عليها في vb6

7- بالتوفيق ......

ControlArray.rar

#8

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

شكرا جزيلا اخي الفاضل

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

اكرر شكرى

29_09_05_02_32_59_1128029579_4_13_3[_].gif

صور gif شفافة لتجميل واجة البرنامج

الخط العثماني للمهتمين ببرمجة برامج تلاوة القرآن

كيف يمكن عمل سكرول بالماوس, scroling by mouse wheel

كبفية استعراض ملف PDF في تكست

06_02_06_08_01_06_1139241666down-logo_1.gif

هل نكذب علي الله ام نكذب علي انفسنا

البـر لا يبلي ، و الذنب لا ينسـي ، و الديـان لا يمـوت ، افعـل مـا شئت كما تـديـن تـدان

ليس كل من تعمم مفتيا ، بل ان الدين الاسلامي ليس قيه كهانه و بالتالي ليس فيه ما يعرف ب رجال الدين – احمد رجب

                                  مع خالص تحيـــــــــــــــــــــــــــــــــاتي

                                                   GAF58 

#9
اقتباس
جارى التجربة و سوف اعود اليك لاحقا لان كلامك كبير علي مستواى في دوت نت

عفواً أخي الكريم لم أقصد إخافتك .... :D

الأمور ليست بهذا التعقيد .. كل ما في الأمر أنك يجب أن تتعامل مع هذه المنطقة بحذر

المسألة مسألة حذر وليست مسألة تعقيد

وبانتظارك

#10

اخونا الكريم TarekNajem04

للاسف و لا طريقة نفعت

2005 اكسبريس لم يتقبل

ctl .Left = 20

===

اخي العزيز هارون

فعلا هذه الطريقة تخوف ولقد صرفت نظر عن المصفوفة و ال select case in dot net :o

طبعا انا غير جاد في الكلام السابق لكن ياريت طريقة اسهل خاصة وانا لايص في الدوت نت

اقتباس
اعمل مشروع جديد اذهب مباشرة إلى محرر الكود للفورم وافتح منطقة كود المصمم #Region " Windows Form Designer generated code " لإظهار الكود الذي يكتبه المصمم وعدل الكود كما هو وارد في المثال وستلاحظ أن التغييرات التي تعملها تظهر مباشرة في الفورم وقت التصميم

فتحت مشروع جديد ودورت علي Windows Form Designer generated code لم اتعرف عليه في 2005 اكسبريس ، عملت كوبي و بيست للكود برنامجك للمشروعي الجديد لم يحدث تغيير

اقتباس
سترى أيضاً أنه يمكننا إضافة أي كونترول وتحديد خصائصه وقت التصميم وباستخدام الكود فقط وهذا من إبداعات دوت نت التي لم نكن قادرين عليها في vb6

تقصد انه لا يوجد property for read only in dot net

عموما اهمية المصفوفة عندى هي كتابة كود واحد للادوات المشابهة واستخدام عبارة select case التي لا ادرى ان كانت مازالت موجودة بالدوت نت ام لا ؟ اختصارا للكتابة

مرفق مثال حولته من فيجوال 6 للاكسبريس

ياريت تشوف كيف مايكروسوقت حولت المصفوفة

و معلش قدرك اتعبك معايا

تحياتي

select_Case_.net.rar

29_09_05_02_32_59_1128029579_4_13_3[_].gif

صور gif شفافة لتجميل واجة البرنامج

الخط العثماني للمهتمين ببرمجة برامج تلاوة القرآن

كيف يمكن عمل سكرول بالماوس, scroling by mouse wheel

كبفية استعراض ملف PDF في تكست

06_02_06_08_01_06_1139241666down-logo_1.gif

هل نكذب علي الله ام نكذب علي انفسنا

البـر لا يبلي ، و الذنب لا ينسـي ، و الديـان لا يمـوت ، افعـل مـا شئت كما تـديـن تـدان

ليس كل من تعمم مفتيا ، بل ان الدين الاسلامي ليس قيه كهانه و بالتالي ليس فيه ما يعرف ب رجال الدين – احمد رجب

                                  مع خالص تحيـــــــــــــــــــــــــــــــــاتي

                                                   GAF58 

#11

سامح الله الأمير

اقتباس
ومن الجدير بالذكر أن هذه المنطقة تم فصلها تماماً عن الكود الذي يكتبه المبرمج في النسخة 2005 من الفيجوال ستوديو.

لو أنك أخبرتني أنك تعمل على 2005 كنت عملتلك المثال بـ 2005 لن أدخلك في صرعة التحويل انتظر مثال جديد

اقتباس
تقصد انه لا يوجد property for read only in dot net

عموما اهمية المصفوفة عندى هي كتابة كود واحد للادوات المشابهة واستخدام عبارة select case التي لا ادرى ان كانت مازالت موجودة بالدوت نت ام لا ؟ اختصارا للكتابة

قصدت بأننا نستطيع عمل كونترول من خلال الكود فقط وبدون استخدام المصمم ، لو ان المثال اشتغل معك أكيد كنت راح تفهم قصدي

وبالنسبة للـ select case طبعاً شغالة وتستطيع أن تفحص من خلالها الكونترولات وخاصية القراءة فقط ما زالت مدعومة وبقوة لن أطيل أكثر من هذا سأحاول توضيح أكثر ما أستطيع في المثال القادم وسأنتبه بأن أعمله على 2005

سلام

#12

هذا ملف معدل على2005 اتبع التالي

1- افتح الملف وكما قلت لاتعدل فيه شيئاً اذهب إلى مستعرض المشاريع اضغط show all files اذهب إلى ملف الفورم وافتح القائمة الخاصة به ثم افتح form1.desiner.vb ستشاهد عندها الكود المذكور في المثال الأول واتبع باقي الملاحظات في المثال الأول

2- اضيف كود لإنشاء مصفوفة من مربعات النصوص وقت التشغيل ولتعديلها والتحكم بخواصها

3- لاحظ أن معالج حدث النقر موحد للزرين وذلك عن طريق الـ handle الخاص بهذا الحدث وهذا أحد أسباب التخلي عن مصفوفة الكونترولات وقت التشغيل فقد أصبح بإمكانك الآن إضافة معالج واحد لعدد من الأحداث

4- بالتوفيق ....

ControlArray2005.rar

#13

اوعدك سوف احاول افهم لاني مقدر تعبك معايا وستجدني ان شاء الله تلميذ مجتهد

جزيت عني و عن المتابعين خير الجزاء

29_09_05_02_32_59_1128029579_4_13_3[_].gif

صور gif شفافة لتجميل واجة البرنامج

الخط العثماني للمهتمين ببرمجة برامج تلاوة القرآن

كيف يمكن عمل سكرول بالماوس, scroling by mouse wheel

كبفية استعراض ملف PDF في تكست

06_02_06_08_01_06_1139241666down-logo_1.gif

هل نكذب علي الله ام نكذب علي انفسنا

البـر لا يبلي ، و الذنب لا ينسـي ، و الديـان لا يمـوت ، افعـل مـا شئت كما تـديـن تـدان

ليس كل من تعمم مفتيا ، بل ان الدين الاسلامي ليس قيه كهانه و بالتالي ليس فيه ما يعرف ب رجال الدين – احمد رجب

                                  مع خالص تحيـــــــــــــــــــــــــــــــــاتي

                                                   GAF58 

#14

بعد التعديل في الـ VB2005

Dim TextBoxCollection As New  System.Collections.ObjectModel.Collection(Of TextBox)
   TextBoxCollection.Add( txt1 )
   TextBoxCollection.Add( txt2 )
   TextBoxCollection.Add( txt3 )

    For Each txt AS TextBox  In TextBoxCollection 
         ctl.Left = 20
    Next

Dim ControlCollection As New System.Collections.ObjectModel.Collection(Of Control)
   ControlCollection.Add( txt1 )
   ControlCollection.Add( lbl2 )
   ControlCollection.Add( but3 )

    For Each ctl  As Control In ControlCollection
         ctl .Left = 20
    Next

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)

التوقيت في دمشق:

<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">

#15

اخونا العزيز haroon

الحمد لله لقد تمكنت من رسم مصفوفة checbox بطريقتك لكني احتاج بعض الوقت لاتعامل معها و لي عودة معك باذن الله

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
    Inherits System.Windows.Forms.Form

    'Form overrides dispose to clean up the component list.
    <System.Diagnostics.DebuggerNonUserCode()> _
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing AndAlso components IsNot Nothing Then
            components.Dispose()
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
    Friend WithEvents check1 As CheckBox
    Friend WithEvents check2 As CheckBox
    Friend WithEvents check3 As CheckBox
    Friend WithEvents check4 As CheckBox

    <System.Diagnostics.DebuggerStepThrough()> _
    Private Sub InitializeComponent()
        Me.check1 = New System.Windows.Forms.CheckBox
        Me.check2 = New System.Windows.Forms.CheckBox
        Me.check3 = New System.Windows.Forms.CheckBox
        Me.check4 = New System.Windows.Forms.CheckBox
        Me.SuspendLayout()
        '
        'check1
        '
        Me.check1.Appearance = System.Windows.Forms.Appearance.Button
        Me.check1.Location = New System.Drawing.Point(20, 20)
        Me.check1.Name = "check1"
        Me.check1.Size = New System.Drawing.Size(100, 30)
        Me.check1.TabIndex = 0
        Me.check1.Text = "Red"
        '
        'check2
        '
        Me.check2.Appearance = System.Windows.Forms.Appearance.Button
        Me.check2.Location = New System.Drawing.Point(20, 60)
        Me.check2.Name = "check2"
        Me.check2.Size = New System.Drawing.Size(100, 30)
        Me.check2.TabIndex = 1
        Me.check2.Text = "Blue"
        '
        'check3
        '
        Me.check3.Appearance = System.Windows.Forms.Appearance.Button
        Me.check3.Location = New System.Drawing.Point(20, 100)
        Me.check3.Name = "check3"
        Me.check3.Size = New System.Drawing.Size(100, 30)
        Me.check3.TabIndex = 2
        Me.check3.Text = "Black"
        '
        'check4
        '
        Me.check4.Appearance = System.Windows.Forms.Appearance.Button
        Me.check4.Location = New System.Drawing.Point(20, 140)
        Me.check4.Name = "check4"
        Me.check4.Size = New System.Drawing.Size(100, 30)
        Me.check4.TabIndex = 3
        Me.check4.Text = "Yellow"
        '
        'Form1
        '
        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        Me.ClientSize = New System.Drawing.Size(292, 266)
        Me.Controls.Add(Me.check1)
        Me.Controls.Add(Me.check2)
        Me.Controls.Add(Me.check3)
        Me.Controls.Add(Me.check4)
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)

    End Sub

End Class

شكرا جزيلا

===

اخونا العزيز TarekNajem04

اخيرا تمكنت من عمل طريقتك

المشكلة كانت في ctl

ctl not declared

رغم اني عملتلها declaration مرة as control و مر ة as checkBox لكن ظلت المشكلة فاستعضت عنها ب checkBox

Public Class Form1
    Sub Array()
        Dim CheckBoxCollection As New System.Collections.ObjectModel.Collection(Of CheckBox)
        CheckBoxCollection.Add(CheckBox1)
        CheckBoxCollection.Add(CheckBox2)
        CheckBoxCollection.Add(CheckBox3)
        CheckBoxCollection.Add(CheckBox4)


        For Each CheckBox As CheckBox In CheckBoxCollection
            CheckBox.Left = 60
            CheckBox.Appearance = Appearance.Button
            CheckBox.AutoSize = False
            CheckBox.Size = New System.Drawing.Size(100, 30)
            CheckBox.TextAlign = ContentAlignment.MiddleCenter
            CheckBox.CheckState = CheckState.Unchecked
        Next

    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Array()
    End Sub

حتي هنا لا يوجد مشاكل
    Private Sub CheckBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.Click
        Array()

    End Sub
End Class

لقد قمت بعمل اجراء كتبت الكود و خاطبت خصائص المصفوفة مجتمعة و ناديت الاجراء في حدث الفورم لود

حتي هذه الخطوة لا مشاكل

في حدث check_click انا عندى 4 تشيك بوكس اكتب تحت اى واحد فيهم

CheckBox.CheckState = CheckState.Unchecked

ثانيا كيف اعمل select case للمصفوفة بحيث لما ادوس كل تشيك يغير لون الفورم للون مختلف واكتب عبارة ال select case تحت ايا من التشيك الاول ولا الثاني الخ

معذرة لكن هذه اللغة جديدة تماما وهاخد وقت علي ما استوعبها

تحياتي

29_09_05_02_32_59_1128029579_4_13_3[_].gif

صور gif شفافة لتجميل واجة البرنامج

الخط العثماني للمهتمين ببرمجة برامج تلاوة القرآن

كيف يمكن عمل سكرول بالماوس, scroling by mouse wheel

كبفية استعراض ملف PDF في تكست

06_02_06_08_01_06_1139241666down-logo_1.gif

هل نكذب علي الله ام نكذب علي انفسنا

البـر لا يبلي ، و الذنب لا ينسـي ، و الديـان لا يمـوت ، افعـل مـا شئت كما تـديـن تـدان

ليس كل من تعمم مفتيا ، بل ان الدين الاسلامي ليس قيه كهانه و بالتالي ليس فيه ما يعرف ب رجال الدين – احمد رجب

                                  مع خالص تحيـــــــــــــــــــــــــــــــــاتي

                                                   GAF58 

#16

بسم الله الرحمن الرحيم

الكود غير مجرب لأني لا أملك نسخة من الـ VB

التجريب وإخباري إذا كان هناك أي إخطاء

الكود بحاجة لقراءة وتمعن لأكثر من مرة أخي الكريم إذا كنت من المبتدئين

لتفعل ما تريد من غير ما تستعمل الـ Select Case

هذه الإنترفاس التي سوف نقوم بتطبيقها لاحقاً لنستطع تنفيذ الكود دون معرفة الكائن وهذا التصمسم مفيد لتخفيف الإرتباط بين الكائنات

Interface ICommand
  Sub Execute()
End Interface

نستطسع تطبيق هذا الإنترفاس على أي كائن سوف يفعل عمل ما دون معرفة العمل أو الكائن

Interface ICommandHolder
    Property Command As ICommand   
End Interface

وراثة الكائن الأصلي CheckBox وتطبيق الإنترفاس السابقة لنستطيع من عمل الكود بطريقة جميلة ونستطيع التعديل عليه لاحقاً فمثلاً قمنا بتعديل على البرنامج حاعلين الأزرار بدل الإختيارت سيكون التعديل قليل

  Class CheckBoxCommand
       Inherits CheckBox
       Implements ICommandHolder
       
       private m_Command As ICommand

       Property Command() As ICommand Implements ICommandHolder.Command 
       Get
             Return m_Command 
       End Get      
       Set (ByVal Value As ICommand)
            m_Command  = Value
       End Get
       End Property

end Class

تستطيع أن تكتب ما تشاء من هذه الأوامر

  Class RedCommand
       Implements ICommand       
        private frm As Form

        Sub  New(Target_Form as Form)
            frm = Target_Form 
       End Sub 

       Public  Sub Execute() Implements ICommand.Execute
                  frm.BackColor = Color.Red
       End Sub
end Class

  Class BlueCommand
       Implements ICommand       
        private frm As Form

        Sub  New(Target_Form as Form)
            frm = Target_Form 
       End Sub 

       Public  Sub Execute() Implements ICommand.Execute
                  frm.BackColor = Color.Blue
       End Sub
end Class

  Class GreenCommand
       Implements ICommand       
        private frm As Form

        Sub  New(Target_Form as Form)
            frm = Target_Form 
       End Sub 

       Public  Sub Execute() Implements ICommand.Execute
                  frm.BackColor = Color.Green
       End Sub
end Class

   Friend WithEvents check1 As CheckBoxCommand
   Friend WithEvents check2 As CheckBoxCommand
   Friend WithEvents check3 As CheckBoxCommand

  Sub Array()
       Dim CheckBoxCollection As New System.Collections.ObjectModel.Collection(Of CheckBoxCommand)
       
       CheckBox1.Command = New RedCommand(Me)
       
       CheckBox2.Command = New BlueCommand(Me)
       AddHandler CheckBox2.CheckedChanged , AddressOf OnCheckedChanged
       CheckBox3.Command = New GreenCommand(Me)
       AddHandler CheckBox3.CheckedChanged , AddressOf OnCheckedChanged

       CheckBoxCollection.Add(CheckBox1)
       CheckBoxCollection.Add(CheckBox2)
       CheckBoxCollection.Add(CheckBox3)


       For Each chk As CheckBoxCommand In CheckBoxCollection

           AddHandler chk .CheckedChanged , AddressOf OnCheckedChanged

           chk .Left = 60
           chk .Appearance = Appearance.Button
           chk .AutoSize = False
           chk .Size = New System.Drawing.Size(100, 30)
           chk .TextAlign = ContentAlignment.MiddleCenter
           chk .CheckState = CheckState.Unchecked
       Next
  End Sub

   Sub OnCheckedChanged(sender As Object, e As EventArgs)
    Dim Target As ICommandHolder = DirectCast((sender , ICommandHolder )
    Target.Command.Execute()
   End Sub

أتمنى لكم التوفيق

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)

التوقيت في دمشق:

<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">

#17

اخواني الاعزاء haroon و TarekNajem04

انتم بتكتبوا الحاجات دى ازاى

مخي خلاص فرقع و موش نافع تاني

كل هذه الاكواد بدل جملة select cse والله حرام

ماله فيجوال 6 ابن حلال وسهل

اخونا طارق انا وصلت لنصف الكود ماشي معايا كويس وبعدين فيه حاجة موش مظبوطة

سوف ارسلها فيما بعد لاني خلاص موش شايف ولا قادر افكر

شكرا جزيلا اخواني الاعزاء

29_09_05_02_32_59_1128029579_4_13_3[_].gif

صور gif شفافة لتجميل واجة البرنامج

الخط العثماني للمهتمين ببرمجة برامج تلاوة القرآن

كيف يمكن عمل سكرول بالماوس, scroling by mouse wheel

كبفية استعراض ملف PDF في تكست

06_02_06_08_01_06_1139241666down-logo_1.gif

هل نكذب علي الله ام نكذب علي انفسنا

البـر لا يبلي ، و الذنب لا ينسـي ، و الديـان لا يمـوت ، افعـل مـا شئت كما تـديـن تـدان

ليس كل من تعمم مفتيا ، بل ان الدين الاسلامي ليس قيه كهانه و بالتالي ليس فيه ما يعرف ب رجال الدين – احمد رجب

                                  مع خالص تحيـــــــــــــــــــــــــــــــــاتي

                                                   GAF58 

#18

اخونا الفاضل TarekNajem04

بعد جزيل الشكر

بتطبيق الكود الذى تفضلتم به ظهر عندى لا اعرف كيف اتفاداه

الكود الحالي - منطفة الخطأ

 Class YellowCommand
        Implements ICommand
        Private frm As Form
        Sub New(ByVal Target_form As Form)
            frm = Target_form
        End Sub
        Public Sub Excute() Implements ICommand.Excute
            frm.BackColor = Color.Yellow
        End Sub
    End Class
    '
    '
    Friend WithEvents CheckBox1 As ChekBoxCommand
    Friend WithEvents CheckBox2 As ChekBoxCommand
    Friend WithEvents CheckBox3 As ChekBoxCommand
    Friend WithEvents CheckBox4 As ChekBoxCommand
    '
    '

Sub Array()
        Dim CheckBoxCollection As New System.Collections.ObjectModel.Collection(Of CheckBoxCommand)
        CheckBox1.Command = New RedCommand(Me)

        CheckBox2.Command = New BlueCommand(Me)
        AddHandler CheckBox2.CheckedChanged, AddressOf OnCheckedChanged
        CheckBox3.command = New GreenCommand(Me)
        AddHandler CheckBox3.CheckedChanged, AddressOf OnCheckedChanged
        CheckBox4.command = New YellowCommand(Me)
        AddHandler CheckBox4.CheckedChanged, AddressOf OnCheckedChanged


        CheckBoxCollection.Add(CheckBox1)
        CheckBoxCollection.Add(CheckBox2)
        CheckBoxCollection.Add(CheckBox3)
        CheckBoxCollection.Add(CheckBox4)


    For Each CheckBox As CheckBox In CheckBoxCollection
        CheckBox.Left = 60
        CheckBox.Appearance = Appearance.Button
        CheckBox.AutoSize = False
        CheckBox.Size = New System.Drawing.Size(100, 30)
        CheckBox.TextAlign = ContentAlignment.MiddleCenter
        CheckBox.CheckState = CheckState.Unchecked
    Next

    End Sub
    '
    Sub OnCheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
   Dim Target As ICommandHolder = DirectCast((sender , ICommandHolder )
        Target.Command.Execute()

    End Sub

checkBox 1 ,2 ,3 ,4 highliteghd

checkBox.command highlighted

Error

اقتباس
Error 1 'CheckBox1' is already declared as 'Friend Dim WithEvents CheckBox1 As System.Windows.Forms.CheckBox' in this class. D:\Documents and Settings\Gamal\Desktop\chekArray_select case\Copy of chekArray_select case\chekArray_select case\Form1.vb 81 23 chekArray_select case

Error 2 'CheckBox2' is already declared as 'Friend Dim WithEvents CheckBox2 As System.Windows.Forms.CheckBox' in this class. D:\Documents and Settings\Gamal\Desktop\chekArray_select case\Copy of chekArray_select case\chekArray_select case\Form1.vb 82 23 chekArray_select case

Error 3 'CheckBox3' is already declared as 'Friend Dim WithEvents CheckBox3 As System.Windows.Forms.CheckBox' in this class. D:\Documents and Settings\Gamal\Desktop\chekArray_select case\Copy of chekArray_select case\chekArray_select case\Form1.vb 83 23 chekArray_select case

Error 4 'CheckBox4' is already declared as 'Friend Dim WithEvents CheckBox4 As System.Windows.Forms.CheckBox' in this class. D:\Documents and Settings\Gamal\Desktop\chekArray_select case\Copy of chekArray_select case\chekArray_select case\Form1.vb 84 23 chekArray_select case

Error 5 Type 'CheckBoxCommand' is not defined. D:\Documents and Settings\Gamal\Desktop\chekArray_select case\Copy of chekArray_select case\chekArray_select case\Form1.vb 89 84 chekArray_select case

Error 6 'Command' is not a member of 'System.Windows.Forms.CheckBox'. D:\Documents and Settings\Gamal\Desktop\chekArray_select case\Copy of chekArray_select case\chekArray_select case\Form1.vb 90 9 chekArray_select case

Error 7 'Command' is not a member of 'System.Windows.Forms.CheckBox'. D:\Documents and Settings\Gamal\Desktop\chekArray_select case\Copy of chekArray_select case\chekArray_select case\Form1.vb 92 9 chekArray_select case

Error 8 'command' is not a member of 'System.Windows.Forms.CheckBox'. D:\Documents and Settings\Gamal\Desktop\chekArray_select case\Copy of chekArray_select case\chekArray_select case\Form1.vb 94 9 chekArray_select case

Error 9 'command' is not a member of 'System.Windows.Forms.CheckBox'. D:\Documents and Settings\Gamal\Desktop\chekArray_select case\Copy of chekArray_select case\chekArray_select case\Form1.vb 96 9 chekArray_select case

Error 10 ')' expected. D:\Documents and Settings\Gamal\Desktop\chekArray_select case\Copy of chekArray_select case\chekArray_select case\Form1.vb 118 54 chekArray_select case

Error 11 Name 'Target' is not declared. D:\Documents and Settings\Gamal\Desktop\chekArray_select case\Copy of chekArray_select case\chekArray_select case\Form1.vb 119 9 chekArray_select case

شكرا جزيلا اخي الفاضل

29_09_05_02_32_59_1128029579_4_13_3[_].gif

صور gif شفافة لتجميل واجة البرنامج

الخط العثماني للمهتمين ببرمجة برامج تلاوة القرآن

كيف يمكن عمل سكرول بالماوس, scroling by mouse wheel

كبفية استعراض ملف PDF في تكست

06_02_06_08_01_06_1139241666down-logo_1.gif

هل نكذب علي الله ام نكذب علي انفسنا

البـر لا يبلي ، و الذنب لا ينسـي ، و الديـان لا يمـوت ، افعـل مـا شئت كما تـديـن تـدان

ليس كل من تعمم مفتيا ، بل ان الدين الاسلامي ليس قيه كهانه و بالتالي ليس فيه ما يعرف ب رجال الدين – احمد رجب

                                  مع خالص تحيـــــــــــــــــــــــــــــــــاتي

                                                   GAF58 

#19

الخطأ من 1 إلى 4 يخبرك بأنك تقوم بتكرار أسماء المتحولات مرى أخرى حاول تغير أسماء المتحولات القديمة أو الجديدة

   Friend WithEvents CheckBox1 As ChekBoxCommand
   Friend WithEvents CheckBox2 As ChekBoxCommand
   Friend WithEvents CheckBox3 As ChekBoxCommand
   Friend WithEvents CheckBox4 As ChekBoxCommand

   Friend WithEvents CheckBox1 As CheckBox
   Friend WithEvents CheckBox2 As CheckBox
   Friend WithEvents CheckBox3 As CheckBox
   Friend WithEvents CheckBox4 As CheckBox

حاول أن تكتب مثل هذا

   Friend WithEvents ChekBoxCommand1 As ChekBoxCommand
   Friend WithEvents ChekBoxCommand2 As ChekBoxCommand
   Friend WithEvents ChekBoxCommand3 As ChekBoxCommand
   Friend WithEvents ChekBoxCommand4 As ChekBoxCommand

   Friend WithEvents CheckBox1 As CheckBox
   Friend WithEvents CheckBox2 As CheckBox
   Friend WithEvents CheckBox3 As CheckBox
   Friend WithEvents CheckBox4 As CheckBox

ولاتنسى تعديل الكود المتبقي يعني تغير الأسماء القديمة بالأسماء الجديدة

Sub Array()
       Dim CheckBoxCollection As New System.Collections.ObjectModel.Collection(Of CheckBoxCommand)
       ChekBoxCommand1.Command = New RedCommand(Me)
       AddHandler ChekBoxCommand1.CheckedChanged, AddressOf OnCheckedChanged

       ChekBoxCommand2.Command = New BlueCommand(Me)
       AddHandler ChekBoxCommand2.CheckedChanged, AddressOf OnCheckedChanged

       ChekBoxCommand3.command = New GreenCommand(Me)
       AddHandler ChekBoxCommand3.CheckedChanged, AddressOf OnCheckedChanged

       ChekBoxCommand4.command = New YellowCommand(Me)
       AddHandler ChekBoxCommand4.CheckedChanged, AddressOf OnCheckedChanged


       CheckBoxCollection.Add(ChekBoxCommand1)
       CheckBoxCollection.Add(ChekBoxCommand2)
       CheckBoxCollection.Add(ChekBoxCommand3)
       CheckBoxCollection.Add(ChekBoxCommand4)


   For Each CHK As ChekBoxCommand In CheckBoxCollection
       CHK .Left = 60
       CHK .Appearance = Appearance.Button
       CHK .AutoSize = False
       CHK .Size = New System.Drawing.Size(100, 30)
       CHK .TextAlign = ContentAlignment.MiddleCenter
       CHK .CheckState = CheckState.Unchecked
   Next

   End Sub

والأ خطاء المتبقية هو أنكل لم تقوم بإضافة الكونترك الجيدة التي قمنا بعملها في المشاركة السابقة زهي:

Class CheckBoxCommand
      Inherits CheckBox
      Implements ICommandHolder
      
      private m_Command As ICommand

      Property Command() As ICommand Implements ICommandHolder.Command 
      Get
            Return m_Command 
      End Get      
      Set (ByVal Value As ICommand)
           m_Command  = Value
      End Get
      End Property

End Class

أتمنى التجريب وإخبارنا بما حدث لتعم الفائدة على الجميع

تم تعديل هذه المشاركة بواسطة TarekNajem04 في 11 ديسمبر 2005 في 17:32

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)

التوقيت في دمشق:

<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">

#20

اخونا العزيز TarekNajem04

معلش غلبتك معايا

الكود

Public Class Form1
    '
    Interface ICommand
        Sub Excute()
    End Interface
    '
    '
    Interface ICommandHolder
        Property Command() As ICommand
    End Interface
    '
    '
    Class CheckBoxCommand
        Inherits CheckBox
        Implements ICommandHolder

        Private m_Command As ICommand

        Property Command() As ICommand Implements ICommandHolder.Command
            Get
                Return m_Command
            End Get
            Set(ByVal Value As ICommand)
                m_Command = Value
            End Set
        End Property

    End Class


    '
    Class RedCommand
        Implements ICommand
        Private frm As Form
        Sub New(ByVal Target_form As Form)
            frm = Target_form

        End Sub

        Public Sub Excute() Implements ICommand.Excute
            frm.BackColor = Color.Red
        End Sub
    End Class
    '

    Class BlueCommand
        Implements ICommand
        Private frm As Form
        Sub New(ByVal Target_form As Form)
            frm = Target_form
        End Sub
        Public Sub Excute() Implements ICommand.Excute
            frm.BackColor = Color.Blue
        End Sub
    End Class
    '
    Class GreenCommand
        Implements ICommand
        Private frm As Form
        Sub New(ByVal Target_form As Form)
            frm = Target_form
        End Sub

        Public Sub Excute() Implements ICommand.Excute
            frm.BackColor = Color.Green
        End Sub
    End Class
    '
    Class YellowCommand
        Implements ICommand
        Private frm As Form
        Sub New(ByVal Target_form As Form)
            frm = Target_form
        End Sub
        Public Sub Excute() Implements ICommand.Excute
            frm.BackColor = Color.Yellow
        End Sub
    End Class
    '
    '
    Friend WithEvents ChekBoxCommand1 As CheckBoxCommand
    Friend WithEvents ChekBoxCommand2 As CheckBoxCommand
    Friend WithEvents ChekBoxCommand3 As CheckBoxCommand
    Friend WithEvents ChekBoxCommand4 As CheckBoxCommand

    

Sub Array()
        Dim CheckBoxCollection As New System.Collections.ObjectModel.Collection(Of CheckBoxCommand)

        ChekBoxCommand1.Command = New RedCommand(Me)
        AddHandler ChekBoxCommand1.CheckedChanged, AddressOf OnAutoSizeChanged

        ChekBoxCommand2.Command = New BlueCommand(Me)
        AddHandler ChekBoxCommand2.CheckedChanged, AddressOf OnCheckedChanged

        ChekBoxCommand3.Command = New GreenCommand(Me)
        AddHandler ChekBoxCommand3.CheckedChanged, AddressOf OnCheckedChanged

        ChekBoxCommand4.Command = New YellowCommand(Me)
        AddHandler ChekBoxCommand1.CheckedChanged, AddressOf OnCheckedChanged


        CheckBoxCollection.Add(ChekBoxCommand1)
        CheckBoxCollection.Add(ChekBoxCommand2)
        CheckBoxCollection.Add(ChekBoxCommand3)
        CheckBoxCollection.Add(ChekBoxCommand4)


        For Each CHK As ChekBoxCommand In CheckBoxCollection
            CHK.Left = 60
            CHK.Appearance = Appearance.Button
            CHK.AutoSize = False
            CHK.Size = New System.Drawing.Size(100, 30)
            CHK.TextAlign = ContentAlignment.MiddleCenter
            CHK.CheckState = CheckState.Unchecked
        Next

    End Sub
    '
    Sub OnCheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
   Dim Target As ICommandHolder = DirectCast((sender , ICommandHolder )
        Target.Command.Execute()

    End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Array()
End Sub


Private Sub CheckBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.Click


End Sub
End Class

الاخطاء

اقتباس
Error 1 Method 'Protected Overridable Sub OnAutoSizeChanged(e As System.EventArgs)' does not have the same signature as delegate 'Delegate Sub EventHandler(sender As Object, e As System.EventArgs)'.

Error 2 Type 'ChekBoxCommand' is not defined.

Error 3 ')' expected.

Error 4 Name 'Target' is not declared.

Highlighted

AddHandler ChekBoxCommand1.CheckedChanged, AddressOf OnAutoSizeChanged

Unable to cast object of type 'System.Windows.Forms.CheckBox' to type 'ChekBoxCommand'.

اكرر شكرى و امتناني

29_09_05_02_32_59_1128029579_4_13_3[_].gif

صور gif شفافة لتجميل واجة البرنامج

الخط العثماني للمهتمين ببرمجة برامج تلاوة القرآن

كيف يمكن عمل سكرول بالماوس, scroling by mouse wheel

كبفية استعراض ملف PDF في تكست

06_02_06_08_01_06_1139241666down-logo_1.gif

هل نكذب علي الله ام نكذب علي انفسنا

البـر لا يبلي ، و الذنب لا ينسـي ، و الديـان لا يمـوت ، افعـل مـا شئت كما تـديـن تـدان

ليس كل من تعمم مفتيا ، بل ان الدين الاسلامي ليس قيه كهانه و بالتالي ليس فيه ما يعرف ب رجال الدين – احمد رجب

                                  مع خالص تحيـــــــــــــــــــــــــــــــــاتي

                                                   GAF58 

#21

بسم الله الرحمن الرحيم

أخي الكريم الشكر لله الذي جمعني بكم

أسأل ولا يهمك أنا خادم لعيون الطيبين

الكود بعد التعديل

إنشائ الله يكون هذه المره شغال 100%

يخبرك الـ VB أن الكائن لا يحوي لمثل هذه ال Events

AddHandler ChekBoxCommand1.CheckedChanged, AddressOf OnAutoSizeChanged

بعد التعديل يصبح

       AddHandler ChekBoxCommand1.CheckedChanged, AddressOf OnCheckedChanged

الكود كامل مكمل إن شاء الله

Public Class Form1
   '
   Interface ICommand
       Sub Excute()
   End Interface
   '
   '
   Interface ICommandHolder
       Property Command() As ICommand
   End Interface
   '
   '
   Class CheckBoxCommand
       Inherits CheckBox
       Implements ICommandHolder

       Private m_Command As ICommand

       Property Command() As ICommand Implements ICommandHolder.Command
           Get
               Return m_Command
           End Get
           Set(ByVal Value As ICommand)
               m_Command = Value
           End Set
       End Property

   End Class


   '
   Class RedCommand
       Implements ICommand
       Private frm As Form
       Sub New(ByVal Target_form As Form)
           frm = Target_form
       End Sub
       
       Public Sub Excute() Implements ICommand.Excute
           frm.BackColor = Color.Red
       End Sub
   End Class
   '

   Class BlueCommand
       Implements ICommand
       Private frm As Form
       Sub New(ByVal Target_form As Form)
           frm = Target_form
       End Sub
       Public Sub Excute() Implements ICommand.Excute
           frm.BackColor = Color.Blue
       End Sub
   End Class
   '
   Class GreenCommand
       Implements ICommand
       Private frm As Form
       Sub New(ByVal Target_form As Form)
           frm = Target_form
       End Sub

       Public Sub Excute() Implements ICommand.Excute
           frm.BackColor = Color.Green
       End Sub
   End Class
   '
   Class YellowCommand
       Implements ICommand
       Private frm As Form
       Sub New(ByVal Target_form As Form)
           frm = Target_form
       End Sub
       Public Sub Excute() Implements ICommand.Excute
           frm.BackColor = Color.Yellow
       End Sub
   End Class
   '
   '
   Friend WithEvents ChekBoxCommand1 As CheckBoxCommand
   Friend WithEvents ChekBoxCommand2 As CheckBoxCommand
   Friend WithEvents ChekBoxCommand3 As CheckBoxCommand
   Friend WithEvents ChekBoxCommand4 As CheckBoxCommand

   

Sub Array()
       Dim CheckBoxCollection As New System.Collections.ObjectModel.Collection(Of CheckBoxCommand)

       ChekBoxCommand1.Command = New RedCommand(Me)
       AddHandler ChekBoxCommand1.CheckedChanged, AddressOf OnCheckedChanged

       ChekBoxCommand2.Command = New BlueCommand(Me)
       AddHandler ChekBoxCommand2.CheckedChanged, AddressOf OnCheckedChanged

       ChekBoxCommand3.Command = New GreenCommand(Me)
       AddHandler ChekBoxCommand3.CheckedChanged, AddressOf OnCheckedChanged

       ChekBoxCommand4.Command = New YellowCommand(Me)
       AddHandler ChekBoxCommand1.CheckedChanged, AddressOf OnCheckedChanged


       CheckBoxCollection.Add(ChekBoxCommand1)
       CheckBoxCollection.Add(ChekBoxCommand2)
       CheckBoxCollection.Add(ChekBoxCommand3)
       CheckBoxCollection.Add(ChekBoxCommand4)


       For Each CHK As ChekBoxCommand In CheckBoxCollection
           CHK.Left = 60
           CHK.Appearance = Appearance.Button
           CHK.AutoSize = False
           CHK.Size = New System.Drawing.Size(100, 30)
           CHK.TextAlign = ContentAlignment.MiddleCenter
           CHK.CheckState = CheckState.Unchecked
       Next

   End Sub
   '
   Sub OnCheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
    Dim Target As ICommandHolder = DirectCast((sender , ICommandHolder )
        Target.Command.Execute()

   End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   Array()
End Sub

End Class

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)

التوقيت في دمشق:

<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">

#22

الاخ الفاضل TarekNajem04

الحمد لله الاخطاء قلت لكن مازال اخطاء لا ادرى سببها !!! حاجة تجنن

Friend WithEvents ChekBoxCommand3 As CheckBoxCommand

Highlighted الهلب بيقول

Unable to cast object of type 'System.Windows.Forms.CheckBox' to type 'ChekBoxCommand'.

اقتباس
Error 1 ')' expected

لا ادرى ما معناها و في اى جملة هي ،، السطر 32

Target.Command.Execute()

Error 2 Name 'Target' is not declared.

مع خالص تحياتي اخي الكريم

29_09_05_02_32_59_1128029579_4_13_3[_].gif

صور gif شفافة لتجميل واجة البرنامج

الخط العثماني للمهتمين ببرمجة برامج تلاوة القرآن

كيف يمكن عمل سكرول بالماوس, scroling by mouse wheel

كبفية استعراض ملف PDF في تكست

06_02_06_08_01_06_1139241666down-logo_1.gif

هل نكذب علي الله ام نكذب علي انفسنا

البـر لا يبلي ، و الذنب لا ينسـي ، و الديـان لا يمـوت ، افعـل مـا شئت كما تـديـن تـدان

ليس كل من تعمم مفتيا ، بل ان الدين الاسلامي ليس قيه كهانه و بالتالي ليس فيه ما يعرف ب رجال الدين – احمد رجب

                                  مع خالص تحيـــــــــــــــــــــــــــــــــاتي

                                                   GAF58 

#23

الخطأ الول لا يمكن أن يحدث لأن في هذا السطر الذي كتبه لا يوجد أي تحويل

Friend WithEvents ChekBoxCommand3 As CheckBoxCommand 'هنا لا يوجد أي تحويل هذا السطر عباره عن تصريح لمتحول فقط

وبالنسبة للخطأ الثاني لا يمكن أن يحدث لأننا قمنا بتعريف المتحول وأسندنا له قيمة قبل أن نقوم بستخدامه

Sub OnCheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
      ' هذا سبب الخطأ لا حظ أننا قمنا بفتح قوسين لذلك كان يجب عليك حذف أحد القوسين إنظر السطر الذي في أسفله مباشر قمنا بحذف الخطأ
      'Dim Target As ICommandHolder = DirectCast((sender , ICommandHolder )
      Dim Target As ICommandHolder = DirectCast(sender , ICommandHolder ) 'هنا قمنا بالتصريح عن المتحول ونقوم بإسناد القيمه له
   Target.Command.Execute()'هنا نستخدم المتحول
  End Sub

أرجو أن تقوم بإرسال الكود كامل وونحن نقوم التعديلات عليه إن شاء الله وبعد ذلك تقوم أنت بمقارنه أين كان يحدث الخطأ

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)

التوقيت في دمشق:

<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">

#24

اخي العزيز TarekNajem04

الكود كامل

Public Class Form1
    'Thank's for TarekNajem04 , arabteam2000

    'هذه الإنترفاس التي سوف نقوم بتطبيقها لاحقاً لنستطع تنفيذ الكود 
    'دون معرفة الكائن وهذا التصمسم مفيد لتخفيف الإرتباط بين الكائنات
    '
    Interface ICommand
        Sub Excute()
    End Interface
    '
    'نستطسع تطبيق هذا الإنترفاس على أي كائن سوف يفعل 
    'عمل ما دون معرفة العمل أو الكائن
    Interface ICommandHolder
        Property Command() As ICommand
    End Interface
    'الكلاس التالي
    'وراثة الكائن الأصلي التشيك بوكس وتطبيق الإنترفاس السابقة لنستطيع 
    'عمل الكود بطريقة جميلة ونستطيع التعديل عليه لاحقاً 
    'فمثلاً قمنا بتعديل على البرنامج حاعلين الأزرار بدل الإختيارت سيكون التعديل قليل
    '
    Class CheckBoxCommand
        Inherits CheckBox
        Implements ICommandHolder

        Private m_Command As ICommand

        Property Command() As ICommand Implements ICommandHolder.Command
            Get
                Return m_Command
            End Get
            Set(ByVal Value As ICommand)
                m_Command = Value
            End Set
        End Property

    End Class


    'تستطيع أن تكتب ما تشاء من هذه الأوامر
    ' الكلاسات الاربع التالية
    Class RedCommand
        Implements ICommand
        Private frm As Form
        Sub New(ByVal Target_form As Form)
            frm = Target_form

        End Sub

        Public Sub Excute() Implements ICommand.Excute
            frm.BackColor = Color.Red
        End Sub
    End Class
    '

    Class BlueCommand
        Implements ICommand
        Private frm As Form
        Sub New(ByVal Target_form As Form)
            frm = Target_form
        End Sub
        Public Sub Excute() Implements ICommand.Excute
            frm.BackColor = Color.Blue
        End Sub
    End Class
    '
    Class GreenCommand
        Implements ICommand
        Private frm As Form
        Sub New(ByVal Target_form As Form)
            frm = Target_form
        End Sub

        Public Sub Excute() Implements ICommand.Excute
            frm.BackColor = Color.Green
        End Sub
    End Class
    '
    Class YellowCommand
        Implements ICommand
        Private frm As Form
        Sub New(ByVal Target_form As Form)
            frm = Target_form
        End Sub
        Public Sub Excute() Implements ICommand.Excute
            frm.BackColor = Color.Yellow
        End Sub
    End Class
    '
    '
    Friend WithEvents ChekBoxCommand1 As CheckBoxCommand
    Friend WithEvents ChekBoxCommand2 As CheckBoxCommand
    Friend WithEvents ChekBoxCommand3 As CheckBoxCommand
    Friend WithEvents ChekBoxCommand4 As CheckBoxCommand

    

Sub Array()
        Dim CheckBoxCollection As New System.Collections.ObjectModel.Collection(Of CheckBoxCommand)

        ChekBoxCommand1.Command = New RedCommand(Me)
        AddHandler ChekBoxCommand1.CheckedChanged, AddressOf OnCheckedChanged

        ChekBoxCommand2.Command = New BlueCommand(Me)
        AddHandler ChekBoxCommand2.CheckedChanged, AddressOf OnCheckedChanged

        ChekBoxCommand3.Command = New GreenCommand(Me)
        AddHandler ChekBoxCommand3.CheckedChanged, AddressOf OnCheckedChanged

        ChekBoxCommand4.Command = New YellowCommand(Me)
        AddHandler ChekBoxCommand1.CheckedChanged, AddressOf OnCheckedChanged


        CheckBoxCollection.Add(ChekBoxCommand1)
        CheckBoxCollection.Add(ChekBoxCommand2)
        CheckBoxCollection.Add(ChekBoxCommand3)
        CheckBoxCollection.Add(ChekBoxCommand4)


        For Each CHK As CheckBoxCommand In CheckBoxCollection
            CHK.Left = 60
            CHK.Appearance = Appearance.Button
            CHK.AutoSize = False
            CHK.Size = New System.Drawing.Size(100, 30)
            CHK.TextAlign = ContentAlignment.MiddleCenter
            CHK.CheckState = CheckState.Unchecked
        Next

    End Sub
    '
    Sub OnCheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
        Dim Target As ICommandHolder = DirectCast(sender, ICommandHolder)
        Target.Command.Excute()


    End Sub


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Array()
End Sub


Private Sub CheckBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.Click


End Sub
End Class

no Error in Error list

عند تشغيل البرنامج يتوقف و الكود التالي

ChekBoxCommand1.Command = New RedCommand(Me)

highlighted

Help

اقتباس
Object reference not set to an instance of an object.

A NullReferenceException occurs when you try to reference an object in your code that does not exist. For example, you may have tried to use an object without using the New keyword first, or tried to use an object whose value is set to null (Nothing in Visual Basic).

موش حاجة تجنن !!

تحياتي

29_09_05_02_32_59_1128029579_4_13_3[_].gif

صور gif شفافة لتجميل واجة البرنامج

الخط العثماني للمهتمين ببرمجة برامج تلاوة القرآن

كيف يمكن عمل سكرول بالماوس, scroling by mouse wheel

كبفية استعراض ملف PDF في تكست

06_02_06_08_01_06_1139241666down-logo_1.gif

هل نكذب علي الله ام نكذب علي انفسنا

البـر لا يبلي ، و الذنب لا ينسـي ، و الديـان لا يمـوت ، افعـل مـا شئت كما تـديـن تـدان

ليس كل من تعمم مفتيا ، بل ان الدين الاسلامي ليس قيه كهانه و بالتالي ليس فيه ما يعرف ب رجال الدين – احمد رجب

                                  مع خالص تحيـــــــــــــــــــــــــــــــــاتي

                                                   GAF58 

#25

12_12_05_07_58_41_1134403121Semple_Command_Pattern.jpg

الكود كامل وأنا قمت بتنزيل الـ SDK وجربته وشغال وأنا قمت بإرفاق البرنامج التنفيذي للكود كود التنفيذ على كونسول الـ SDK هو

vbc.exe /imports:Microsoft.VisualBasic,System,System.Windows.Forms,System.Drawing C:\SCP.VB

Public Class Form1
      Inherits System.Windows.Forms.Form
   'Thank's for TarekNajem04 , arabteam2000

   'هذه الإنترفاس التي سوف نقوم بتطبيقها لاحقاً لنستطع تنفيذ الكود 
   'دون معرفة الكائن وهذا التصمسم مفيد لتخفيف الإرتباط بين الكائنات
   '
   Interface ICommand
       Sub Excute()
   End Interface
   '
   'نستطسع تطبيق هذا الإنترفاس على أي كائن سوف يفعل 
   'عمل ما دون معرفة العمل أو الكائن
   Interface ICommandHolder
       Property Command() As ICommand
   End Interface
   'الكلاس التالي
   'وراثة الكائن الأصلي التشيك بوكس وتطبيق الإنترفاس السابقة لنستطيع 
   'عمل الكود بطريقة جميلة ونستطيع التعديل عليه لاحقاً 
   'فمثلاً قمنا بتعديل على البرنامج حاعلين الأزرار بدل الإختيارت سيكون التعديل قليل
   '
   Class CheckBoxCommand
       Inherits System.Windows.Forms.CheckBox
       Implements ICommandHolder

       Private m_Command As ICommand

       Property Command() As ICommand Implements ICommandHolder.Command
           Get
               Return m_Command
           End Get
           Set(ByVal Value As ICommand)
               m_Command = Value
           End Set
       End Property

   End Class


   'تستطيع أن تكتب ما تشاء من هذه الأوامر
   ' الكلاسات الاربع التالية
   Class RedCommand
       Implements ICommand
       Private frm As Form1
       Sub New(ByVal Target_form As Form1)
           frm = Target_form

       End Sub

       Public Sub Excute() Implements ICommand.Excute
           frm.BackColor = System.Drawing.Color.Red
       End Sub
   End Class
   '

   Class BlueCommand
       Implements ICommand
       Private frm As Form1
       Sub New(ByVal Target_form As Form1)
           frm = Target_form
       End Sub
       Public Sub Excute() Implements ICommand.Excute
           frm.BackColor = System.Drawing.Color.Blue
       End Sub
   End Class
   '
   Class GreenCommand
       Implements ICommand
       Private frm As Form1
       Sub New(ByVal Target_form As Form1)
           frm = Target_form
       End Sub

       Public Sub Excute() Implements ICommand.Excute
           frm.BackColor = System.Drawing.Color.Green
       End Sub
   End Class
   '
   Class YellowCommand
       Implements ICommand
       Private frm As Form1
       Sub New(ByVal Target_form As Form1)
           frm = Target_form
       End Sub
       Public Sub Excute() Implements ICommand.Excute
           frm.BackColor = System.Drawing.Color.Yellow
       End Sub
   End Class
   '
   '
   Friend ChekBoxCommand1 As CheckBoxCommand
   Friend ChekBoxCommand2 As CheckBoxCommand
   Friend ChekBoxCommand3 As CheckBoxCommand
   Friend ChekBoxCommand4 As CheckBoxCommand

   

Sub Array()

       Dim CheckBoxCollection As New System.Collections.ObjectModel.Collection(Of CheckBoxCommand)
       
       Me.SuspendLayout()

       ChekBoxCommand1 = New CheckBoxCommand()
       Me.Controls.Add(ChekBoxCommand1)
       ChekBoxCommand1.Command = New RedCommand(Me)
       ChekBoxCommand1.Text = "Red"
       AddHandler ChekBoxCommand1.CheckedChanged, AddressOf OnCheckedChanged
       
       ChekBoxCommand2 = New CheckBoxCommand()
       Me.Controls.Add(ChekBoxCommand2)
       ChekBoxCommand2.Command = New BlueCommand(Me)
       ChekBoxCommand2.Text = "Blue"
       AddHandler ChekBoxCommand2.CheckedChanged, AddressOf OnCheckedChanged
       
       ChekBoxCommand3 = New CheckBoxCommand()
       Me.Controls.Add(ChekBoxCommand3)
       ChekBoxCommand3.Command = New GreenCommand(Me)
       ChekBoxCommand3.Text = "Green"
       AddHandler ChekBoxCommand3.CheckedChanged, AddressOf OnCheckedChanged

       ChekBoxCommand4 = New CheckBoxCommand()       
       Me.Controls.Add(ChekBoxCommand4)
       ChekBoxCommand4.Command = New YellowCommand(Me)
       ChekBoxCommand4.Text = "Yallow"
       AddHandler ChekBoxCommand4.CheckedChanged, AddressOf OnCheckedChanged


       CheckBoxCollection.Add(ChekBoxCommand1)
       CheckBoxCollection.Add(ChekBoxCommand2)
       CheckBoxCollection.Add(ChekBoxCommand3)
       CheckBoxCollection.Add(ChekBoxCommand4)


       For Index As Integer = 0 To CheckBoxCollection.Count -1
           Dim CHK As CheckBoxCommand = CheckBoxCollection.Item(Index)
           With CHK
            .Left = 60
  If Index = 0 Then
            	.Top = 60
  Else
        	.Top =  CheckBoxCollection.Item(Index-1).Bottom + 5
  End If	
  .Size = New System.Drawing.Size(100, 30)
  .AutoSize = False            
            .Appearance = System.Windows.Forms.Appearance.Button            
            .TextAlign = System.Drawing.ContentAlignment.MiddleCenter
  .CheckState = System.Windows.Forms.CheckState.Unchecked
           End With
       Next
       
     Me.ResumeLayout(false)
   End Sub
   '
   Sub OnCheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
       Dim Target As ICommandHolder = DirectCast(sender, ICommandHolder)
       Target.Command.Excute()


   End Sub


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   Text = "Arab Team 2000"	
   Array()
End Sub

Public Shared Sub Main()
   System.Windows.Forms.Application.Run(New Form1())	
End Sub

End Class

أخي الكريم gaf58 أتمنى أن تقوم بقراءة جميع الدروس الموجودة ضمن هذا المنتدى

Semple_Command_Pattern.rar

تم تعديل هذه المشاركة بواسطة TarekNajem04 في 12 ديسمبر 2005 في 18:52

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)

التوقيت في دمشق:

<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">

هذا الموضوع مغلق.

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