הוספת פרמטר לפרוצדורת אירוע vb6
-
יש למישהו מושג איך להתגבר על הדבר הזה
http://msdn.microsoft.com/en-us/library/office/gg264805.aspx
אני חייב פרמטר לפרוצדורת אירוע ולמרות שאני עושה optional הוא גורם לשגיאה.פורסם במקור בפורום CODE613 ב09/12/2013 19:34 (+02:00)
-
אם הבנתי נכון את שאלתך, זו התשובה:
תצהיר על משתנה ציבורי שיהיה גישה אליו מכל מקום, כגון שתשים אותו באיזה מודל ולא במחלקה ולפני שאתה מקפיץ את הארוע תעדכן את המשתנה הזה.
אולי זה לא הפתרון ה'אמיתי' אבל אני מקווה שזה יכול לעזור לך.פורסם במקור בפורום CODE613 ב10/12/2013 00:42 (+02:00)
-
זוהי שאלה משוללת הבנה.
באירוע יש צד משדר (שמעיר את האירוע בזמן המתאים) וצד מאזין (כמו הפרוצדורה Form_Load שמוקפצת כאשר אירוע הטעינה מתרחש).הצד המשדר קובע את הפרמטרים שדרושים לפונקציה, והוא דואג לאכלס אותם בערכים האקטואליים.
כשאתה בצד המאזין, אין שום סיבה שתרצה לשים פרמטר בפרוצדורת האירוע, כי מי ימלא אותו?
אם אתה עצמך קורא לפרוצדורה זו ככל פרוצדורה אחרת, אז למה להשתמש בה (שמשמשת להאזנה לאירוע) ולא לכתוב אחרת?אחרי שאני קורא את הטריק של רחמים, אני מבין שאולי באמת כוונתך לשלוח פרמטר לטופס בעת יצירתו.
אם ככה אתה אמור להשתמש בפרמטר בקונסטרקטור, ובאמת בVBA אני לא יודע איך עושים זאת, יעויין http://stackoverflow.com/questions/15224113/pass-arguments-to-constructor-in-vbaפורסם במקור בפורום CODE613 ב10/12/2013 14:36 (+02:00)
-
תראה לפני שהתחלתי להבין את הפילוסופיה של אירועים שידורים האזנות וכן הלאה, כבר מאז ומעולם הורגלתי להקפיץ אירועים בלי קשר לגופו של אירוע, כלומר נניח יש form_load אתה יכול לקרוא לו כפונקציה לכל דבר, אלא שאקסס גם כן קורא לו בעת אירוע, אבל עקרונית לא בהכרח יש קשר בין שם הפונקציה לבין האירוע, זהו קשר מקרי לחלוטים, ולכן דין הוא שהפונקציה תוכל לקבל פרמטרים לכל הפחות כפרמטרים אופציונליים, ומה איכפת לו למשדר אם הוא לא מאכלס שם ערך, הרי זה רק אופציונלי, הוא יכול להתעלם מזה.
לכן לא ממש ירדתי לסוף דעתו של דוד ל.ט.פורסם במקור בפורום CODE613 ב10/12/2013 22:56 (+02:00)
-
ההגיון הוא פשוט:
כדי שיהיה קשר בין פונקציה מסויימת לבין הארוע צריך לעשות AddHandler עבור ארוע של מחלקה מסויימת, ואז אתה מקשר בין הארוע של המחלקה לבין הפונקציה, אבל אם ביצירת הקישור השתמשת בפונקציה ללא פרמטרים ובפועל אין במחלקה פונקציה כזו אלא רק הדומה לה שיש לה פרמטר אופציונלי הרי שלא קישרת בין הארוע לפונקציה כמו שצריך.
ובפרט שVB6 לא תומך בהעמסת פונקציות.אבל בעיקרון אתה צודק, ובאמת בדוטנט שיפרו נקודה זו ואתה יכול להוסיף לכל מטפל ארוע פרמטרים אופציונליים כרצונך והמשדר כלומר המקפיץ של הארוע, פשוט לא מתייחס אליהם והכל עובד כרגיל.
פורסם במקור בפורום CODE613 ב11/12/2013 09:23 (+02:00)
-
עדיין לא מבין, אם להשתמש בפונקציית האירוע, כפונקציה רגילה, אז עושים אחת אחרת וקוראים לה גם מהאירוע וגם מכל מקום בו רוצים את פונקציונליות הפרמטרים הנוספים.
נכון שאם היה אפשר אז זה היה "שתיים במכה אחת", אבל זה העמסה טריקית של שתי שימושים חסרי קשר.ההסבר שלך רחמים ממש לא מתייחס לתמיהתי אלא מפרש מה הבעיה. הפירוש גם איננו נכון, לא זמן הקישור (AddHandler) קובע את מס' הפרמטרים, אלא הכרזת האירוע במחלקה שהכריזה אותו.
שים לעובדה שבVBA אין בכלל AddHandler אלא הפונקציות מקושרות לפי שם שמור כסטרינג.פורסם במקור בפורום CODE613 ב11/12/2013 11:13 (+02:00)