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

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

05.09.2007, 09:20. Показов 1512. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru