|
Access HTMLButtonElement - связать элемент с событием
|
|||
---|---|---|---|
#18+
День добрый. Прошу помочь в одной проблеме. Не могу обработать событие OnClick для HTMLElement в Internet Explorer. Точнее для HTMLButtonElement. Пытаюсь реализовать это через WithEvents. Но не получается связать событие с функцией обработки события. Майкрософт для VB описывает реализацию с объявлением Event и вызова событий через RaiseEvent, а связывать событие и обработчик предлагается через операторы WithEvents и предложением Handles. Но не могу понять как это реализовать в VBA и нужно ли это вообще в текущей ситуации. На некоторых сайтах предлагается реализовывать также, как это пытаюсь делать я - через оператор WithEvents. Но как упоминал выше, у меня не получается "поймать" событие для элемента. Плиаз, подскажите решение или направление, по какому пути идти? Очень буду признателен. Времени потратил немерено, но пока не ясно где камень. Код: vbnet 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2020, 21:10 |
|
Access HTMLButtonElement - связать элемент с событием
|
|||
---|---|---|---|
#18+
SERG-S Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2020, 21:34 |
|
Access HTMLButtonElement - связать элемент с событием
|
|||
---|---|---|---|
#18+
Shocker.Pro, я пишу коды только своими руками)) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2020, 21:43 |
|
Access HTMLButtonElement - связать элемент с событием
|
|||
---|---|---|---|
#18+
SERG-S я пишу коды только своими руками)) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2020, 21:59 |
|
Access HTMLButtonElement - связать элемент с событием
|
|||
---|---|---|---|
#18+
Shocker.Pro, ответ тот же.. поэтому не могу сказать уверено. Но пробовал использовать процедуру (sub) - ошибка, ругается. На сайте, майкрософт пишет, что событие onClick должно возвращать значение объекту. Не исключаю, что моя функция обработки события должна возвратить значение. Пробовал возвратить true, но это не изменило ситуацию. Логика у меня следующая - при использовании метода click событие обрабатывается. Получается событие присваивается - делаю вывод, что сигнатура правильная. см. в коде: Код: vbnet 1.
Я думаю вот над чем - сигнатура верная, но возможно нужно передать в функцию параметр(-ы). Например, номер события или объект события. Скажем это может быть объект типа event. В общем, пока склоняюсь к тому, что проблема в следующем - из объекта IE не поднимается событие нажатие кнопки, который в свою очередь не запускает обработчик события. Собственно, изначально я написал свои предположения в самом вопросе (см. о VB). Но возможно я и усложняю ситуацию и есть возможность сразу вызвать функцию события. Вот как раз думаю над этим. Но вопросы мне нравятся. Наводящие... Если так дальше пойдёт, возможно появятся новые идеи. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2020, 22:49 |
|
Access HTMLButtonElement - связать элемент с событием
|
|||
---|---|---|---|
#18+
SERG-S Я думаю вот над чем - сигнатура верная, но возможно нужно передать в функцию параметр(-ы). Например, номер события или объект события. Скажем это может быть объект типа event. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2020, 23:18 |
|
Access HTMLButtonElement - связать элемент с событием
|
|||
---|---|---|---|
#18+
Shocker.Pro, Да, сигнатура верная. Я только на следующий день сообразил о каком списке процедур в модуле ты упоминаешь. Приятель, давай проясним момент - я же написал, что код пишу руками, в том числе и сигнатуры процедур. Поэтому мои мысли и основывались на предположениях. Я ценю твоё внимание к моему вопросу, но мне нужен конструктивный диалог, а не "прозрачные намёки". Для этого и выложил рабочий код, чтобы не тратить ни твоё, ни своё время. Пожалуйста, всё в твоих руках. Если можешь помочь, даже не столько решением, сколько советом - буду признателен. Но не стоит "раздувать" тему "прозрачными намёками". ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 08:40 |
|
Access HTMLButtonElement - связать элемент с событием
|
|||
---|---|---|---|
#18+
SERG-S Для этого и выложил рабочий код, чтобы не тратить ни твоё, ни своё время. Пожалуйста, всё в твоих руках. Сегодня полез сам и знаешь что... у меня работает :-\ ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 10:50 |
|
Access HTMLButtonElement - связать элемент с событием
|
|||
---|---|---|---|
#18+
Excel 2013 Pro ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 10:53 |
|
Access HTMLButtonElement - связать элемент с событием
|
|||
---|---|---|---|
#18+
Shocker.Pro, а вот это уже интересно.. ты хочешь сказать, что запустил программу с закомментированой строкой Код: vbnet 1.
и клик по кнопке из IE у тебя работает? у меня все необходимые ссылки подключены, без них сам код бы не работал. Честно сказать, я не подумал протестировать прогу в Excel, сейчас я это сделаю. Но даже если он и будет работать, мне нужно это реализовать в ACCESS. А ты можешь протестировать программу в ACCESS? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 12:08 |
|
Access HTMLButtonElement - связать элемент с событием
|
|||
---|---|---|---|
#18+
Shocker.Pro, в Excel-e у меня тоже не работает.. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 12:36 |
|
Access HTMLButtonElement - связать элемент с событием
|
|||
---|---|---|---|
#18+
SERG-S ты хочешь сказать, что запустил программу с закомментированой строкой ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 12:59 |
|
Access HTMLButtonElement - связать элемент с событием
|
|||
---|---|---|---|
#18+
Shocker.Pro, у меня win10, но я не думаю, что в этом проблема. хотя.. Теоретически всё возможно, например, блокируется IE объект или его процесс, также возможно доступ к событиям должен быть по другому реализован. Пока пройдусь ещё по ссылкам, попробую добавить некоторые библиотеки, обновлю браузер IE.. ну и остаётся искать другой способ... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 13:30 |
|
Access HTMLButtonElement - связать элемент с событием
|
|||
---|---|---|---|
#18+
Shocker.Pro, Друг, ты дал мне почву для размышлений. Спасибо. А за то, что ты потратил на меня своё время расскажу к какому решению я пришёл (возможно будет тебе полезным в решении других, своих задач).. Решение было на поверхности ещё перед написанием моего вопроса на формах, в т.ч. на этом. Но оооооочень не хотел использовать этот способ. Ответ кроется в этой строке: Код: vbnet 1.
Картина следующая - пока выполняется процедура запуска в VBA я могу манипулировать как объектом IE и его содержимым, так и обрабатывать события из IE объекта. Но когда процедура завершается, - возможно манипулировать только объектом IE и его содержимым. Кстати, эта ситуация вполне логична - ведь после запуска IE объекта, я имею его экземпляр и могу на него влиять. Но в обратную сторону - это автономный объект, который не имеет никакой связи с моим кодом vba. Мысль такая - чтобы после завершения процедуры startProgramm была возможность обращаться к обработчику событий VBA, нужно при открытии IE, в его документ внедрить скрипт, который будет обращаться к библиотеке и вызывать соответствующую функцию. Но тогда явно это будет не access или excel с VBA, а серверный JavaScrpt (не уверен, что у клиентского есть такая возможность) или C# с PHP и библиотека DLL. Я бы так реализовывал, если была бы сильная потребность. В общем пока я принял такое решение - буду выполнять процедуру запуска с DoEvents, пока IE объект существует. А после его закрытия процедура будет завершаться. Недостаток в том, что пока существует IE, будет выполняться проверка, что может повлиять на производительности. Только пока не знаю в какой степени будет "жрать" ресурсы этот способ. Также, среда разработки будет занята. Но других вариантов пока нет. Буду пытаться оптимизировать код насколько возможно путём исключения лишних процессов и тестировать на возможность задействования других процессов ACCESS при выполнении этого кода. Как-то-так)) Сам спросил, сам ответил... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2020, 15:27 |
|
|
start [/forum/topic.php?fid=60&msg=39944074&tid=2154820]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 262ms |
total: | 406ms |
0 / 0 |