Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 05.07.2007
Сообщений: 110

Обработка событий формы в классе

05.09.2007, 09:20. Показов 1529. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я создаю библиотеку, в ней одна форма MyForm и модуль класса MyClass. В форме объявлено событие

Visual Basic
1
Public Event OkClicked()
Событие возникает при нажатии кнопки Ok
Visual Basic
1
2
3
Private Sub btnOk_CLICKED()
RaiseEvent OkClicked
End Sub
В классе объявлена форма
Visual Basic
1
Dim WithEvents MyFormNew As MyForm
Метод показа формы
Visual Basic
1
2
3
4
Public Sub Show()
Set MyFormNew = New MyForm
MyFormNew.Show
End Sub
Обработчик события
Visual Basic
1
2
3
Private Sub MyFormNew_OkClicked()
MsgBox 'Ura'
End Sub
Проблема в том, что событие из формы не передается в класс. Т.е. в форме я нажимаю на кнопку Ок, но сообщение 'Ura' не появляется. Может быть, кто-нибудь знает, как решить проблему.
PS. Не забывайте, что это библиотека и копию класса в форме делать нельзя (по-моему)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.09.2007, 09:20
Ответы с готовыми решениями:

Обработка событий в форме.
Risuju kartinky :) Sreda razrabotki : Excel 97 Y menja est' forma i mne nado v nei otslezivat' vse nazatija knopok a to4nee mne...

Обработка событий TextBox
На форм TetBox. Необходим только ввод цифр. Подпрограмма обработки: Private Sub Text1_KeyPress(KeyAscii As Integer) 'Ввод...

Обработка событий мыши и клавиатуры на vb6
Нужна помощ,подскажите сайт или сбросте материал по теме: обработка событий мыши и клавиатуры на vbasik 6.0

3
2 / 2 / 1
Регистрация: 19.07.2007
Сообщений: 737
05.09.2007, 13:51
Копию класса в форме делать можно, а иначе не получится.
Создай свойство в форме - типа твоего класса и передай свой класс при инициализации. А в классе сделай метод вызова события.

Visual Basic
1
2
3
4
5
6
7
8
9
10
'class MyClass
friend sub FireEventOK()
   MsgBox 'Ura'
end sub
 
Public Sub Show()
Set MyFormNew = New MyForm
MyFormNew.MyClass=me
MyFormNew.Show
End Sub
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
'form MyForm
private mvarMyClass as MyClass
friend property Let MyClass(vData as MyClass)
  set mvarMyClass =vData
end property
 
Private Sub btnOk_CLICKED()
 
   mvarMyClass.FireEventOK
 
End Sub
0
0 / 0 / 1
Регистрация: 29.07.2007
Сообщений: 40
05.09.2007, 16:41
Vot tak poprobuy:
---------------------------------
Main form s knokoy v proerte dla proverki DLL

Visual Basic
1
2
3
4
5
Private lgMyClass As Test.MyClass
 
Private Sub cmdOk_Click()
    Set lgMyClass = New Test.MyClass
End Sub
MyClass v DLL Test
---------------------------------------
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private WithEvents MyFormNew As MyForm
 
 
 
Private Sub MyFormNew_OkClicked()
MsgBox 'Ura'
End Sub
 
 
Private Sub Class_Initialize()
Set MyFormNew = New MyForm
    MyFormNew.Show
End Sub
 
 
Private Sub Class_Terminate()
     Set MyFormNew = Nothing
End Sub
My Form v DLL Test
-----------------------------
Visual Basic
1
2
3
4
5
6
7
8
9
Public Event OkClicked()
Public Sub FormShow()
    Set MyFormNew = New MyForm
    MyFormNew.Show
End Sub
 
Private Sub cmdOk_Click()
    RaiseEvent OkClicked
End Sub
=========================
Provereno - rabotaet.

Zamecheniya:
Dla formy luche vsego opredelit' otdel'nye metody dlya otkrytiya i dlya unichtojeniya. Naprimer : OpenDialog i Terminate

Uklassa MyClass toje doljny byt' otdel'nye public metody dlya inicializacii i unichtojeniya.

Udachi

http://aibase.uka.ru
0
Vsh
05.09.2007, 16:49
Передаю совет который сам тут получил:

Используй WithEvents:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
'** Class_1***
Dim frm as New Form1 'содержит кнопку OK
Dim WithEvents btn As CommandButton
 
Public Sub ShowFrm()
frm.Show
Set btn=frm.Command1
End Sub
 
Private Sub btn_Click()
MsgBox 'Класс1'
End Sub
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
'** Class_2***
Dim frm as New Form1 'содержит кнопку OK
Dim WithEvents btn As CommandButton
 
Public Sub ShowFrm()
frm.Show
Set btn=frm.Command1
End Sub
 
Private Sub btn_Click()
MsgBox 'Класс2'
End Sub
Visual Basic
1
2
3
4
5
6
7
'***** использование *****
Public C1 As New Class_1, C2 As New Class_2
C1.Show
'если нажать Command1 выполнится MsgBox 'Класс1'
 
С2.Show
'если нажать Command1 выполнится MsgBox 'Класс2'
С1 и С2 должны еще жить при нажатии на кнопку, поэтому я их описал как Public, но в принципе можно описывать локально для процедуры, если ты уверен что процедура не закончится покак не выйдут из формы, если она закончится , то возможна ситуация что нажмут на Command1, а С1 и С2 уже не существует и естественно ни чего не сработает.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.09.2007, 16:49
Помогаю со студенческими работами здесь

Обработка событий для динамически созданных элементов управления
VBA (Office97) позволяет динамически создавать элементы управления (при выполнении программы). Но как обрабатывать события для них? При...

Обработка событий в классе QSystemTrayIcon
Подскажите, пожалуйста, можно ли в классе, производном от QSystemTrayIcon, сделать так, чтобы информация, которая появляется при...

Обработка событий не в том классе
Мне необходимо навесить обработку события - клик по ноду- на CTreeCtrl. Все отлично, с помощью визарда навешивается, но... но у меня...

Обработка событий элементами формы
Среда - Borland C++. Элемент формы Button имеет обработчик события на Clic где код работы с WINAPI - записать в поток потом читать из...

Обработка 2х событий при отправке формы
Здравствуйте. Имеется следующая проблема в задаче. При нажатии на клавишу в окне браузера открывается вспомогательное окно с формой для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru