powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Event Procedure
8 сообщений из 8, страница 1 из 1
Event Procedure
    #32572759
mift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В модуле класса, в функции Setting открывается форма frmTest. На этой форме есть кнопка cmdTest. Как можно программно назначить обработчиком нажатия на эту кнопку функцию, находящуюся в этом модуле класса (функция MyFunc) ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Option Compare Database

Public Function Setting()
    DoCmd.OpenForm "frmTest"
    Forms("frmTest").Form.Controls("cmdTest").OnClick = " ? "
End Function

Public Function MyFunc()
    MsgBox "frmTest"
End Function
...
Рейтинг: 0 / 0
Event Procedure
    #32572763
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем функция находится в этом же модуле класса?
Если она будет в форме или в стандартном модуле, то можно так
Forms("frmTest").cmdTest.OnClick = "=MyFunc()"
...
Рейтинг: 0 / 0
Event Procedure
    #32572770
mift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge GavrilovА зачем функция находится в этом же модуле класса?
Спасибо, но нужно, что-бы функция-обработчик находилась именно в этом же модуле класса. здесь для ясности, выбросил некоторые вещи, не относящиеся к вопросу.
...
Рейтинг: 0 / 0
Event Procedure
    #32572826
Alexander Say
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private WithEvents cmdTest As CommandButton

Public Property Set Test (cmd As CommandButton)
   Set cmdTest = cmd
   cmdTest.OnClick = "[Event Procedure]" 
End Property

Public Function Setting()
    DoCmd.OpenForm "frmTest"
    Set Test=Forms("frmTest").Form.Controls("cmdTest")
End Function

Private Sub cmdTest_Click()
    MyFunc
End Sub

Private Function MyFunc()
    MsgBox "frmTest"
End Function
...
Рейтинг: 0 / 0
Event Procedure
    #32572829
Alexander Say
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private WithEvents cmdTest As CommandButton

Public Function Setting()
    DoCmd.OpenForm "frmTest"
    Set cmdTest=Forms("frmTest").Form.Controls("cmdTest")
    Forms("frmTest").Form.Controls("cmdTest").OnClick = "[Event Procedure]" 
End Function

Private Sub cmdTest_Click()
    MyFunc
End Sub

Private Function MyFunc()
    MsgBox "frmTest"
End Function

Только при уничтожении класса не забыть !!!
Код: plaintext
Forms("frmTest").Form.Controls("cmdTest").OnClick = vbNullString

Иначе повиснет твой класс..
...
Рейтинг: 0 / 0
Event Procedure
    #32573543
mift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, спасибо, заработало.
...
Рейтинг: 0 / 0
Event Procedure
    #32574736
mift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А есть еще какое-нибудь решение этой проблемы?

Если число командных кнопок не известно, и определяется только в самом модуле класса, и затем в цикле назначаются каждой кнопке обработчик нажатия на кнопку, то это решение не работает.
...
Рейтинг: 0 / 0
Event Procedure
    #32574756
Alexander Say
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В одном модуле класса такое не сделать. Лучше сделать младший класс с обработкой стандартного(х) события(й), а затем старший класс будет создавать коллекцию младшего класса.
Самое простое сделать Public Function в обычном VBA модуле. А в свойствах события контрола прописывать её.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Event Procedure
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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