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

الإشارة إلى النماذج من الرئيسية إلى الفرعية ، والعكس

مغلق
بدأه أحمد الحربي في 11 أكتوبر 2006 · 7 رد · 2,109 مشاهدة · في قسم أرشيف النماذج والنماذج الفرعية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحباً بكم يا سادة يا كرام .. وسلامٌ من الله عليكم ورحمة منه وبركة

سيداتي آنساتي سادتي ..

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

مثال توضيحي نظري ..

لدينا ..

نموذجMain = رئيسي

نموذج1 = فرعي1 .. يعني أن هذا النموذج وضع داخل النموذجMain

نموذج2 = فرعي2 .. يعني أن هذا النموذج وضع داخل النموذج1

نموذج3 = فرعي3.. يعني أن هذا النموذج وضع داخل النموذج2

لاحظ أنها نماذج ساكنة في بطون بعضها البعض ، فعند عرضك للنموذجMain سترى بداخله نموذج1 ، وبداخل النموذج1 سترى النموذج2 ، وبداخل النموذج2 سترى النموذج3 ، كلها في شاشة واحدة ..

سوف أتطرق إلى النقاط التالية من خلال هذا المثال ..

* الوصول إلى نموذج3 من خلال النموذج Main ، معنى هذا أنني لابد أن أمر بالنموذج1 ثم 2 بالترتيب

* الرجوع العكسي والوصول إلى النموذجMain من خلال النموذج3 ، ومعنى هذا أنني لابد أن أمر على النموذج2 ثم 1 بالترتيب

* الوصول إلى خصائص النماذج وتغييرها

* فلترة النماذج

أولاً .. أحبتي الكرام

يجب محاولة فهم هذه المعاملات الثلاث ..

* النقطة (0)

وتستخدم لتحديد خواص (مربع نص ، عنوان ، زر أمر خاصية في نموذج ... الخ) سنضرب أمثلة متنوعة عليها إن شاء الله تعالى

* الاستفهام (!)

ويستخدم لتحديد (النموذج ، مربع النص ، عنوان ، زر أمر ... الخ) انتبه فهو لتحديد العنصر لا خصائصه ، سنضرب أمثلة متنوعة عليها إن شاء الله تعالى

* النقطة مع كلمة فورم (form.)

وتستخدم للانتقال إلى خصائص النماذج الفرعية

* علامة يساوي (=)

وتستخدم لإسناد قيمة خاصية ، كملء مربع نص ، عنوان .. كما تستخدم لتحديد قيمة خاصية منطقية True & False

ملاحظات

* يُعامل النموذج الفرعي معاملة الخصائص للنموذج الرئيسي ، فيُشار إليه كابن له ، لذا فيشار إليه بالنقطة .

* يُشار إلى النموذج الرئيسي كأب من خلال النموذج الفرعي ، بالعبارة Parent

* يُختصر الإشارة إلى النموذج الذي ننفذ الأمر من خلاله بالكلمة Me بدلاً من كتابة كلمة Forms

بالطبع .. غالباً ما نستخدم جميع هذه المعاملات في سطر واحد ، أي في عبارة واحدة .

تطبيقات ..

** النموذج الرئيسي .. frmMain

* الإشارة إلى خصائص النموذج الرئيسي .. من داخله ، لا من داخل أحد النماذج الفرعية .. سنتخدم العبارة Me

Me.AllowAdditions = True
Me.AllowDeletions = False
Me.AllowEdits = False
Me.DataEntry =  True
Me.Caption="النموذج الرئيسي "

في الأسطر الخمسة.. حددنا النموذج الذي نريد الوصول إلى خصائصه وعناصره بالكلمة Me ، ثم حددنا الخاصية بالمعامل النقطة ، ثم أسندنا القيمة بالمعامل =

في المثال السابق .. أتحنا الإضافة ، وإدخال البيانات بالقيمة True ومنعنا الحذف والتحرير بالقيمة False ، وحددنا عنوان النموذج .

* الإشارة إلى عنصر تحكم في النموذج رئيسي .. من داخله ، لا من داخل أحد النماذج الفرعية ..

Me.Lable1.Caption =  "بسم الله الرحمن الرحيم"
Me.TextBox1.Enabled=False
Me.command1.Visible= False

في الأسطر الثلاثة ، حددنا النموذج الذي نريد الوصول إلى خصائصه وعناصره بالكلمة Me ، ثم حددنا عنصر التحكم بالمعامل النقطة ، ثم أسندنا القيمة بالمعامل =

في المثال السابق .. حددنا عنوان عنصر تحكم العنوان ، ومنعنا الوصول إلى مربع النص ، وأخفينا زر الأمر عن الأنظار ..

ملاحظة .. بالطبع أنت لا تقوم بتنفيذ هذه الأوامر إلا من خلال شروط ، إذا حصل كذا فافعل كذا .. وهكذا ..

** النموذج الفرعي الأول .. frm1

هذا النموذج يوجد داخل النموذج الرئيسي .. وبهذا يكون لدينا نموذجان فقط

* الإشارة إلى خصائصه من خلال النموذج الرئيسي ..

Me.frm1.Form.DataEntry = True
Me.frm1.Form.Visible=False

Me.frm1.Form.Filter = "field1=" & Me.txt1
Forms!frm1.Form.FilterOn = True

field1 = حقل في النموذج الفرعي1

txt1 = حقل في النموذج الرئيسي

فقمنا بفلترة وتصفية سجلات النموذج الفرعي1 بالقيمة الموجودة في حقل النموذج الرئيسي

ملاحظة .. تستطيع حذف Form. ليكون هكذا ..

Me.frm1.DataEntry = True
Me.frm1.Visible=False

* إلإشارة إلى خصائص عناصر تحكم النموذج الفرعي من خلال النموذج الرئيسي ..

Me.frm1.Form!TextBox2.Text= "الفريق العربي للبرمجة"
Me.TextBox1=Me.frm1.Form!TextBox2

في السطر الأول ملأنا مربع النص2 في النموذج الفرعي بالقيمة "الفريق العربي للبرمجة" ، وفي السطر الثاني ملأنا مربع النص في النموذج الرئيسي بمحتويات مربع النص الفرعي

** النموذج الفرعي الثاني .. frm2

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

* الإشارة إلى خصائصه من خلال النموذج الرئيسي .. انتبه سنمر مروراً إجبارياً بالنموذج الفرعي1

Me.frm1.Form!frm2.Form.Visible = False

وتستطيع حذف Form. بين أسماء النماذج .. ليكون هكذا ..

Me.frm1!frm2.Form.Visible = False

لكنك لا تستطيع حذف كلمة Form المباشرة والملتصقة بخصائص النموذج مباشرة ، أقصد

Form.Visible = False

* إلإشارة إلى خصائص عناصر تحكم النموذج الفرعي الثاني من خلال النموذج الرئيسي ..

MsgBox Me.frm1.Form!frm2.Form!txtbox3

** النموذج الفرعي الثالث .. frm3

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

* الإشارة إلى خصائصه من خلال النموذج الرئيسي .. انتبه سنمر مروراً إجبارياً بالنموذج الفرعي1 ثم النموذج الفرعي2

Me.frm1.Form!frm2.Form!frm3.Visible = False

* إلإشارة إلى خصائص عناصر تحكم النموذج الفرعي الثاني من خلال النموذج الرئيسي ..

MsgBox Me.frm1.Form!frm2.Form!frm3!txtbox4

** عكس المسار ، والإشارة إلى النموذج الرئيسي من خلال النماذج الفرعية .

* النموذج الفرعي1 .. frm1

الإشارة إلى خاصية العنوان للنموذج الرئيسي ..

Me.Parent.Form.Caption = "شاشة الفريق العربي للبرمجة"

الإشارة إلى قيمة مربع النص في النموذج الرئيسي ..

MsgBox Me.Parent.Form!txtBox1

* النموذج الفرعي2 .. frm2

الإشارة إلى خاصية العنوان للنموذج الرئيسي ..

Me.Parent.Form.Parent.Form.Caption = "شاشة الفريق العربي للبرمجة"

الإشارة إلى قيمة مربع النص في النموذج الرئيسي ..

Me.Parent.Form.Parent.Form!txtBox1 = "Ok"

* النموذج الفرعي3 .. frm3

تماماً مثل النموذج الفرعي2 إلا أنك تكرر .Form.Parent. بعدد النماذج الفرعية التي تمر بها

نماذج فرعية في نماذج رئيسية أخرى ..

** الإشارة إلى نموذج فرعي في نموذج رئيسي خارجي وليس الذي الذي عليه التركيز ، لكن ذلك النموذج مفتوح

سنستخدم الكلمة الأساسية Forms للإشارة إلى مجموعة النماذج ، مما يعني أننا لا نستطيع استخدام الكلمة Me

* إخفاء النموذج الفرعي الأول ، وبالتالي تختفي النماذج التي بداخله ..

Forms!frmMain2.Form!frm1.Form.Visible = False

* إخفاء النموذج الفرعي الثاني ، وبالتالي تختفي النماذج التي بداخله ..

Forms!frmMain2.Form!frm1.Form!frm2.Form.Visible = False

* إخفاء النموذج الفرعي الثالث فقط ..

Forms!frmMain2.Form!frm1.Form!frm2.Form!frm3.Form.Visible = False

قل مثل ذلك في الوصول إلى عناصر التحكم ، كما مر معك ..

* الإشارة إلى النماذج الفرعية في الشاشة1 ، من خلال النماذج الفرعية في الشاشة2 ..

مثلاً .. الإشارة إلى النموذج الفرعي3 في الشاشة1 ، من خلال النموذج الفرعي3 في الشاشة2

هنا ، نفعل تماماً كما فعلنا مع النموذج الرئيسي ، كما مر ، ولا فرق في ذلك .. هذا يعني أنه لا يلزم أن نمر على نماذج الآباء كما فعلنا سابقاً مع النموذج الرئيسي ونماذجه الفرعية ..

وفقكم الله جميعاً .. وكل عام وأنتم بخير

وأي سؤال .. أنا حاضر ، ومنكم نستفيد

#2

السلام عليكم

اخي الكريم ممكن مثال تزين به الشرح الممتاز جدا ويكون من ابداعاتك التي عودتنا عليها

بالله التوفيق

Microsoft Certified DataBase Administrator MCDBA

#3

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

سأفعل إن شاء الله .. ولكن أحتاج إلى وقتٍ .. لأنني مشغول جداً .. ونسأل الله الإعانة

#4

وهذا مثال تطبيقي

db_frmMain_frmSub.rar

#5

أخى الكريم أحمد الحربى بارك الله فيك على هذا الشرح الوافى والقيم وننتظر المزيد

#6

وفيك بارك أخي الكريم .. إتقان

وفقك الله

#7

جزاك الله خيراً أستاذ أحـــــــــمد على الشرح الوافي والمثال الرائع .

ويعتبر هذا الشرح هو بداية قوية لهذا القسم (( قسم النماذج والنماذج الفرعية )) .

تحياتي ..

#8

لكن هذه الاوامر تعمل فقط داخل ازرار الأوامر, فمثلا لا تعمل فى الفورم لوود , فمثلا هذا الامر يعمل ونفذ المطلوب

Private Sub go_Click()

Me.domain.Form.AllowAdditions = False

End Sub

أما هذا الأمر

Private Sub Form_Load()

Me.domain.AllowAdditions = True

End Sub

أو حتى هذا

Private Sub Form_Load()

Me.domain.form.AllowAdditions = True

End Sub

أو هذا

Private Sub Form_Load()

Me.domain.form.AllowAdditions = True

End Sub

فلا ينفذ الأمر

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…