powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Программно запрограммировать событие
21 сообщений из 46, страница 2 из 2
Программно запрограммировать событие
    #34921853
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
его легко можно взять с sun
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #34921873
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А компилятор тут тебе и не поможет. Никакой. Как он откомпилирует код, который заранее не известен?
Здесь поможет интенсивная RTFM'отерапия. К примеру она поможет не путать... эээ... зад с ручкой:
ALOTEПотому что, события которые будут происходить по btnOK_Click() не известны. В первом элементе это может быть просто месаджбокс, во втором запуск рекордсета, в третьем и то и другое и еще много вкусного.Что же все-таки не известно? События, к которым будут цепляться подписчики, или код самих подписчиков? Если первое, то нужна еще более интенсивная RTFM'отерапия, если второе, то ScriptControl, который будет интерпретировать сгенеренный код.
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #34921903
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... Кажется я уловил поток сознания автора.

Есть набор четко определенных процедур, которые должны выполняться, допустим при нажатии на кнопку, двойном щелчке по гриду и т.п. Причем что когда выполняется должно регулироваться динамически.

Правильно?
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #34921933
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyДа всем тут уже ясно что ему нужно, и ответы подсказали.
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #34922014
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTE
VB не позволяет динамически создать подписку на произвольное событие. Тут есть два выхода - писать классы-переходники с уже заложенными подписками для контролов тех типов, которые будут взаимодействовать с пользователем в твоей схеме. А вот уже в этих классах сделать механизм, вызывающий нужную процедуру. Второй выход - сабклассить нужные контролы единой процедурой, в которой должны быть обработаны все возможные события.
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #34922054
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy... Кажется я уловил поток сознания автора.

Есть набор четко определенных процедур, которые должны выполняться, допустим при нажатии на кнопку, двойном щелчке по гриду и т.п. Причем что когда выполняется должно регулироваться динамически.

Правильно?
Нет, боюсь поток моего сознания, потока Вашего сознания не достиг, к сожалению набора четких процедур, определяемых в зависимости от щелчка мыши нету. Если бы все было так просто, поверте, не полез бы сюда. RTFM я умею. И что такое классы знаю. Вопрос не в этом. Попытаюсь описать задачу с другого угла:
1) В форме есть 8 комбобоксов.
2) У каждого комбобокса от 2 до 7 значений.
3) В зависимости от выбраного в каждом комбобоксе значения формируются события которые должны произойти по нажатию кнопки.
Конечно четкий набор процедур написать можно, только посчитайте сами сколько этих четких наборов может быть.
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #34922077
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy ALOTE
VB не позволяет динамически создать подписку на произвольное событие. Тут есть два выхода - писать классы-переходники с уже заложенными подписками для контролов тех типов, которые будут взаимодействовать с пользователем в твоей схеме. А вот уже в этих классах сделать механизм, вызывающий нужную процедуру. Второй выход - сабклассить нужные контролы единой процедурой, в которой должны быть обработаны все возможные события.
Второй выход невозможен, слишком много вариантов, а вот первый пожалуй стоит попробовать. Просто я надеялся что можно как нибудь задать переменную в качестве обработчика событий.
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #34922443
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyVB не позволяет динамически создать подписку на произвольное событие. Тут есть два выхода - писать классы-переходники с уже заложенными подписками для контролов тех типов, которые будут взаимодействовать с пользователем в твоей схеме. А вот уже в этих классах сделать механизм, вызывающий нужную процедуру. Второй выход - сабклассить нужные контролы единой процедурой, в которой должны быть обработаны все возможные события.Есть ещё по меньшей мере один выход (или модификация первого) - обернуть стандартные элементы управления UserControl-ами (а для ActiveX-ов этого и делать не придётся), и тогда их можно создавать динамически, а события получать через "супер-обработчик" VBControlExtender_ObjectEvent(Info As EventInfo). Чем не динамически созданная подписка на произвольное событие?
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #34923052
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бенедикт AntonariyVB не позволяет динамически создать подписку на произвольное событие. Тут есть два выхода - писать классы-переходники с уже заложенными подписками для контролов тех типов, которые будут взаимодействовать с пользователем в твоей схеме. А вот уже в этих классах сделать механизм, вызывающий нужную процедуру. Второй выход - сабклассить нужные контролы единой процедурой, в которой должны быть обработаны все возможные события.Есть ещё по меньшей мере один выход (или модификация первого) - обернуть стандартные элементы управления UserControl-ами (а для ActiveX-ов этого и делать не придётся), и тогда их можно создавать динамически, а события получать через "супер-обработчик" VBControlExtender_ObjectEvent(Info As EventInfo). Чем не динамически созданная подписка на произвольное событие?
Ну вот, теперь благодарствуем.
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #35545991
vbhevbh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли аналогичным образом "поймать" событие динамически созданных TextBox'ов?
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #35546084
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbhevbh,
Worobjoff же показал , как (для CommandButton, но принципиальной разницы нет). Или речь о чём-то другом?
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #35546357
vbhevbh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Показал, спасибо большое. Все прекрасно работает с CommandButton. Но при попытке проделать тоже самое с TextBox, возникает ошибка: Object does not source Automation events . Подскажите, пожалуйста, как от нее уйти.
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #35546469
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbhevbh,
такой код работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Option Explicit

Dim WithEvents btnOK As VB.TextBox

Private Sub btnOK_Click()
   MsgBox "Click", vbInformation, btnOK.Name
End Sub

Private Sub Form_Load()
   Set btnOK = Me.Controls.Add("VB.TextBox", "DynamicTextBox1")
   btnOK.Move  30 ,  30 ,  1300 ,  345 
   btnOK.Visible = True
   btnOK.Text = "Click Me"
End Sub
?
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #35546520
vbhevbh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет((( В прикрепленном файле работающий вариант c CommandButton закомментирован, добавлен Ваш пример. Не работает(((
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #35546590
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbhevbh,
так и знал. Вы спутали 22-ю палату (Visual Basic) с 46-й (Microsoft Office).
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #35546616
vbhevbh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
потому что в 46-й палате ничего не нашел
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #35546662
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbhevbh,
несмотря на внешнее сходство, формы и элементы управления в VB и Excel (MSForms) очень разные.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim WithEvents btnOK As MSForms.TextBox


Private Sub btnOK_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
   MsgBox "DblClick", vbInformation, btnOK.Name
End Sub

Private Sub UserForm_Initialize()
   Set btnOK = MultiPage1.Pages( 1 ).Controls.Add("Forms.TextBox.1", "DynamicTextBox1")
   btnOK.Text = "DblClick Me"
End Sub
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #35546775
vbhevbh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бенедикт,
СПАСИБО ОГРОМНОЕ
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #35547188
vbhevbh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бенедикт,
могу я еще один момент уточнить. Если в зависимости от некоторых условий с помощью цикла создается несколько TextBox'ов, для каждого из них одинаковые события, как в этом случае решить ту же задачу?
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #35547328
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbhevbh,
ожидаемый вопрос :).
Создавать так же, через Controls.Add. А для принятия событий придётся написать
1) класс-обёртку элемента управления, чтобы можно было поймать события элемента управления и странслировать их выше, в
2) класс-коллекцию, которая будет хранить ссылки на экземпляры класса 1), и транслировать события своих элементов выше, в модуль класса, использующего эту коллекцию (модуль UserForm-ы);
3) вспомогательный класс для развязки циклических ссылок между коллекцией и её элементами.
Выше по топику я давал ссылку на обсуждение этой идеи.
Чтобы было, что пощупать руками, прикладываю пример.
...
Рейтинг: 0 / 0
Программно запрограммировать событие
    #35547378
vbhevbh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бенедикт, спасибо большое. Обязательно пощупаю. Тем более, что мне, как не очень опытному пользователю, да к тому же блондинке, только это и остается делать. Без вас бы совсем погибла.
...
Рейтинг: 0 / 0
21 сообщений из 46, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Программно запрограммировать событие
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]