
مشاركة: تعلم فجول بيسك 6 بالتفصيل
الفصل الرابع : برامج متعددة الوثائق
مقدمة
سنتعلم في هذا الفصل كيفية تصميم برامج ذات واجهات متعددة الوثائق 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