PDA

View Full Version : دسترسی به Event های یک آبجکت



Hadizadeh
شنبه 27 بهمن 1386, 10:15 صبح
سلام. یک آبجکت (ActiveX) دارم که یه سری رخداد استاندارد مثل OnClick و یه سری رخداد تعریف شده مثل OnBeep داره. حالا چه طور میشه به این رخدادها مثلا به رخدادگردان OnBeep دسترسی پیدا کرد؟ در حقیقت می خوام یه فانکشن دلخواه رو به رخدادگردان OnBeep انتصاب بدم. چه جوری میشه این کارو کرد؟ من تو دلفی این کارو می کنم:


procedure MyFunc;
...
MyObject.OnBeep:=MyFunc;

اما تو VB چه طور میشه؟ ممنون

Mbt925
شنبه 27 بهمن 1386, 21:59 عصر
شما می خواین این تابع زمانی که ایونت اتفاق میوفته ، فراخوانی بشه؟




Event OnBeep()

حالا هر وقت خواستین این ایونت اتفاق بیفته باید از




RaiseEvent OnBeep()

استفاده کنید.

حالا اگه می خواین یه تابع موقع اتفاق افتادن این ایونت فراخوانی بشه ،
قبل از Raise کردن ایونت موردنظر تابع رو فراخوانی کنید:




Call MyFunc()

RaiseEvent OnBeep()

Hadizadeh
یک شنبه 28 بهمن 1386, 08:27 صبح
یعنی این؟


Call MyFunc()
RaiseEvent MyObject.OnBeep()

ولی درک این موضوع برای من سخته که چرا بعد از اجرای این کد هر وقت OnBeep Event رخ داد تابع MyFunc فراخوانی میشه! دلیلشو می تونید بگید؟ سیستم VB برام خیلی عجیبه!!

Hadizadeh
یک شنبه 28 بهمن 1386, 09:30 صبح
در ضمن رویداد OnBeep در Object Broswer برای MyObject لیست میشه ولی وقتی من کد بالا رو اجرا می کنم میگه Object doesn't support this property or method و وقتی از کد زیر استفاده می کنم میگه چنین Event ای پیدا نشد:


Call MyFunc()
RaiseEvent MyObject_OnBeep()

مشکل چیه؟ توجه کنید که MyObject یک ActiveX استاندارد هست.

Mbt925
یک شنبه 28 بهمن 1386, 09:48 صبح
باید به این صورت بنویسین:
بعد از اینکه کلمه کلیدی RaiseEvent رو تایپ کردین ، یه لیست از ایونت هایی که تعریف کردین ، لیست میشه.





Call MyFunc()
RaiseEvent OnBeep



شما قبل از اینکه ایونت موردنظر رو فراخوانی کنید ، تابع رو فراخوانی می کنید ، بنابراین همیشه موقع رخ دادن ایونت ، تابع فراخوانی میشه.

Hadizadeh
یک شنبه 28 بهمن 1386, 16:30 عصر
ولی من RaiseEvent رو تایپ می کنم هیج اتفاقی نمی افته!!! در ضمن می نویسم RaiseEvent OnBeep و بعد برنامه رو اجرا می کنم خطا می ده میگه Event Not Found ولی من تو زبانهای برنامه نویسی دیگه مثل دلفی ازش استفاده می کنم و در ضمن در Object Browser هم این Event لیست میشه.

Hadizadeh
یک شنبه 28 بهمن 1386, 16:31 عصر
راستی مشکل من هنوز حل نشده پس چه طور برچسپ حل شده روش خورده؟

Mbt925
یک شنبه 28 بهمن 1386, 17:36 عصر
دوست عزیز شما باید اول ایونت موردنظرتون رو تعریف کنید ، وگرنه باید از کجا تشخیص داده بشه که نام اوینت و آرگومان ها موردنیازش چیه؟

ایونت بصورت زیر تعریف میشه:





Event eventName