|
|
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
его легко можно взять с sun ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 13:38 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
А компилятор тут тебе и не поможет. Никакой. Как он откомпилирует код, который заранее не известен? Здесь поможет интенсивная RTFM'отерапия. К примеру она поможет не путать... эээ... зад с ручкой: ALOTEПотому что, события которые будут происходить по btnOK_Click() не известны. В первом элементе это может быть просто месаджбокс, во втором запуск рекордсета, в третьем и то и другое и еще много вкусного.Что же все-таки не известно? События, к которым будут цепляться подписчики, или код самих подписчиков? Если первое, то нужна еще более интенсивная RTFM'отерапия, если второе, то ScriptControl, который будет интерпретировать сгенеренный код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 13:42 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
... Кажется я уловил поток сознания автора. Есть набор четко определенных процедур, которые должны выполняться, допустим при нажатии на кнопку, двойном щелчке по гриду и т.п. Причем что когда выполняется должно регулироваться динамически. Правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 13:50 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
AntonariyДа всем тут уже ясно что ему нужно, и ответы подсказали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 13:57 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
ALOTE VB не позволяет динамически создать подписку на произвольное событие. Тут есть два выхода - писать классы-переходники с уже заложенными подписками для контролов тех типов, которые будут взаимодействовать с пользователем в твоей схеме. А вот уже в этих классах сделать механизм, вызывающий нужную процедуру. Второй выход - сабклассить нужные контролы единой процедурой, в которой должны быть обработаны все возможные события. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 14:17 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
Antonariy... Кажется я уловил поток сознания автора. Есть набор четко определенных процедур, которые должны выполняться, допустим при нажатии на кнопку, двойном щелчке по гриду и т.п. Причем что когда выполняется должно регулироваться динамически. Правильно? Нет, боюсь поток моего сознания, потока Вашего сознания не достиг, к сожалению набора четких процедур, определяемых в зависимости от щелчка мыши нету. Если бы все было так просто, поверте, не полез бы сюда. RTFM я умею. И что такое классы знаю. Вопрос не в этом. Попытаюсь описать задачу с другого угла: 1) В форме есть 8 комбобоксов. 2) У каждого комбобокса от 2 до 7 значений. 3) В зависимости от выбраного в каждом комбобоксе значения формируются события которые должны произойти по нажатию кнопки. Конечно четкий набор процедур написать можно, только посчитайте сами сколько этих четких наборов может быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 14:25 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
Antonariy ALOTE VB не позволяет динамически создать подписку на произвольное событие. Тут есть два выхода - писать классы-переходники с уже заложенными подписками для контролов тех типов, которые будут взаимодействовать с пользователем в твоей схеме. А вот уже в этих классах сделать механизм, вызывающий нужную процедуру. Второй выход - сабклассить нужные контролы единой процедурой, в которой должны быть обработаны все возможные события. Второй выход невозможен, слишком много вариантов, а вот первый пожалуй стоит попробовать. Просто я надеялся что можно как нибудь задать переменную в качестве обработчика событий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 14:32 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
AntonariyVB не позволяет динамически создать подписку на произвольное событие. Тут есть два выхода - писать классы-переходники с уже заложенными подписками для контролов тех типов, которые будут взаимодействовать с пользователем в твоей схеме. А вот уже в этих классах сделать механизм, вызывающий нужную процедуру. Второй выход - сабклассить нужные контролы единой процедурой, в которой должны быть обработаны все возможные события.Есть ещё по меньшей мере один выход (или модификация первого) - обернуть стандартные элементы управления UserControl-ами (а для ActiveX-ов этого и делать не придётся), и тогда их можно создавать динамически, а события получать через "супер-обработчик" VBControlExtender_ObjectEvent(Info As EventInfo). Чем не динамически созданная подписка на произвольное событие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 15:56 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
Бенедикт AntonariyVB не позволяет динамически создать подписку на произвольное событие. Тут есть два выхода - писать классы-переходники с уже заложенными подписками для контролов тех типов, которые будут взаимодействовать с пользователем в твоей схеме. А вот уже в этих классах сделать механизм, вызывающий нужную процедуру. Второй выход - сабклассить нужные контролы единой процедурой, в которой должны быть обработаны все возможные события.Есть ещё по меньшей мере один выход (или модификация первого) - обернуть стандартные элементы управления UserControl-ами (а для ActiveX-ов этого и делать не придётся), и тогда их можно создавать динамически, а события получать через "супер-обработчик" VBControlExtender_ObjectEvent(Info As EventInfo). Чем не динамически созданная подписка на произвольное событие? Ну вот, теперь благодарствуем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 17:36 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
Можно ли аналогичным образом "поймать" событие динамически созданных TextBox'ов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2008, 10:51 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
vbhevbh, Worobjoff же показал , как (для CommandButton, но принципиальной разницы нет). Или речь о чём-то другом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2008, 11:25 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
Показал, спасибо большое. Все прекрасно работает с CommandButton. Но при попытке проделать тоже самое с TextBox, возникает ошибка: Object does not source Automation events . Подскажите, пожалуйста, как от нее уйти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2008, 12:56 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
vbhevbh, такой код работает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2008, 13:39 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
Нет((( В прикрепленном файле работающий вариант c CommandButton закомментирован, добавлен Ваш пример. Не работает((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2008, 13:57 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
vbhevbh, так и знал. Вы спутали 22-ю палату (Visual Basic) с 46-й (Microsoft Office). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2008, 14:21 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
потому что в 46-й палате ничего не нашел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2008, 14:29 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
vbhevbh, несмотря на внешнее сходство, формы и элементы управления в VB и Excel (MSForms) очень разные. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2008, 14:46 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
Бенедикт, СПАСИБО ОГРОМНОЕ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2008, 15:19 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
Бенедикт, могу я еще один момент уточнить. Если в зависимости от некоторых условий с помощью цикла создается несколько TextBox'ов, для каждого из них одинаковые события, как в этом случае решить ту же задачу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2008, 17:17 |
|
||
|
Программно запрограммировать событие
|
|||
|---|---|---|---|
|
#18+
vbhevbh, ожидаемый вопрос :). Создавать так же, через Controls.Add. А для принятия событий придётся написать 1) класс-обёртку элемента управления, чтобы можно было поймать события элемента управления и странслировать их выше, в 2) класс-коллекцию, которая будет хранить ссылки на экземпляры класса 1), и транслировать события своих элементов выше, в модуль класса, использующего эту коллекцию (модуль UserForm-ы); 3) вспомогательный класс для развязки циклических ссылок между коллекцией и её элементами. Выше по топику я давал ссылку на обсуждение этой идеи. Чтобы было, что пощупать руками, прикладываю пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2008, 17:59 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34922014&tid=2161832]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
77ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 418ms |

| 0 / 0 |
