Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Event Procedure / 8 сообщений из 8, страница 1 из 1
22.06.2004, 22:26:40
    #32572759
mift
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Event Procedure
В модуле класса, в функции 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
22.06.2004, 22:51:01
    #32572763
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Event Procedure
А зачем функция находится в этом же модуле класса?
Если она будет в форме или в стандартном модуле, то можно так
Forms("frmTest").cmdTest.OnClick = "=MyFunc()"
...
Рейтинг: 0 / 0
22.06.2004, 23:15:56
    #32572770
mift
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Event Procedure
Serge GavrilovА зачем функция находится в этом же модуле класса?
Спасибо, но нужно, что-бы функция-обработчик находилась именно в этом же модуле класса. здесь для ясности, выбросил некоторые вещи, не относящиеся к вопросу.
...
Рейтинг: 0 / 0
23.06.2004, 02:37:33
    #32572826
Alexander Say
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Event Procedure
Код: 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
23.06.2004, 02:54:21
    #32572829
Alexander Say
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Event Procedure
Код: 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
23.06.2004, 12:48:24
    #32573543
mift
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Event Procedure
О, спасибо, заработало.
...
Рейтинг: 0 / 0
23.06.2004, 23:39:26
    #32574736
mift
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Event Procedure
А есть еще какое-нибудь решение этой проблемы?

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


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