powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Инициирование событие из класса модуля
5 сообщений из 5, страница 1 из 1
Инициирование событие из класса модуля
    #32930560
Tanny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу создать реакцию на кнопку не в форме, а из класса модуля. Пишу для примера так:

Dim cFrm As Form1
Dim WithEvents cmd As CommandButton

Private Sub Class_Initialize()
Set cFrm = New Form1
Load cFrm
Set cmd = cFrm.Command1
Set txt = cFrm.Text1
End Sub

Private Sub Class_Terminate()
Set cFrm = Nothing
Set cmd = Nothing
End Sub

Private Sub cmd_Click()
MsgBox "test"
End Sub

т.е создаю экземпляр формы, на ней кнопку и перехватываю ее событие Click. Просто запускаю на выполнение. Форма с кнопкой рисуются, но при нажатии на кнопку - ничего. Чего не хватает?
...
Рейтинг: 0 / 0
Инициирование событие из класса модуля
    #32930592
_гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делай все по порядку
объяви cmd, txt

cmd_Click() - где вызываешь? ты ведь не в форме, и потом - сама форма - экземпляр класс form, вот и работай с ней как с классом.
...
Рейтинг: 0 / 0
Инициирование событие из класса модуля
    #32930645
Tanny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так я в модуле класса объявляю:
Dim WithEvents cmd As CommandButton
Потом в Initialize класса загружаю экземпляр формы и я так думаю, что экземпляр кнопки.
Set cFrm = New Form1
Load cFrm
Set cmd = cFrm.Command1
И еще пишу реакцию на событие Click. И думаю, что когда вижу при запуске форму на мониторе и кликаю по кнопке, то должна срабатывать моя реакция, т.е выдаваться msgbox.
Я неправильно понимаю?
...
Рейтинг: 0 / 0
Инициирование событие из класса модуля
    #32930980
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TannyИ думаю, что когда вижу при запуске форму на мониторе и кликаю по кнопке, то должна срабатывать моя реакция, т.е выдаваться msgbox.
Я неправильно понимаю? Из вашего примера не видно как вы создаете экземпляр класса. Похоже, что он не создается вообще, а форму вы видите потому, что по умолчанию в новом Exe проекте она выставляется как Startup объект.
Попробуйте следующее.
1 Новый Exe проект, форма Form1 создается по умолчанию, на форму положите кнопку.
2 Добавляете новый класс Class1, в который копируете след. код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Option Explicit

Private WithEvents m_cmd As CommandButton
Private m_oForm As Form1

Private Sub Class_Initialize()
   Set m_oForm = New Form1
   Set m_cmd = m_oForm.Command1
   m_oForm.Show
End Sub

Private Sub m_cmd_Click()
    Debug.Print "m_cmd_Click()"
End Sub
3 Добавляете новый модуль Module1, в который копируете след. код:
Код: plaintext
1.
2.
3.
4.
5.
Option Explicit
Dim oInstance As Class1
Sub Main()
    Set oInstance = New Class1
End Sub
4 в свойствах проекта выставляете Startup Object = Sub Main
5 Запускаете
...
Рейтинг: 0 / 0
Инициирование событие из класса модуля
    #32931195
Tanny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большущее спасибо. Я до Show дошла, дошла до того, что где-то я должна создать экземпляр своего класса. Сделала некрасиво, из формы другого проекта. Сейчас попробую из Sub Main.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Инициирование событие из класса модуля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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