تابعنا :

الأربعاء، 2 مايو 2012

Structure of control in Visual Basic 5




قبل البدء فى تكملة باقى دروس بنية التحكم الجزء الخامس والاخير كنت عاوز اضف رد على العليق اللى جالى على الايمال وكان السؤال هو ؟
 س / ما الفرق بين DoèLoop Until & Loop While ؟
  ج / الاثنين واحد وبيقوامو بنفس الشرط على يمين while و until لكن 
  
loop while


هنا الحلقة الاولى يتم تنفيذها في جميع الاحوال لأن التحقق من 


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


اما 



loop until


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


ارجوا ان اكون وضحت الشرح للتعليق المطلوب 







عبارة For EachèNext

تقوم هذه العبارة بتنفيذ عملية على مجموعة من العناصر المشتركة في صفة 
مـا (كالمصفوفات ) كمجموعة من عناصر التحكم
التي تنتمي لنوع واحد و تملك نفس الاسم وتكون مصفوفة
و في هذه الطريقة لا داعي لتحديد القيمة الأولية Start ولا النهائية End.
ولترى ذلك,قم بتنفيذ  المثال التالي:
أنشئ فورم, وضع فيه مجموعة من عناصر التحكم(كالأزرارCommand Buttons و التسميات Labels و خانات الإختيار وغيرها..) ثم افتح نافذة الكود وذلك بالنقر المزدوج على أحد عناصر الفورم, وامسح الكود الموجود مسبقا, واكتب ما يلي:

Private Sub Form_Load()
On Error Resume Next
Dim a As Integer
a = 1
For Each Control In Form1
Control.Caption = "I'm Control " & a
a = a + 1
Next
End Sub

مثال

لاحظ أننا استخدمنا العبارة On Error Resume Next 
وهي تأمر البرنامج : إذا حدث خطأ فتجاهله و نفذ التعليمة التي تليه.
وهي ضرورية هنا, لأنه ليس من الضروري أن تتوفر الخاصية Caption لكل العناصر
التي أضفتها إلى الفورم.
قمنا بتعريف متحول صحيح a وخزنّا فيه القيمة 1.
ثم استخدمنا البنية For EachèNext
حيث كان العنصر المراد تطبيق العملية عليه هو Control ويعني أي عنصر تحكم مهما كان 
,أما التعليمة المطلوب تنفيذها هي تعديل الخاصية Caption وجعل قيمتها كما هو مذكور,من ثم إضافة 1 لـ a.
الشكل العام لعبارة For EachèNext هو:

  For Each Element In Array
  Statement1
  Statement2
  Statement..
                                                                                  Next Counter

حيث أن Array تعني مصفوفة من العناصر أو ما شابه.
يستمر البرنامج بتكرار الحلقة حتى يطبق التعليمات الموجودة في كتلة الحلقة حتى يتم تطبيقها على جميع العناصر الموجودة في المصفوفة.


بنى التحكم المتداخلة



في كثير من الأحيان نحتاج إلى حلقة في كل مرة تنفذ فيها هذه الحلقة تنفذ حلقة أخـــرى,
مثلا نريد من البرنامج أن يكتب في مربع نص 6 سطور, في كل سطر يكتب 4 كلمـــات
فأذأ في هذه الحالة نستخدم حلقة أولى(خارجية) تعمل 6 دورات و تقوم بإضافة سطر في كل مرة و حلقة ثانية تعمل 4 دورات وتقوم بإضافة كلمة في كل دورة ويجب أن تكون الحلقة الثانية(الداخلية) ضمن كتلة الحلقة الأولى(الخارجية) حيث أنه في كل دورة تنفذ فيها
الحلقة الأولى تنفذ الحلقة الداخلية(الثانية) 4 دورات,بالتالي ستنفذ الحلقة الثانية 6*4 أي 24 مرة في البرنامج كله.

ولتوضيح الفكرة نأخذ المثال التالي:

سننشئ برنامجاً يقوم بطباعة الأرقام من 1 إلى 6 في مربع نص 7 مرات,وبعد كل
مرة يقوم بطباعة كلمة تعلم المستخدم ما هو ترتيب هذه المرة.

أنشئ فورم جديد, وضع فيه مربع نص واجعل قيمة الخاصية MultiLine تساوي
True وذلك من نافذة الخصائص(انقر على مربع النص ثم انقر F4 وعدل القيمة).
ثم اكتب الكود التالي:


Private Sub Form_Load()      

Me.Height = 2655                     ' السطر الأول
Me.ScaleHeight = 2145            ' السطر الثاني
Me.Width = 7575
Me.ScaleWidth = 7455

Text1.Text = ""                           'السطر الخامس
Text1.FontSize = 20
For i = 1 To 7
  Text1.Text = Text1.Text & "Tour " & i & " : "
  For j = 1 To 6
   Text1.Text = Text1.Text & j & " "
  Next
  Text1.Text = Text1.Text + "  ||  "
Next
End Sub

Private Sub Form_Resize()
Text1.Left = 0
Text1.Top = 0
Text1.Height = Me.Height
Text1.Width = Me.Width
End Sub


مثال

لاتقلق بشأن أول 4 أسطر و لا آخر 4 أسطر فهي لأجل ضبط حجم الفورم ومربع النص وموقعه.
قمنا في السطر الخامس(نقصد في السطر السادس لكننا لا نعتبر السطر الأول سطر لأنه ليس تعليمة) بحذف النص الموجود في مربع النص.
أما في السطر السادس فجعلنا حجم النص الذي سيكتب في مربع النص =20 من خلال
الخاصية FontSize.
لاحظ أننا دخلنا في الحلقة الخارجية ذات المتحول i عندها يضيف البرنامج إلى مربع النص عبارة تعبر عن رقم العداد i  ثم بعدها يدخل بحلقة داخلية ذات متحول j و يطبع قيمة
المتحول j ويعيدها 6 مرات ثم يعود ليعيد الحلقة الخارجية فتعاد الكرة حتى تنفذ الحلقة الخارجية 7 مرات.
أما الحدث Form_Resize  ( حدث الفورم ) يتحقق عند تغيير حجم الفورم,وعندما يبدأ البرنامج أيضاً.
وفي الإجراء الأخير يقوم البرنامج بجعل حجم مربع النص مساويا لحجم الفورم,جرب أن تغير حجم الفورم عند تنفيذ البرنامج ولاحظ ذلك


2 التعليقات:

Unknown يقول...

جزاكم الله خيراً على هذا الجهد الطيب

محمد فاروق يقول...

لو سمحت ضيف اميلى اريدك فى شئ لو سمحت

mohamed6662010@yahoo.com

عاشق.السامبا@nimbuzz.com

إرسال تعليق

ما هو رايكم فى المدونة ؟ او يتم الاقتراح لاضافة اشياء اخرى ؟

Related Posts Plugin for WordPress, Blogger...