۱۸ تير ۱۳۹۰, ۰۹:۴۶ عصر
با سلام
ما متغير رو به صورت زير تعريف ميكنم :
در این جلسه قصد دارم مقداری در خصوص فراخوانی تابع Initialize موجود در داخل Trial Keeper Professional توضیحاتی رو ارائه کنم .
در پروسه كنترل بايد دقت كنيد كه حتماً روال كنترلی رو به صورت چندين باره در داخل خود برنامه هم تكرار كنيد ، تا در صورت غير فعال شدن هر يك از نقاط كنترلي در محلهايي ديگه بتونيد بر روي عملكرد قفل صحه گذاري كنيد .
تكرار چندين باره عمليات فراخواني قفل ميتونه تا حدودي بر روي سرعت اجراي خود برنامه تاثير گذار باشه ، نكات زير ميتونه به شما در كاهش اين زمان كمك كنه .
در داخل Trial Keeper Professional اگه دقت كرده باشيد وضعيت جاري قفل از طريق كدي كه از تابع Initialize بازگردانده ميشه قابل تشخيصه .
به طور مثال كد شماره 1 نشان دهنده عدم پايان دوره آزمايشي و كد شماره 10 نشاندهنده فعال بودن و يا همان ثبت بودن برنامه ميباشد .
شما ممكنه در نقاط مختلفي بخوايد اين تابع رو بارگذاري كنيد و با استفاده از مقدار برگشتي اون به وضعيت جاري پي ببريد . به طور مثال شما ممكنه اين كد رو در داخل روال انتساب داده شده به دكمه اي كه عمليات نمايش يك گزارش رو به انجام ميرسونه فراخواني كنيد . در صورتي كه اين گزارش در يك جلسه كاري به دفعات زيادي از سوي كاربر مورد استفاده قرار ميگيره ، فراخواني چندين باره قفل ميتونه تا حدودي براي كاربر ايجاد مزاحمت كنه ( با توجه به مكثهاي صورت پذيرفته تا زمان اجراي فرمان مورد نظر )
راه حل پيشنهادي رو در ادامه ذكر ميكنم تا سربار كاري رو به نحوي قابل توجه كاهش بديم :
همونطوري كه ميدونيد ميشه اقدام به تعريف يك متغير كرد تا اين متغير عمليات نگهداري يك نوع داده رو به عهده بگيره .
در پروسه كنترل بايد دقت كنيد كه حتماً روال كنترلی رو به صورت چندين باره در داخل خود برنامه هم تكرار كنيد ، تا در صورت غير فعال شدن هر يك از نقاط كنترلي در محلهايي ديگه بتونيد بر روي عملكرد قفل صحه گذاري كنيد .
تكرار چندين باره عمليات فراخواني قفل ميتونه تا حدودي بر روي سرعت اجراي خود برنامه تاثير گذار باشه ، نكات زير ميتونه به شما در كاهش اين زمان كمك كنه .
در داخل Trial Keeper Professional اگه دقت كرده باشيد وضعيت جاري قفل از طريق كدي كه از تابع Initialize بازگردانده ميشه قابل تشخيصه .
به طور مثال كد شماره 1 نشان دهنده عدم پايان دوره آزمايشي و كد شماره 10 نشاندهنده فعال بودن و يا همان ثبت بودن برنامه ميباشد .
شما ممكنه در نقاط مختلفي بخوايد اين تابع رو بارگذاري كنيد و با استفاده از مقدار برگشتي اون به وضعيت جاري پي ببريد . به طور مثال شما ممكنه اين كد رو در داخل روال انتساب داده شده به دكمه اي كه عمليات نمايش يك گزارش رو به انجام ميرسونه فراخواني كنيد . در صورتي كه اين گزارش در يك جلسه كاري به دفعات زيادي از سوي كاربر مورد استفاده قرار ميگيره ، فراخواني چندين باره قفل ميتونه تا حدودي براي كاربر ايجاد مزاحمت كنه ( با توجه به مكثهاي صورت پذيرفته تا زمان اجراي فرمان مورد نظر )
راه حل پيشنهادي رو در ادامه ذكر ميكنم تا سربار كاري رو به نحوي قابل توجه كاهش بديم :
همونطوري كه ميدونيد ميشه اقدام به تعريف يك متغير كرد تا اين متغير عمليات نگهداري يك نوع داده رو به عهده بگيره .
ما متغير رو به صورت زير تعريف ميكنم :
Dim XYZ As Byte
دقت كنيد كه نام XYZ اختياري بوده و شما هر نامي رو ميتونيد به اين متغير اختصاص بديد .
نوع اين متغير رو هم از نوع همون مقدار برگشتي از تابع Initialize قرار داديم يعني Byte .
در داخل فرمها و گزارشها ميتونيد اين قطعه كد رو در بالاترين بخش ماژول موجود در داخل هر يك از اونها كپي كنيد .
در اين حالت شما اين متغير رو به نحوي تعريف كرديد كه براي تمامي روالهاي موجود در داخل فرم و يا گزارش مورد نظر قابل دسترسي باشه .
حال با يك بار فراخواني تابع Initialize و انتساب اون به اين متغير ، در دفعات بعدي شما فقط نيار داريد كه مقدار موجود در داخل اين متغير رو مورد بررسي قرار بديد . به قطعه كد زير توجه كنيد :
نوع اين متغير رو هم از نوع همون مقدار برگشتي از تابع Initialize قرار داديم يعني Byte .
در داخل فرمها و گزارشها ميتونيد اين قطعه كد رو در بالاترين بخش ماژول موجود در داخل هر يك از اونها كپي كنيد .
در اين حالت شما اين متغير رو به نحوي تعريف كرديد كه براي تمامي روالهاي موجود در داخل فرم و يا گزارش مورد نظر قابل دسترسي باشه .
حال با يك بار فراخواني تابع Initialize و انتساب اون به اين متغير ، در دفعات بعدي شما فقط نيار داريد كه مقدار موجود در داخل اين متغير رو مورد بررسي قرار بديد . به قطعه كد زير توجه كنيد :
کد:
XYZ=Initialize( ….. )
قبلاً ممكن بود كه شما از خروجي تابع Initialize به صورت زير استفاده مي كرديد :
به طور مثال در داخل روال On Click يك دكمه ، دستور زير رو فراخواني كرديد :
به طور مثال در داخل روال On Click يك دكمه ، دستور زير رو فراخواني كرديد :
کد:
If Initialize(…..)<>10 Then
MsgBox "Sample Nag Message"
End if
در قطعه كد بالا قصد داريد كه كاربر در صورتي كه برنامه رو ثبت نكرده پيغامي مزاحم رو مشاهده كنه . اگه دقت كرده باشيد در اين حالت كاربر علاوه برمشاهده پيغام مزاحم با تاخيري در اجراي فرمان مورد نظرش هم مواجه ميشه .
كد بالا رو ميتونيد به صورت زير بنويسيد :
كد بالا رو ميتونيد به صورت زير بنويسيد :
کد:
If XYZ<>10 Then
MsgBox "Sample Nag Message"
End if
نتيجه در هر دو حالت هموني ميشه كه شما انتظار داريد ولي اين بار بدون تاخير ناشي از اجراي تابع Initialize
نكته : در حالت دوم شما نياز داريد كه حداقل يك بار تابع Initialize رو فراخواني كرده باشيد . اين روال ميتونه در داخل رويدار On Load فرم بوده باشه . در اين حالت مقدار برگشتي به XYZ انتساب داده ميشه و شما ميتونيد از اون مقدار به دفعات متوالي در نقاط مختلف استفاده به عمل بياريد ، بدون اينكه تاثيري بر روي كارايي برنامه داشته باشه .
خوشبختانه تابع Initialize به گونه اي طراحي شده كه حتي در صورت دور زدن روال كنترلي موجود در داخل برنامه شما ( فراخواني تابع ) كد برگشتي به گونه اي خواهد بود كه دال بر عدم ثبت بودن برنامه خواهد داشت و ليكن جهت حصول اطمينان بيشتر توجه شما رو به نكات زير جلب ميكنم :
تابع Initialize رو حداقل در دو رويداد متفاوت مورد بازخواني قرار بديد به طور مثال در دو رويداد On Load و On Activate . در انتخاب اين رويدادها به نكات زير توجه داشته باشيد :
رويداد مرتباً تكرار نشود ( مثل On Current )
در داخل رويدادهاي مورد نظر عملياتي ديگر نيز به انجام برسه تا در صورت حذف رويداد توسط كركر بخشي ديگر از برنامه نيز مختل بشه .
به طور مثال در داخل رويدار On Load علاوه بر فراخواني قفل عمليات انتساب Control Source رو هم به انجام برسونيد .
امكان فراخواني قفل در داخل رويدادهاي تكرار پذير نيز ميتونه ايده اي بسيار مناسب بوده باشه و ليكن جهت انجام اون نياز به انجام مرحله اي اضافه داريد تا در مجموع منجر به كاهش زمان سربار فراخواني تابع Initialize بشيد .
ادامه آموزش رو به جلسه بعد موكول ميكنم .
موفق باشيد
نكته : در حالت دوم شما نياز داريد كه حداقل يك بار تابع Initialize رو فراخواني كرده باشيد . اين روال ميتونه در داخل رويدار On Load فرم بوده باشه . در اين حالت مقدار برگشتي به XYZ انتساب داده ميشه و شما ميتونيد از اون مقدار به دفعات متوالي در نقاط مختلف استفاده به عمل بياريد ، بدون اينكه تاثيري بر روي كارايي برنامه داشته باشه .
خوشبختانه تابع Initialize به گونه اي طراحي شده كه حتي در صورت دور زدن روال كنترلي موجود در داخل برنامه شما ( فراخواني تابع ) كد برگشتي به گونه اي خواهد بود كه دال بر عدم ثبت بودن برنامه خواهد داشت و ليكن جهت حصول اطمينان بيشتر توجه شما رو به نكات زير جلب ميكنم :
تابع Initialize رو حداقل در دو رويداد متفاوت مورد بازخواني قرار بديد به طور مثال در دو رويداد On Load و On Activate . در انتخاب اين رويدادها به نكات زير توجه داشته باشيد :
رويداد مرتباً تكرار نشود ( مثل On Current )
در داخل رويدادهاي مورد نظر عملياتي ديگر نيز به انجام برسه تا در صورت حذف رويداد توسط كركر بخشي ديگر از برنامه نيز مختل بشه .
به طور مثال در داخل رويدار On Load علاوه بر فراخواني قفل عمليات انتساب Control Source رو هم به انجام برسونيد .
امكان فراخواني قفل در داخل رويدادهاي تكرار پذير نيز ميتونه ايده اي بسيار مناسب بوده باشه و ليكن جهت انجام اون نياز به انجام مرحله اي اضافه داريد تا در مجموع منجر به كاهش زمان سربار فراخواني تابع Initialize بشيد .
ادامه آموزش رو به جلسه بعد موكول ميكنم .
موفق باشيد