PDA

View Full Version : اجرای یک رویداد یک شی توسط یک رویداد دیگر همان شی...



alidehban
یک شنبه 08 فروردین 1389, 01:31 صبح
با سلام....
من یه مقدار جستجو کردم ،راستش گیر نیاوردم مطلبی با این موضوع....
میخواستم به فرض رویداد keypress یک combo رو در رویداد onchange خودش صدا کنم یعنی کاری که در keypress انجام میده رو اینطرف دوباره ننویسم....
ممنون از راهنمایی اساتید

SAASTN
یک شنبه 08 فروردین 1389, 02:23 صبح
اگر رویداد ها از یک جنس باشند مثلا هر دو TNotifyEvent باشند میشه هر دو رو با یک روال مقداردهی کرد. اما در مورد مثالی که زدید این طور نیست (پارامتر های این دو رویداد با هم فرق می کنه). کار درست اینه که عمل مشترک رو در یک روال مجزا بنویسید و در هر دو رویداد اون روال رو فراخونی کنید.
در ضمن فرا خونی رویداد یک کلاس هم ممکنه. توجه کنید که رویداد ها property هایی از جنس روال هستند و یکه روال به اونها اختصاص داده می شه که خود اون روال قابل فراخونیه. مثلا اگر رویداد OnChange کومبو توی فرمتون به اسم MyComboOnChange تعریف شده باشه توی OnKeyPress می نویسید:

MyComboOnChange(MyCombo);

vcldeveloper
یک شنبه 08 فروردین 1389, 05:51 صبح
Event-handlerها برای این ساخته شدند که در زمان وقوع یک رویداد خاص، کد شما اجرا بشه. شما اگر کدی دارید که هم باید در رویداد OnKeyPress اجرا بشه، هم در رویداد OnChange، پس باید آن را به صورت یک متد مستقل تعریف کنید، و آن متد را در Event-handler رویدادهای مورد نظرتان فراخوانی کنید.

میشه کاری کرد که در رویداد OnChange شما، رویداد OnKeyPress هم اجرا بشه، کافی هست که یک پیام WM_CHAR به اون ComboBox برسه، ولی طبیعی هست که رخ دادن رویداد OnKeyPress خودش موجب رخ دادن مجدد رویداد OnChange میشه، و شما در یک حلقه گیر می افتید!