Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 2
Регистрация: 14.10.2009
Сообщений: 100

Нужно создать класс у которого есть Event.

25.01.2011, 06:43. Показов 1063. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите плз.

Никогда до этого сильно с VB не работал.
Нужно создать класс у которого есть Event.
Это событие генериться внутри класса по таймеру.

Visual Basic
1
2
3
4
'Эта функция вызывается по таймеру
Public Sub GenerateEvent()
        RaiseEvent OnTimer
End Sub
на форме пытаюсь отловить его, но оно как будто не происходит (но
в самом классе точно отрабатывает RaiseEvent).

Заранее благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2011, 06:43
Ответы с готовыми решениями:

Создать класс - человек, у которого есть имя и возраст.
Создать класс - человек, у которого есть имя и возраст. Определить функцию которая установит имя и возраст по умолчанию. Помогите! Вот...

Оператор new (создать класс город у которого есть название и население)
Была задачка, создать класс город у которого есть название и население. Определить функцию которая устанавливает название Москва и...

Создать класс - институт , у которого есть название и число студентов
Создать класс - институт , у которого есть название и число студентов . Определить функцию , которая устанавливает название “НГУ ” и 20 тыс...

6
Comanche
25.01.2011, 11:37
Переменную класса объявил в форме с WithEvents ?
2 / 2 / 2
Регистрация: 14.10.2009
Сообщений: 100
25.01.2011, 11:56  [ТС]
Да
0
Comanche
25.01.2011, 15:25
Событие OnTimer объявил в классе как Public ?
2 / 2 / 2
Регистрация: 14.10.2009
Сообщений: 100
25.01.2011, 19:19  [ТС]
У класса есть событие и процедура вызывающая его.

Visual Basic
1
2
3
4
5
Public Event timer()
 
Public Static Sub RaiseTimer()
    RaiseEvent timer
End Sub
Эту процедуру должна вызывать callback функция которая должна быть расположена в другом модуле(AddressOf так работает если я не ошибаюсь)
Я делал так, но это не правильно т.к. событие произойдет в этом же модуле, а не в форме как это требуется.

Visual Basic
1
2
3
4
5
6
7
8
9
10
Option Explicit
 
Public timer As CTimer
 
Public Function fTimerCallBack(ByVal lnghwnd As Long, ByVal lngMessage As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    
    Set timer = New CTimer
    timer.RaiseTimer
    Set timer = Nothing
End Function
Подскажите есть ли какой то выход из этой ситуации?
0
Comanche
25.01.2011, 20:56
В форме у тебя один инстанс твоего класса (объявленный с WithEvents), а в callback-функции - создаётся ДРУГОЙ! и именно в этом другом экземпляре происходит событие - есс-с-сно форма его не отловит!

Т.е. в callback-функции нужно вызывать процедуру (метод) RaiseTimer 'от контекста' того самого таймера, который объявлен в форме, а не создавать новый.

Выход - объявлять в форме переменную класса как PUBLIC (Public WithEvents classInstance As YourClassName), и в callback-функции вызывать Form1.YourClassName.RaiseTimer.

Тогда ты обратишься именно к тому экземпляру, отлов событий которого и происходит в форме (в classInstance_timer).
Comanche
25.01.2011, 20:58
Пардон, ошибся:

вместо 'и в callback-функции вызывать Form1.YourClassName.RaiseTimer'

должно быть:

'и в callback-функции вызывать Form1.classInstance.RaiseTimer'.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.01.2011, 20:58
Помогаю со студенческими работами здесь

Создать класс "Сыр", у которого есть название, вес порции, энергетическая ценность
создать класс сыр у которого есть название, вес порции, энергетическая ценность. Определить функцию которая усанавливает энергитическую...

Создать класс, на входе которого Rectangle на выходе которого bool
Не получается создать класс, на входе которого Rectangle на выходе которого bool public bool collidesWithLevel(Rectangle rect). ...

Класс, для полей которого нужно использовать класс
Нужно помочь с этой частью, ну и проблемка - char для ФИО не переваривает пробелы. #include "stdafx.h" #include...

Класс: Создать класс, объектом которого будет являться двумерный массив размерностью n x m.
Нужно создать класс, объектом которого будет являться двумерный массив размерностью n x m. Массив должен размещаться в динамической памяти....

Создать класс, полем которого является класс вектор
как это выглядит?


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru