|
|
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
Объясните ежику - какие преимущества имеет парочка Event - RaiseEvent - перед стандартными Sub - Call ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 18:17:52 |
|
||
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
Иван FXSОбъясните ежику - какие преимущества имеет парочка Event - RaiseEvent - перед стандартными Sub - Call ? Соль в том, что мы пишем приложения по т.н. Event Driven model. См. MSDN VisualBasic concepts, в частности Understanding the Event-Driven Model Или вы хотели спросить о чем-то другом ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 18:25:44 |
|
||
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
Наверное, об этом ... а "Understanding the Event-Driven Model" - это просто другой способ МЫСЛИТЬ о программах или там РЕАЛЬНО заложены какие-то другие (не процедурные?) МЕХАНИЗМЫ работы программного кода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 18:29:20 |
|
||
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
Сорри, я хотел спросить - конечно - про САМУ "Event-Driven Model", а вовсе не про "Understanding" её! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 18:30:35 |
|
||
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
Разница между ними: Call знает какой Sub вызовет RiseEvent - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 19:15:38 |
|
||
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
Как это - знает/не знает? Моя твоя не понимай: Call вызывает ... то, что там у него ... указано: Call abra - вызывает абру, Call kadabra - вызывает кадабру. А RiseEvent abra и RiseEvent kadabra - разве не абру с кадаброй вызывают??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 19:30:42 |
|
||
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
Иван FXSКак это - знает/не знает? Моя твоя не понимай: Call вызывает ... то, что там у него ... указано: Call abra - вызывает абру, Call kadabra - вызывает кадабру. А RiseEvent abra и RiseEvent kadabra - разве не абру с кадаброй вызывают??? Нет, не абру с кадаброй. Вызывают обработчики событий abra и cadabra. В случае VB 6 - это методы, названные определенным образом, с определенной сигнатурой, в других языках - вообще с произвольным названием. Это раз. Подписчиков на одно событие одного экземпляра класса может быть бесконечное множество, а может и не быть вовсе. Класс про это ничего не знает. Это два. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2004, 20:01:12 |
|
||
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
Я очень хочу увидеть разницу, но пока что ее не вижу: RiseEvent вызывает "не абру с кадаброй, а обработчики событий abra и cadabra" - говорите Вы ... Чем это отличается от: Call вызывает "не абру с кадаброй, а процедуры (функции) abra и cadabra"??? "В случае VB 6 - это методы, названные определенным образом, с определенной сигнатурой" - говорите Вы ... ну так и процедура любая - "с определенной сигнатурой"! "В других языках - вообще с произвольным названием" - вот это, честно, не понял: если название произвольно, то как компилятор его ассоциирует с КОНКРЕТНЫМ вызовом? Подписчиков на одно событие одного экземпляра класса может быть бесконечное множество, а может и не быть вовсе. Класс про это ничего не знает. Это два.- разве у процедуры не точно так же: вызовов процедуры "может быть бесконечное множество, а может и не быть вовсе. Процедура про это ничего не знает"! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2004, 09:20:38 |
|
||
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
Диагноз такой: твоя задача не требует создания классов. Попробуй создать UserControl. Там все поймешъ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2004, 09:29:42 |
|
||
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
Можно ли так сказать, что Call abra - будет/может вызывать только какую-то конкретную абру, определяемую при компиляции кода (а иначе - компиляция просто не сосотоится), а RiseEvent abra вызывает ту абру, которая "активна" на момент вызова - в зависимости от текущего набора "загруженных" объектов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2004, 09:56:52 |
|
||
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
Иван FXSКак это - знает/не знает? Call вызывает ... то, что там у него ... указано: А RiseEvent abra и RiseEvent kadabra - разве не абру с кадаброй вызывают??? RaiseEvent - возбудить событие Возбудил - а там хоть трава не расти! или: Моё дело - прокукарекать, а там хоть не рассветай! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2004, 10:40:44 |
|
||
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
Всё гораздо проще :) Call предназначен для обычных функций (function/sub) , RaiseEvent - для событий классов и собственных контролов. Event можно отличить по его имени - всегда имя переменной_имя события (cmdConfirm_Click, objMySmtp_Disconnect, ...). Предположим, мы пишем класс, который имплементирует наше собственное меню - сам его определяет, рисует, обрабатывает действия пользователя и т.д. Тогда в коде класса будет: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. В форме, которая этим меню захочет воспользоваться, мы напишем: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Теперь, если мы захотим добавить еще одну менюшку, то определим её : Private WithEvents objAnotherMenu as IvanMenu , а в коде формочки добавится функция (или процедура - по желанию): Private Function objAnotherMenu_Clicked(ID as MenuIdent). Надеюсь, теперь понятно чем RaiseEvent хорош? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 11:18:10 |
|
||
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
ProcessorМоё дело - прокукарекать, а там хоть не рассветай! Суть этого замечания в том, что RaiseEvent нужен тогда, когда твой класс хочет тебе что-то сказать. А вот послушаешь ли ты его или проигнорируешь - твоё личное дело (или программера, который твоим классом пользуется). Некоторые события тебя в данный момент могут не интересовать, как например, ты не обрабатываешь все события формы (Activate, Click, DblClick, Deactivate, GotFocus, Initialize, Load, LostFocus, Paint, QueryUnload, Resize, Terminate, Unload) - а только те, которые тебе нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 11:26:42 |
|
||
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
VBaserВсё гораздо проще :) ... Надеюсь, теперь понятно чем RaiseEvent хорош?- да, спасибо, теперь я разобрался: RaiseEvent вызывает именно тот Event , который в не указан, но на этом - на самом деле - все не заканчивается, поскольку сам по себе Event ничего не делает (а просто - "загорается"). "Делание" происходит в других объектах, которые - по своему усмотрению - этот Event "подхватывают", и об этом тот объект, в котором находится RaiseEvent , в самом деле ничего не знает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 13:20:49 |
|
||
|
Q: Event - RaiseEvent - в чем соль??
|
|||
|---|---|---|---|
|
#18+
VBaserСуть этого замечания в том, что RaiseEvent нужен тогда, когда твой класс хочет тебе что-то сказать. Например, в асинхронных запросах этот "твой класс" только через обработчики событий может получить осмысленный ответ сервера с минимальной задержкой , обработать его и в свою очередь возбудить событие, понятное пользователю этого класса. "Event-Driven Model" позволяет упростить процесс проектирования взаимодействия модулей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 17:03:10 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=60&tid=2168620]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 303ms |

| 0 / 0 |
