PDA

View Full Version : قطع شدن ارتباط یک کمپوننت با event های اون



ariobarzan
سه شنبه 16 مرداد 1397, 21:59 عصر
با سلام
بعضی وقت ها حالتی پیش میاد که ارتباط یک کمپوننت با event های اون قطع میشه در صورتی که کد مربوطه وجود داره علت چیه و چطور میشه موقع کمپایل شدن مطمئن بشیم که این حالت هیچ جای برنامه اتفاق نیوفتاده؟
اگه بخوام یه کم بیشتر توضیح بدم : فرض کنید که من ده تا فرم دارم و تو هر فرم هم یه تعداد کمپوننت استاندارد دلفی هست حالا بفرض روی event یک DBGrid موقع OnCellClick اون کدی نوشتیم که اطلاعات رکورد مربوطه را بخونه و یک کاری انجام بده و تا اینجا هم مشکلی نیست . حالا بعد از چند نسخه که نرم افزار را در جاهای دیگه تغییر دادیم یه روز کاربر تماس میگیره و میگه روی این جدول که کلیک میکنم اتفاق خاصی نمی افته :افسرده: بعد که میام event را چک کنم می بینم که خالیه :متفکر: وقتی دابل کلیک می کنم که دوباره کد برنامه را بنویسم در کمال تعجب می بینم که کد وجود داره و بعد هم کمپایل و بدون هیچ کار خاصی مسئله حل میشه البته چند بار هم پیش اومده که کاربر تماس گرفته و گفته توی یک فرم دیگه هم مثلا فلان کلید کار نمی کنه و بعد هم همین داستان
بنظر میاد موقع کمپایل شدن اینا را جا گذاشته :لبخند:
علت چیه و چطور میشه موقع کمپایل شدن مطمئن بشیم که این حالت هیچ جای برنامه اتفاق نیوفتاده؟ ممنون

hp1361
پنج شنبه 18 مرداد 1397, 11:36 صبح
با سلام
بعضی وقت ها حالتی پیش میاد که ارتباط یک کمپوننت با event های اون قطع میشه در صورتی که کد مربوطه وجود داره علت چیه و چطور میشه موقع کمپایل شدن مطمئن بشیم که این حالت هیچ جای برنامه اتفاق نیوفتاده؟
اگه بخوام یه کم بیشتر توضیح بدم : فرض کنید که من ده تا فرم دارم و تو هر فرم هم یه تعداد کمپوننت استاندارد دلفی هست حالا بفرض روی event یک DBGrid موقع OnCellClick اون کدی نوشتیم که اطلاعات رکورد مربوطه را بخونه و یک کاری انجام بده و تا اینجا هم مشکلی نیست . حالا بعد از چند نسخه که نرم افزار را در جاهای دیگه تغییر دادیم یه روز کاربر تماس میگیره و میگه روی این جدول که کلیک میکنم اتفاق خاصی نمی افته :افسرده: بعد که میام event را چک کنم می بینم که خالیه :متفکر: وقتی دابل کلیک می کنم که دوباره کد برنامه را بنویسم در کمال تعجب می بینم که کد وجود داره و بعد هم کمپایل و بدون هیچ کار خاصی مسئله حل میشه البته چند بار هم پیش اومده که کاربر تماس گرفته و گفته توی یک فرم دیگه هم مثلا فلان کلید کار نمی کنه و بعد هم همین داستان
بنظر میاد موقع کمپایل شدن اینا را جا گذاشته :لبخند:
علت چیه و چطور میشه موقع کمپایل شدن مطمئن بشیم که این حالت هیچ جای برنامه اتفاق نیوفتاده؟ ممنون


سلام

یکی از دلایل میتونه این باشه که مثلا کامپوننت ها رو از روی فرم کات کرده اید و برده اید جای دیگه قرار دادید. حالا اگر دوباره سرجاشون برگردونید مجددا رویداد ها به کامپوننت تخصیص داده نخواهد شد و باید مثلا برای OnChange یکبار روی کامپوننت کلیک کنید

یوسف زالی
یک شنبه 21 مرداد 1397, 13:27 عصر
برای این کار باید فایل DFM فرم هاتون رو چک کنید و ببینید متدهای تعریف شده در قسمت Published فرم هاتون به رویدادی اختصاص پیدا کرده اند یا خیر.
این روش کلی است و دقیق نیست. دلیلش هم استفاده احتمالی از رویدادها بصورت ران تایم است.
می تونید پراپرتی های فرم رو لیست کنید، ایوینت هاش رو در بیارید، بعد در اشیا سرچ کنید که از این ایوینت استفاده شده یا نه.