طيبة مصرية || Egyptian Tiaba طيبة مصرية ||  Egyptian Tiaba
recent

آخر الأخبار

recent

تعلم فجول بيسك 6 بالتفصيل

الفصل الأول : كيف تكتب برنامجك الأول ؟
مقدمة :-
هذا الفصل مخصص للمبتدئين في استخدام وسائل البرمجة بواسطة V.basic حيث يشرح كيفية كتابة برنامج V.basic بسيط ليعمل تحت بيئة Windows 95 وما يليه .
تتم عملية كتابة أي برنامج في 4 مراحل ، هي :-
1. مرحلة البرمجة المرئية Visual Programming أي مرحلة تصميم نوافذ البرنامج .
2. مرحلة كتابة الشفرة Code Programming وهي مرحلة كتابة عبارات وجمل اللغة التي تؤدي إلى تنفيذ الغرض من البرنامج .
3. مرحلة تتبع الأخطاء Tracing Bugs وذلك باختبار البرنامج للتأكد من تحقيق الهدف من البرنامج ، وصحة البرنامج من الناحية الهيكلية .
4. مرحلة الترجمة Compiling أي إنشاء نسخة تنفيذية لها الامتداد *.EXE فلا تحتاج إلى تشغيل لغة V.basic لتنفيذ البرنامج .
كيف تنشئ مشروع جديد ؟
تستطيع إنشاء مشروع جديد سواء إذا كانت اللغة عاملة بالذاكرة أو سيتم تشغيلها وذلك بإتباع الخطوات التالية :-
• أبدأ بتشغيل برنامج V.Basic فيظهر صندوق حوار New Project ويحتوي على 3 صفحات هي :-
• صفحة New وتستخدم لإنشاء مشروع جديد من عدة أنواع توفرها لك اللغة بالإضافة إلى معالج يقوم بإنشاء برنامج كامل له كل المميزات التي تحقق الهدف حسب رغبات المبرمج دون تدخل من المبرمج إلا عند كتابة الكود المناسب لتحقيق الهدف .
• صفحة Existing وتستخدم لفتح مشروع قائم بالفعل وموجود على وسط التخزين Hard Disk .
• صفحة Recent وتستخدم لفتح أحد المشاريع التي تم التعامل معها مؤخراً .
كما يحتوي صندوق حوار New Project على صندوق اختيار Check Box والحالة المبدئية Not Checked وعند وضع علامة × داخله لا يظهر صندوق حوار New Project عند تشغيل V.basic ويمكن إعادة إظهاره من خلال اختياره من داخل صفحة Eniveroment أي بيئة تشغيل وذلك من الأمر Option الموجود بالقائمة المنسدلة Tools ، كما يمكن إنشاء مشروع جديد حتى ولغة V.baisc محملة بالذاكرة وذلك باختيار الأمر New من القائمة المنسدلة File أو نقر أيقونة New من شريط الأيقونات . بينما يمكن فتح مشروع قائم بواسطة الأمر Open من نفس القائمة المنسدلة أو بنقر أيقونة Open من شريط الأيقونات .
مجموعة الأشرطة والنوافذ المساعدة :-
يقدم برنامج V.basic عدو أشرطة ونوافذ مساعدة تؤدي لتنفيذ الغرض المطلوب بسهولة ، ومنها :-
1. النافذة Form وتمثل النافذة المبدئية التي تحول إلى شكل النافذة التي تحقق الهدف من البرنامج وذلك بإضافة أدوات وكائنات Tools And Objects تؤدي الغرض .
2. شريط الأدوات ToolBar ويحتوي على عدة أدوات وكائنات تنقل على النافذة للتنفيذ الغرض من النافذة . وذلك بالنقر نقر مزدوج على الأداة أو النقر مرة واحدة على الأداة ثم النقر داخل النافذة والسحب بدون الإفلات حتى تصل إلى الحجم المناسب فنفلت الفارة .
3. مستعرض المشاريع Project Explorer ويستخدم في التنقل ما بين النوافذ المختلفة لنفس المشروع أو لعدة مشاريع داخل نفس البرنامج ليعرض شكل النافذة عند نقر أيقونة View أو عرض نافذة الشفرة لأي نافذة عند نقر أيقونة View Code من داخل المستعرض .
4. صندوق الخصائص Propties وتستخدم لتغير خواص وصفات وسلوك الأدوات عند تنفيذ البرنامج لتناسب الغرض منها وترتب هذه الخصائص ترتيب هجائيا Alphabtic أو ترتيب حسب الوظيفة Categorized ، وهناك 3 أشكال لخلايا هذه الخصائص تظهر هذه الأشكال من خلال النقر على الخلية المجاورة للخاصية ، وهي كما يلي :-
• ينتقل المؤشر إلى هذه الخلية المجاورة للخاصية استعداد لتغيير الخاصية .
• يظهر مربع به مثلث صغير على يمين الخلية المجاورة لخلية الخاصية وتعبر عن وجود قائمة منسدلة تحتوي على قيم مبدئية للخاصية يمكن تغيرها أحيانا وأحيانا أخر لا .
• يظهر مربع به 3 نقط على يمين الخلية المجاورة لخلية الخاصية وتعبر عن وجود مربع حوار لإدخال قيمة الخاصية .
الخاصية
هي صفة أو شكل أو سلوك الأداة عند تنفيذها للغرض منها .
البرنامج Greeting
في البداية علينا إنشاء مشروع جديد كما سبق أوضحنا .
الوظيفة
• عند نقر مفتاح مرحبا تظهر رسالة ( السلام عليكم )
• عند نقر مفتاح وداع تظهر رسالة ( مع السلامة )
البرمجة المرئية
Object Property Settings Object Property Settings
Form Name FrmGreetings CommandButton Name CBGreeting-CBBye-CBExit
BorderStyle 4 Font
MoveAble F Caption التحية – الوداع - خروج
StartUpPosition Style
AutoRedraw Default
Caption Cancel
Height Height
Left Left
Top Top
TextBox Name TXBGreetings Width
Alignment
Font
Height
Left
Top
Width


كتابة الشفرة
كتابة الشفرة الخاصة بالنقر على الزر خروج
Private Sub CBExit_Click()
Beep
End
End Sub
تقوم الشفرة السابقة بإصدار صوت تنبيهي من السماعة الداخلية للجهاز ثم إنهاء البرنامج
كتابة الشفرة الخاصة بالنقر على الزر التحية
Private Sub CBGreeting_Click()
TXBGreetings.Text=” السلام عليكم ورجمة الله وبركاته “
End Sub
تؤدي الشفرة السابقة إلى طباعة العبارة " السلام عليكم ورحمة الله وبركاته " داخل صندوق النصوص
كتابة الشفرة الخاصة بالنقر على الزر الوداع
Private Sub CBBye_Click()
TXBGreetings.Text = " مع السلامة "
End Sub
الآن البرنامج جاهز للتشغيل وذلك بنقر أيقونة Play من شريط الاختصارات أو ضغط مفتاح F5 والذي يمثلان الأمر RUN أو ضغط مفتاح F8 الذي ينفذ البرنامج سطر بسطر مع كل ضغطه للمفتاح F8 أو اختيار الأمر RUN من القائمة المنسدلة RUN .
بعد التأكد من صحة البرنامج وتنفيذه للغرض منه علينا حفظه على القرص وذلك باختيار الأمر Save Project من القائمة File فيظهر مربع حوار حفظ لحفظ النافذة وخصائصها واسمها المبدئي هو Form1 ولها الامتداد .FRM غير اسم النافذة إلى Greetings واضغط مفتاح الإدخال فيظهر مربع حوار حفظ لحفظ المشروع الذي يحوي هذه النافذة واسمه المبدئي هو Project1 وله الامتداد .VBP غير اسم المشروع إلى Greetings واضغط مفتاح الإدخال فيم حفظ البرنامج ونستطيع تحويله الآن إلى نسخة تنفيذية امتدادها .EXE وذلك باختيار الأمر
Make Greetings.EXE من القائمة المنسدلة File فيظهر مربع حوار إنشاء الملف التنفيذي وعلينا تحديد المكان الذي سيحفظ به النسخة .EXE
ملاحظات
• بعض الكائنات والأدوات يمكن رؤية التعديلات المباشرة في خصائصها والبعض الآخر لا يقبل ذلك .
• لإسناد قيمة ما إلى خاصية أحد الأدوات نستخدم الصيغة التالية :-
ObjectName.Property = New Value
حيث ObjectName هو أسم الأداة التي نتعامل بواسطتها داخل الشفرة و Property هي الخاصية المطلوب تعديل قيمتها و New Value هي القيمة الجديدة للخاصية .
• يمكن تجزئة أي جملة أو عبارة من جمل وعبارات اللغة بترك مسافة بعد آخر حرف ثم كتابة ( _ ) وهي UnderScore وبذلك نجزئ العبارة أو الجملة على عدة أسطر .

*****************
الفصل الثاني : إنشاء النوافذ والنوافذ المتعددة
مقدمة :
سنتعلم في هذا الفصل كتابة برامج تعتمد على النوافذ المتعددة Multi Forms بالإضافة إلى كيفية إنشاء المتغيرات المختلفة والتعامل معها .
البرنامج MyMulti
الوظيفة
• عند نقر الزر About يظهر صندوق حوار About القياسي لإظهار معلومات حول البرنامج .
• عند نقر الزر SetData1 يظهر صندوق إدخال لإدخال جملة وبالموافقة تظهر داخل النافذة الرئيسية .
• عند نقر الزر SetData2 يظهر صندوق إدخال ندخل به جملة وبالموافقة يظهرها داخل النافذة الرئيسية وذلك باستخدام عدة طرق مختلفة لنقل الجملة من صناديق الإدخال إلى النافذة الرئيسية .
البرمجة المرئية للنافذة الرئيسية MyMulti
Object Property Settings Object Property Settings
Form Name FRMMyMulti CommandButton Name CBAbout-CBSetData1-CBSetData2-CBExit
BorderStyle Caption معلومات - بيانات 1 -
بيانات 2 - خروج
MoveAble Style 1
StartUpPosition Default T – F – F – F
Caption متعدد النوافذ Cancel F – F – F – T
Height Height
Left Left
Top Top
Width Width
كتابة الشفرة الخاصة بالنافذة الرئيسية MyMulti
كتابة الشفرة الخاصة بالنقر على زر خروج
Private Sub CBExit_Click()
End
End Sub
كتابة الشفرة الخاصة بالنقر على زر معلومات
Private Sub CBAbout_Click()
MsgBox “ مصمم هذا البرنامج هو المهندس / عادل عبده أمين عبدالماجد “ ,VBInformation,” معلومات عن البرنامج متعدد النوافذ ”
End Sub
تؤدي هذه الشفرة إلى ظهور صندوق رسائل من صناديق الحوار القياسية التي يقدمها لك النظام وتحوي 3 معاملات الأول هو رسالة للأعلان والتعريف بالشئ والثاني هي أيقونة جاهزة تعبر عن مضمون المعامل الأول والثالث يعبر عن عنوان صندوق الرسائل الجاهز .
كتابة الشفرة الخاصة بالنقر على زر بيانات 1
Private Sub CbSetData1_Click()
Dim TxtEntered
TxtEntered = InptBox (“ أكتب شيئا هنــا :“,” الحصول على عبارة من المستخدم “,” هذه عبارة مبدئية “
Print “ لقد كتبت : “+ TxtEntered
End Sub
تستخدم الشفرة السابقة طريقة مربعات الإدخال القياسية التي تقدمها اللغة للإستخدام .
فيتم تعريف متغير جديد بإستخدام الكمة المحجوزة Dim تستخدم لتخزين قيمة يستقبلها من صندوق الإدخال InputBox والتي تؤدي لظهور مربع حوار يتكون من 3 معاملات الأول هو رسالة تعبر عن المطلوب من المستخدم والثاني هو عنوان مربع الحوار والثالث هو كقيمة مبدئية . والآن فلنقوم بتصميم النوافذ التي تقوم بنفس العمل الأعمال السابقة
البرمجة المرئية للنافذة الفرعية معلومات

Object Property Settings Object Property Settings
Form Name FRMAbout CommandButton Name CBOK
BorderStyle Caption موافق
MoveAble Style 1
StartUpPosition Default T
Caption معلومات متعدد النوافذ Font
Height Height
Left Left
Top Top
Width Width
Label Name LBLMesAbout
Alignemt 2
Font
Caption مصمم هذا البرنامج مهندس / عادل عبده أمين
كتابة الشفرة الخاصة بالنقر على الزر About في نافذة البرنامج الرئيسية
Private Sub CBAbout_Click()
FrmAbout.Show 1
End Sub
نستبدل الشفرة التي قمنا بكتابتها في البداية بالشفرة السابقة التي تظهر النافذة الفرعية التي قمنا بتصميمها FRMAbout
كتابة الشفرة الخاصة بالنقر على الزر بيانات 2
Private Sub CBSetData2_Click()
FRMSetData2.Show 1
FrmMyMulti.CLS
Print “ لقد كتبت :” + FrmSetData2.TXBMes.Text
End Sub
تقوم الشفرة السابقة بإظهار النافذة الفرعية SetData2 ثم مسح أي جمل أو رسائل مطبوعة على النافذة الرئيسية باستخدام العبارة CLS ثم تقوم بطباعة العبارة التي أدخلها المستخدم في النافذة الفرعية SetData2 باستخدام صندوق النصوص TXBMes وذلك بالصيغة FRMSetData2.TXBMes.TEXT
كتابة الشفرة الخاصة بالنقر على الزر موافق في النافذة الفرعية معلومات
Private Sub CBOk_Click()
FrmAbout.Hide
End Sub
البرمجة المرئية للنافذة الفرعية SetData2
Object Property Settings Object Property Settings
Form Name FRMSetData2 CommandButton Name CBOK – CBCancel
BorderStyle Caption موافق – إلغاء
MoveAble Style 1
StartUpPosition Default T – F
Caption مدخل البيانات 2 Cancel F – T
Height Height
Left Left
Top Top
Width Width
TextBox Name TXBMsg
MultiLine T
Font
Height
Left
Top
Width
كتابة الشفرة الخاصة بالنافذة الفرعية SetData2
كتابة الشفرة الخاصة بالنقر على الزر موافق
Private Sub CBOk_Click()
Unload Me
End Sub
كتابة الشفرة الخاصة بالنقر على الزر إلغاء
Private Sub CBCancel_Click()
TXBMes.Text = “ “
FrmSetData2.Visiable = False
End Sub
ملاحظات
• هناك طريقتين لعرض أي نافذة على الشاشة فلا تختلف إحداهما عن الآخر في التأثير ، وهما :-
اسم النافذة.Show اسم النافذة.Visible = True
بينما توجد 3 طرق لآخفاء هذه النافذة من الشاشة وأيضا لا تختلف هذه الطرق عن بعضها في التأثير ، وهم :-
اسم النافذة.Hide اسم النافذة.visible = False Unload Me
فتعبر الكلمة المحجوزة Me عن العنصر Object أوالأداة والمقصود هنا هو النافذة Form .
• باستخدام الأمر Show يمكنك عرض النافذة أكثر من مرة في نفس الوقت ( أي يسمح بالتنقل إلى نوافذ أخر والتعامل معها أيضا وقد يتم عرض هذه النافذة مرات ومرات ) بهذا تشغل الذاكرة وهذا ما لايحمد عقباه . لذلك نستخدام الأمر Show بالصيغة التالية Show 1 فلا يسمح بالتعامل مع أي نافذة أخر بينما النافذة المعروضة تم عرضها بهذه الصيغة فينقل التحكم إليها حتى تنتهي من التعامل معها ويغلقها هنا فقط فيسمح بالتعامل مع النوافذ الأخرى .

*****************
الفصل الثالث : القوائم وأشرطة الأدوات وأشرطة الحالة
مقدمة
سنتعلم في هذا الفصل كيفية بناء عناصر أساسية لأي تطبيق وهي القوائم وأشرطة الأدوات وأشرطة الحالة .
البرنامج MyMenu
الوظيفة
• بالنقر على أي لون من قائمة Color فتلون به النافذة ( منطقة العمل Client Area ) ولا يتاح هذا اللون للإستخدام إلا بعد إختيار لون آخر للتلوين . ويمكن أداء نفس العمل بإختيار اللون من شريط الأدوات ( الألوان ) .
• عند إزالة تعليم صندوق الإختيار Check Box المسمى Color Menu تختفي قائمة Color من داخل شريط القوائم . وتظهر ثانية بإعادة تعليم صندوق الإختيار ويمكن تعليمه أو إزالة التعليم بضغط مفتاح المسافة Space Bar أو بالنقر عليه بواسطة الفارة .
• عند إزالة تعليم عنصر القائمة ToolBars من قائمة Tool And Status Bars تختفي أشرطة الأدوات وتظهر هذه الأشرطة ثانية بإعادة التعليم لعنصر القائمة .
• عند إزالة تعليم عنصر القائمة StatusBars من القائمة Tool And Status Basrs تختفي أشرطة الحالة وتظهر ثانية بإعادة التعليم لعنصر القائمة .
البرمجة المرئية
Object Property Settings Object Property Settings
Form Name FRMMyMenu PictureBox Name PicToolBar1
BorderStyle Align 1
MoveAble F Height
StartUpPosition PictureBox Name PicGreen – PicBlue
Caption برنامج القائمة Align 0
AutoRedraw T BackColor Green – Blue
Height Height
Left Left
Top Top
Width Width
PictureBox Name PicToolBar2 PictureBox Name PICStatusBar1
Align 1 Align 2
Height Height
PictureBox Name PICRed CheckBox Name CHKColorMenu
Align 0 Caption إظهر قائمة الألوان
BackColor Red Value
Height Height
Left Left
Top Top
Width Width
PictureBox Name PICStatusBar2
Align
Height
CommandButton Name CBExit
Caption خروج
Cancel T
Height
Left
Top
Width
والآن علينا إدراج قائمة من أيقونة Menu Editor
Menu Caption Remarks
ملف MnuFile
… خروج MnuExit
ألوان MnuColor
… أخضر MnuGreen
… أزرق MnuBlue
… أحمر MnuRed
أشرطة الحالة والأدوات MnuToolStatusBars
… أشرطة الأدوات MnuToolBars Checked = True
… أشرطة الحالة MnuStatusBars Checked = True
كتابة الشفرة
كتابة الشفرة الخاصة بتعليم صندوق الآختيار ( إظهر قائمة الألوان )
Private Sub CHKColorMenu_Click()
If CHKColorMenu.Value = 0 Then
MnuColor.Visible = False
Else
MnuColor.Visible = True
End If
End Sub
تختبر الشفرة السابقة قيمة الخاصية Value التابعة لصندوق الإختيار فإذا كانت هذه القيمة = 0 ( غير معلم UnChecked ) تختفي قائمة Color وإذا كانت هذه القيمة = 1 ( معلم Checked ) أو قيمتها = 2 ( مظللة وتعني أن صندوق الإختيار معلم ولا يمكن إزالة التعليم من داخله ) تظهرقائمة Color .
كتابة الشفرة الخاصة بإختيار العنصر ( خروج ) من القائمة ( ملف )
Private Sub MnuExit_Click()
End
End Sub
كتابة الشفرة الخاصة بالنقر على العنصر ( أزرق ) من القائمة ( ألوان )
Private Sub MnuBlue_Click()
FRMMyMenu.BackColor = QBColor (1)
MnuBlue.Enabled = False
MnuGreen.Enabled = True
MnuRed.Enabled = True
End Sub
تؤدي الشفرة السابقة إلى تلوين النافذة FRMMyMenu باللون الأزرق ثم تعطيل العنصر ( أزرق ) في القائمة ( ألوان ) .
كتابة الشفرة الخاصة بالنقر على العنصر ( أخضر ) من القائمة ( ألوان )
Private Sub MnuGreen_Click()
FRMMyMenu.BackColor = QBColor (2)
MnuBlue.Enabled = True
MnuGreen.Enabled = False
MnuRed.Enabled = True
End Sub
كتابة الشفرة الخاصة بالنقر على العنصر ( أحمر ) من القائمة ( ألوان )
Private Sub MnuRed_Click()
FRMMyMenu.BackColor = QBColor (4)
MnuBlue.Enabled = True
MnuGreen.Enabled = True
MnuRed.Enabled = False
End Sub
تؤدي الشفرتين السابقتين إلى نفس عمل الشفرة الخاصة بالنقر على العنصر ( أزرق ) من القائمة ( ألوان ) ولكن مع إختلاف اللون فالأولى تؤدي إلى التلوين باللون الأخضر والثانية باللون الأحمر .
كتابة الشفرة الخاصة بالنقر على أيقونة اللون الأزرق من شريط الأدوات
Private Sub PICBlue_Click()
MnuBlue_Click
End Sub
كتابة الشفرة الخاصة بالنقر على أيقونة اللون الأخضر من شريط الأدوات
Private Sub PICGreen_Click()
MnuGreen_Click
End Sub
كتابة الشفرة الخاصة بالنقر على أيقونة اللون الأحمر من شريط الأدوات
Private Sub PICRed_Click()
MnuRed_Click
End Sub
تؤدي كل شفرة من الشفرات الثلاث السابقة إلى تنفيذ الشفرة التي تمثلها من الشفرات الخاصة بالنقر على العنصر ( أزرق – أخضر – أحمر ) من القائمة ( ألوان ) على الترتيب .
كتابة الشفرة الخاصة بإختيار العنصر ( أشرطة أدوات ) من القائمة ( أشرطة الحالة والأدوات )
Private Sub MnuToolBars_Click()
If MnuToolBars.Checked = True Then
PicToolBar1.Visible = False
PicToolBar2.Visible = False
MnuToolBars.Checked = False
Else
PicToolBar1.Visible = True
PicToolBar2.Visible = True
MnuToolBars.Checked = True
End if
End Sub
كتابة الشفرة الخاصة بإختيار العنصر ( أشرطة الحالة ) من القائمة ( أشرطة الحالة والأدوات )
Private Sub MnuStatusBars_Click()
If MnuStatusBars.Checked = True Then
PicStatusBar1.Visible = False
PicStatusBar2.Visible = False
MnuStatusBars.Checked = False
Else
PicStatusBar1.Visible = True
PicStatusBar2.Visible = True
MnuStatusBars.Checked = True
End if
End Sub
تختبر الشفرة السابقة قيمة الخاصية Checked ( تعليمة ) للعنصر ( أشرطة أدوات ) فإذا كانت القيمة صحيحة يخفي أشرطة الأدوات ToolBars1 و Tool Bar2 ويزيل التعليمة من أمام العنصر وبالمثل يختبر قيمة الخاصية Check للعنصر ( أشرطة الحالة ) فإذا كانت القيمة صحيحة أزال التعليمة وأخفى أشرطة الحالة من أمام العنصر .
البرنامج MenuGrow
الوظيفة
• عند نقر الزر ( إضافة عنصر ) يضاف عنصر قائمة إلى القائمة ( ملف )
• عند نقر الزر( حذف عنصر ) يحذف عنصر قائمة من القائمة ( ملف )
• عند إختيار أحد عناصر القائمة الجدد يرسم الشكل المناسب له مع ظهور رسالة " لقد إخترت رسم العنصر رقم : " بالإضافة إلى رقم العنصر .
البرمجة المرئية
Object Property Settings Object Property Setting
Form Name FRMMenuGrow CommandButton Name CBAdd – CBRemove
BorderStyle Caption إضافة عنصر- حذف عنصر
MoveAble F Default T – F – F
StartUpPosition Style 1
Caption القائمة المتزايدة Height
AutoRedraw T Left
Height Top
Left Width
Top Shape Name SHPShape
Width BorderWidth
Label Name LBLMessage FillColor
Alignment 2 FillStyle
Border Height
Height Left
Left Top
Top Width
Width Shap
والآن علينا إدراج قائمة من أيقونة Menu Editor
Menu Caption Remarks
ملف MnuFile
… خروج MnuExit
… - MnuDynamic Index = 0
كتابة الشفرة
نبدأ كتابة شفرتنا بالتصريح عن متغير عام داخل قسم التصريحات العامة لنستطيع التعامل معه من داخل أي شفرة
Option Explicit
Dim MenuIndex
كتابة شفرة تحميل النافذة
Private Sub Form_Load()
MenuIndex = 0
End Sub
نبدأ بقيمة مبدئية نلحقها بعداد العناصر وهي القيمة = 0
كتابة الشفرة الخاصة بالنقر على الزر ( إضافة عنصر )
Private Sub CBAddItem_Click()
If MenuIndex = 5 Then
MsgBox " هناك 5 عناصر قائمة بالفعل ، لذا لن نضيف هذا العنصر الجديد "
Exit Sub
Else
MenuIndex = MenuIndex + 1
Load MnuDynamic(MenuIndex)
MnuDynamic(MenuIndex).Caption = Str$(MenuIndex)
End If
End Sub
تختبر الشفرة السابقة عدد العناصر المضافة فإذا كان هناك 5 عناصر مضافة تظهر رسالة تحذيرية بوجود 5 عناصر مضافة ثم ينهي الشفرة وإذا كان هناك أقل من 5 عناصر يزيد عداد العناصر MenuIndex بمقدار ( 1 ) وتستخدم العبارة Load لإضافة العنصر الجديد ويتم تسمية هذا العنصر بإستخدام الخاصية Caption .
كتابة الشفرة الخاصة بالنقر على الزر ( حذف عنصر )
Private Sub CBRemove_Click()
If MenuIndex = 0 Then
MsgBox " آسف لا يوجد عناصر قائمة لتحذف ."
Exit Sub
Else
UnLoad MnuDynamic(MenuIndex)
MenuIndex = MenuIndex – 1
End If
End Sub
تختبر الشفرة السابقة عدد العناصر المضافة فإذا كان عدد العناصر المضافة ( 0 ) تظهر رسالة تحذيرية بأنه لا يوجد عناصر ثم ينهي الشفرة وإلا استخدم العبارة UnLoad لحذف العنصر الحالي ثم ينقص عداد العناصر MenuIndex بمقدار ( 1 ) .
كتابة الشفرة الخاصة بإختيار أحد العناصر المضافة
Private Sub MnuDynamic_Click(Index as Integer)
LBLMessge.Caption = " لقد إختارت العنصر : " + Str$(Index)
SHPShape.Shape = Index
End Sub
تؤدي الشفرة السابقة لظهور العبارة ( لقد إختارت العنصر : ) بالإضافة إلى ترتيب هذا العنصر ثم رسم الشكل الذي يناسب هذا الترتيب .
كتابة الشفرة الخاصة بإختيار العنصر ( خروج ) من القائمة ( ملف )
Private Sub MnuExit_Click()
End
End Sub
البرنامج PopUp
الوظيفة
عند نقر الزر الأيمن للفارة داخل النافذة تظهر قائمة منبثقة تحتوي على 3 عناصر بإختيار أحداها تظهر الصورة المقابلة لهذا العنصر .
البرمجة المرئية
Object Property Settings Object Property Settings
Form Name FRMPopUp Imageox Name IMGViewer
BorderStyle Stretch T
MoveAble F Height
StartUpPosition Left
Caption القائمة النبثقة Top
AutoRedraw T Width
Height ImageBox Name IMGPC – IMGClock – IMGTel
Left Visible F
Top Picture
Width
والآن يجب عليك إدراج الصور الثلاث التي تمثل العناصر الثلاث للقائمة المنبثقة ( حاسب – منبه – تليفون ) على الترتيب .


والآن علينا إدراج قائمة من أيقونة Menu Editor
Menu Caption Remarks
ملف MnuFile
… خروج MnuExit
عارض الصور MnuDisplayImages Visible Check Box = False
… حاسب MnuPc
… منبه MnuClock
… تليفون MnuPhone
كتابة الشفرة
كتابة شفرة تحميل النافذة
Private Sub Form_Load()
FrmPopUp.PopUpMenu MnuDisplayImages
End Sub
تستعمل الشفرة السابقة المنهج PopUpMenu لإظهار محتويات القائمة DisplayImages في شكل قائمة منبثقة .
كتابة الشفرة الخاصة بإختيار عنصر القائمة Pc
Private Sub MnuPc_Click()
ImgViewer.Picture = ImgPc.Picture
End Sub
كتابة الشفرة الخاصة بإختيار عنصر القائمة Clock
Private Sub MnuClock_Click()
ImgViewer.Picture = ImgClock.Picture
End Sub
كتابة الشفرة الخاصة بإختيار عنصر القائمة Tel
Private Sub MnuTel_Click()
ImgViewer.Picture = ImgTel.Picture
End Sub
تقوم الشفرات السابقة بإلحاق الصور ( حاسب – منبه – تليفون ) إلى الصورة العارضة ( ImgViewer ) على الترتيب .
ملاحظات
• يلزم لتصميم شريط أداة أو شريط حالة إستخدام الأداة Picture Box وحتى تقوم بدور شريط الأداة يجب ضبط الخاصية Align لتساوي ( 1 Align Top ) ولتصبح شريط حالة يجب أن تساوي الخاصية القيمة ( 2 Align Bottom ) .
• تستطيع تصميم القوائم بإستخدام ايقونة Menu Editor من شريط الإختصارات .

*****************
الفصل الرابع : برامج متعددة الوثائق
مقدمة
سنتعلم في هذا الفصل كيفية تصميم برامج ذات واجهات متعددة الوثائق Multi Document Interface .
البرامج ذات الواجهة المتعددة الوثائق
هي برامج تحوي عدة نوافذ أبناء تقع ضمن نافذة أب واحدة وتعمل داخلها فقط وضمن أحداثياتها فقط .
البرنامج MyMDIMulti
الوظيفة
• عند نقر زر ( جرس ) في شريط الحالة يستجيب البرنامج بإصدار صوت بسيط من السماعة الداخلية للحاسب .
• أختر أحد طرق ترتيب النوافذ الأبناء داخل النافذة الأب من داخل القائمة نوافذ وطرق الترتيب المتاحة هي ترتيب ( بشكل متتالي ) Cascade أو ( متجانب أفقيا ) Horizontal Tile أو ( متجانب عموديا ) Vertical Tile .
• بتصغير جميع النوافذ الأبناء في أماكن عشوائية ثم أختيار عنصر ( رتب كل الرموز ) Arrange Icons من القائمة ( نوافذ ) سترتيب الرموز الخاصة بالنوافذ الأبناء في سطر واحد أفقي أسفل نافذة الأب .
البرمجة المرئية
أولآ :-
قم بإنشاء مشروع قياسي جديد ثم إحذف النافذة Form1 بإختيار العنصر Remove Form من القائمة Project .
ثانيآ :-
إختار العنصر Add MDI Form من القائمة Project أو نقر أيقونة Add New Form ثم اختيار MDI Form . من العلم أن كل مشروع يحوي نافذة أب واحدة فتظهر النافذة الأب التي لها شكل أيقونة تختلف عن النوافذ القياسية .
ثالثآ :-
إنشاء 3 نوافذ قياسية بالطريقة العادية ثم تغير الخاصية MDI Child إلى القيمة True فنحصل على 3 نوافذ أبناء فنجد أيضا أن النوافذ الأبناء لها أيقونات مخالفة للأيقونات الخاصة بالنوافذ القياسية .
أختر النافذة Form1 من داخل نافذة مستعرض النوافذ ثم إختيار أيقونة View Object .
Object Property Settings Object Property Settings
Form Name FRMChild1 CommandButton Name CBCloseChild1
BorderStyle Style 1
Caption الأبن الأولى Picture
MoveAble F Caption غلق الأبن الأولى
StartUpPosition Cancel T
Height Height
Left Left
Top Top
Width Width

قائمة Caption
ملف MNUFile
… غلق النافذة MNUCloseMe
جرس MNUBeep
… جرس مرة MNUBeepONCE
… جرس مرتين MNUBeepTwice
كتابة الشفرة
كتابة الشفرة الخاصة بالنقر على الزر ( غلق الأبن الأول )
Private Sub CBCloseChild1_Click()
Unload Me
End Sub
تقوم الشفرة السابقة بإخفاء النافذة الأبن من داخل النافذة الأب .
كتابة الشفرة الخاصة بالعنصر ( جرس مرة ) من القائمة ( جرس )
Private Sub MNUBeepOnce_Click()
Beep
End Sub
كتابة الشفرة الخاصة بالعنصر ( جرس مرتين ) من القائمة ( جرس )
Private Sub MNUBeepTwice_Click()
Dim Counter as Long
Beep
For Counter = 0 To 20000
Next Counter
Beep
End Sub
يتم تعريف متغير ليكون عداد لحلقة تأخير زمني مابين الجرس الأول والثاني . وتختلف سرعة تنفيذ الحلقة بإختلاف نوع المعالج وسرعته في الحاسب مع العلم أن الطريقة السابقة ليست الطريقة المثلى لتنفيذ عملية التأخير الزمني .
كتابة الشفرة الخاصة بالختيار العنصر ( غلق النافذة ) من القائمة ( ملف )
Private Sub MNUCloseMe_Click()
Unload FrmChild1
End Sub
أختر النافذة Form2 من داخل نافذة مستعرض النوافذ ثم إختيار أيقونة View Object .
Object Property Settings Object Property Settings
Form Name FRMChild2 CommandButton Name CBCloseChild2
BorderStyle Style 1
Caption الأبن الثاني Picture
MoveAble F Caption غلق الأبن الثاني
StartUpPosition Cancel T
Height Height
Left Left
Top Top
Width Width
كتابة الشفرة
كتابة الشفرة الخاصة بالنقر على الزر ( غلق الأبن الثاني )
Private Sub CBCloseChild2_Click()
FRMChild2.Hide
End Sub
أختر النافذة Form3 من داخل نافذة مستعرض النوافذ ثم إختيار أيقونة View Object .
Object Property Settings Object Property Settings
Form Name FRMChild3 CommandButton Name CBCloseChild3
BorderStyle Style 1
Caption الأبن الثالث Picture
MoveAble F Caption غلق الأبن الثالث
StartUpPosition Cancel T
Height Height
Left Left
Top Top
Width Width
كتابة الشفرة
كتابة الشفرة الخاصة بالنقر على الزر ( غلق الأبن الثالث )
Private Sub CBCloseChild3_Click()
Me.Visible = True
End Sub
أختر النافذة الأب MyMDI
Object Property Settings
MDIForm Name FRMMyMDI
BorderStyle
Caption النافذة الأب
MoveAble F
StartUpPosition
Height
Left
Top
Width

Menu Caption Caption Caption
ملف MnuFile … الأبن الثالث MnuChild3 … ترتيب متتال MnuCascade
… خروج MnuExit … _ MnuSep … ترتيب أفقي MnuHoriz
عارض الأبناء MnuShow … عرض الأبناء MnuShow … ترتيب رأسي MnuVertical
… الأبن الأول MnuChild1 … إخفاء الكل MnuClear … ترتيب أيقونات MnuArrngAll
… الأبن الثاني MnuChild2 نوافذ MnuWin
تجهيز نموذج البداية
• علينا في البداية تجهيز نموذج البداية StartUp Form والذي يتم تشغيله في بداية تشغيل البرنامج .
• انقر الزر الأيمن للفارة على أي مجلد في نافذة مستعرض المشاريع واختر من القائمة المنبثقة العنصر Project Properties ومن قائمة اختيار نموذج البداية StartUp Object نختار النافذة FRMMyMDI ثم نقر الزر Ok
القوائم بالنسبة للنافذة الأبن الفعالة
تظهر النافذة الفعالة داخل النافذة الأب بينما تحل القوائم الخاصة بالنافذة الأبن الفعالة محل قوائم النافذة الأب ، أما في حالة أن النافذة الأبن لا تحوي قوائم فتظهر قوائم النافذة الأب .
كتابة الشفرة لتحميل النافذة الأب
Private Sub MDIForm_Click()
Load FRMChild1
Load FRMChild2
Load FRMChild3
End Sub
تستخدم الشفرة السابقة المنهج Load لتحميل النوافذ الأبناء الثلاثة داخل الذاكرة لسرعة التعامل معها وعرضها .
كتابة الشفرة الخاصة بالعنصر ( خروج ) من القائمة ( ملف )
Private Sub MnuExit_Click()
End
End Sub
كتابة الشفرة الخاصة بالعنصر ( عرض الأبن الأول )
Private Sub MnuChild1_Click()
FRMChild1.Visible = True
End Sub
كتابة الشفرة الخاصة بالعنصر ( عرض الأبن الثاني )
Private Sub MnuChild2_Click()
FRMChild2.Show
End Sub
كتابة الشفرة الخاصة بالعنصر ( عرض الأبن الثالث )
Private Sub MnuChild3_Click()
FRMChild3.Show 1
End Sub
كتابة الشفرة الخاصة بالعنصر ( عرض الأبناء )
Private Sub MnuShow_Click()
FRMChild1.Show
FRMChild2.Show
FRMChild3.Show
End Sub
كتابة الشفرة الخاصة بالعنصر ( إخفاء الكل )
Private Sub MnuClear_Click()
FRMChild1.Hide
FRMChild2.Hide
FRMChild3.Hide
End Sub
كتابة الشفرة الخاصة بالعنصر ( ترتيب متتال )
Private Sub MnuCascade_Click()
FRMMyMDI.Arrange vbCasecade
End Sub
كتابة الشفرة الخاصة بالعنصر ( ترتيب أفقي )
Private Sub MnuHoriz_Click()
FRMMyMDI.Arrange vbTileHorizontal
End Sub
كتابة الشفرة الخاصة بالعنصر ( ترتيب رأسي )
Private Sub MnuVeritical_Click()
FRMMyMDI.Arrange vbTileVertical
End Sub
كتابة الشفرة الخاصة بالعنصر ( ترتيب أيقونات )
Private Sub MnuArrangeAll_Click()
FRMMyMDI.Arrange vbArrangeIcons
End Sub

جزى الله خيرا كل من ساهم فيه

التعليقات



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

جميع الحقوق محفوظة

طيبة مصرية || Egyptian Tiaba

2021