أبو آدم قام بنشر مايو 20, 2012 قام بنشر مايو 20, 2012 وعند الحاجة لتفاصيل لكل حادثة حديث ، ولكل مقام مقال ..... ............
محمد ايمن قام بنشر مايو 21, 2012 الكاتب قام بنشر مايو 21, 2012 بسم الله الرحمن الرحيم منذ ان حملت المرفق و انا افكر في طريقة لشرح الفرق بينهما و ساحاول ان اشرح عسى ان يستفاد منها اولا : الكود يتم وضع الكود في زر امر او عند تحميل نموذج او اغلاقه و يكون الكود خاصا بمعنى ينفذ عند حدث الضغط على زر الامر ( oopen ) مثلا private sub oopen_click docmd.openform"11" end sub نلاحظ في بداية الكود كلمة ( private ) اي خاص و الكود هنا ينفذ فقط عند الضغط على زر ( oopen ) ثانيا : الوحدات النمطية تحتوي الوحدات النمطية على اكواد او وظائف و على عكس ( الكود ) يمكن استدعاء الوحدة النمطية في اي نموذج وهي لا تتحس بالأحداث مثلا Public Sub openform() DoCmd.openform "ff" End Sub نلاحظ وجود كلمة ( public ) اي عمومي يقوم هذا الكود بفتح النموذج ( ff ) و يتم استدعائه بهذا الشكل Private Sub Command0_Click() Call openform End Sub حيث نضع هذا الكود في اي زر موجود ضمن اي نموذج فائدة : لا يجوز تسمية الوحدة النمطية بنفس اسم احد الكودات الموجود داخلها ( مثلا لا يجوز تسمية الوحدة النمطية السابقة باسم openform بل يجب اعطائها اي اسم آخر ) فائدة : لا يمكن ان تكتب في الوحدة النمطية ( oopen_click ) لان الوحدة النمطية لا تتحسس بالأحداث ثالثا : الوحدة النمطية للفئة الوحدة النمطية للفئة تجمع بين الوحدة النمطية و الكود بمعنى آخر الكود التالي ينفذ عند فتح النموذج private sub form_open Set Anim = New clsFormAnimate end sub و عملية فتح النموذج فعليا هي حدث ولكن لا يمكن ان نكتب الكود السابق ضمن وحدة نمطية حتى لو استعملنا كلمة ( public ) لان الوحدة النمطية لا تتحس بالأحداث ( كما ذكرنا سابقا ) انما تخزن كودا عاما يتم تعريفه باسمه و ضمن اسمه نكتب ما نريد ان ينفذ لكن الوحدة النمطية للفئة يمكن ان تتحس بالأحداث و تتعامل معها مثلا يمكن ان تكتب ضمن الوحدة النمطية للفئة Private Sub mForm_Load() MsgBox "hi", vbInformation End Sub الكود السابق يعطي رسالة ( hi ) عند تحميل نموذج و لكن اي نموذج !!!! الجواب هو اي نموذج نرغب به فقط علينا استدعاء الوحدة النمطية للفئة لتنفيذ هذا الكود فائدة : الوحدة النمطية للفئة تستدعى باسمها على عكس الوحدات النمطية كيف يتم استدعاء الوحدة النمطية للفئة ؟؟ 1 - ننشئ وحدة نمطية للفئة و نسميها ( open1 ) نكتب الكود التالي في قسم التصريحات العامة للوحدة النمطية للفئة Public withevents mform As Access.Form حيث يتم تعريف المتغير ( mform ) كنموذج 2 - نكتب هذا الكود في الوحدة النمطية للفئة Private Sub Class_Initialize() mForm_Load Beep End Sub عند تحميل الوحدة النمطية اذهب الى ( mform_load ) 3 - نضيف هذا الكود الى الوحدة النمطية للفئة Private Sub mForm_Load() MsgBox "hi", vbInformation End Sub عند تحميل ( mform ) اظهر رسالة ( hi ) و طبعا ( mform ) تم تعريفه سابقا كنموذج اكسس 4 - نكتب هذا الكود في قسم التصريحات العامة للنموذج الذي نرغب ان يتم استدعاء الوحدة النمطية للفئة فيه و ليكن مثلا ( 123 ) Dim Anim As open1 تم تعريف متغير ( anim ) كوحدة نمطية للفئة 5 - نكتب هذا الكود في حدث تحميل النموذج ( 123 ) Set Anim = New open1 تم ضبط المتغير ليستدعي الوحدة النمطية للفئة فائدة : لايمكن كتابة الكود التالي لاستدعاء الوحدة النمطية للفئة Private Sub Form_Load() Call open1 End Sub الكود المكتوب ضمن الوحدة النمطية للفئة السابقة يقوم باصدار صوت تنبيه و يظهر رسالة مكتوب فيها ( hi ) الكثير يسأل هل يجب ان اكتب كل هذه الجريدة من اجل صوت تنبيه و رسالة ترحيب الجواب هو لا ولكن يتم انشاء الوحدات النمطية للفئة من اجل عدد نماذج اكبر و عمليات كودات اكبر و في النهاية ربما يستطيع المرفق ان يشرح افضل مني وارجو ممن يستطيع ان يشرح افضل مني ان يسهم في شرح الموضوع و اعتذر على الإطالة مثال عن انشاء الوحدات النمطية و الوحدات النمطية للفئة.rar 3
أبو آدم قام بنشر مايو 21, 2012 قام بنشر مايو 21, 2012 أداء جيد جزيت خيراً وسّع مستوى التعقيد لتتضح الأمور أكثر ويكون الأداء أشمل وإلى الأمام .....
محمد ايمن قام بنشر مايو 21, 2012 الكاتب قام بنشر مايو 21, 2012 جزاك الله كل خير اخي ابو آدم لكن لي استفسار بسيط مامعنى ( وسّع مستوى التعقيد لتتضح الأمور أكثر ويكون الأداء أشمل )
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.