powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Свой event в форме
20 сообщений из 20, страница 1 из 1
Свой event в форме
    #37857863
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про event почти ничего не знаю.
Нужно чтоб в форме сработало свое событие, но вызов чтоб осуществлялся из модуля. Возможно ?
...
Рейтинг: 0 / 0
Свой event в форме
    #37857896
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно
- Создаешь модуль класса MyClass
- Прописываешь в нем событие
Код: vbnet
1.
Public Event ABC(Parm1 As String)

- В форме объявляешь переменную с перехватом событий
Код: vbnet
1.
Private WithEvents KKK As MyClass

- Создаешь новый экземпляр класса
Код: vbnet
1.
Set KKK = New MyClass

- Создаешь обработчик события ABC в форме (так же, как и событие формы и ее контролов - оно будет в выпадающем списке)
- В классе генерируешь событие
Код: vbnet
1.
RaiseEvent ABC("kkk")
...
Рейтинг: 0 / 0
Свой event в форме
    #37857967
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пересмотрел десяток примеров, хотел разобраться сам...подходящего не нашел. Есть вопрос по Вашему примеру

Set KKK = New MyClass должно быть в событии Form_load ? Если да, то я чего-то еще не знаю. Сделал все, пробовал ковирялся, но не срабатывает. Есть архив
...
Рейтинг: 0 / 0
Свой event в форме
    #37857973
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что ты создаешь ДВА РАЗНЫХ экземпляра класса. Один в форме, один в модуле. Событие ты генеришь в классе, который в модуле, а ожидаешь его на форме - там его не будет.
...
Рейтинг: 0 / 0
Свой event в форме
    #37857975
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Адаптировал твой пример
...
Рейтинг: 0 / 0
Свой event в форме
    #37857978
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProАдаптировал твой примеротличие в том, что в двух переменных ссылка на один и тот же экземпляр класса. При этом вторая переменная запросто приватная и видна только внутри формы. А у тебя, как я уже сказал, было два разных класса в двух разных переменных.
...
Рейтинг: 0 / 0
Свой event в форме
    #37858001
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за урок. Распечатаю чтоб понять, а то розкинул окна на два больших монитора а толку то... Нужно разобраться чтоб не краснеть

Большое спасибо
В VB я такой трюк могу обойти простым элементом TextBox, которому присвою любое значение и сработает в любой форме события Change.
Код: vbnet
1.
2.
3.
4.
5.
Private Sub Text1_Change()
  If Text1.Text = "" Then Exit Sub
  Text1.Text = ""
'Исполняю нужные действия для этой формы
End Sub


Так я и делал много раз.

А в MSACESS так не получалось. Да и вобще там много подножек. Хорошо что хоть windows 7 снес, ели удалось установить на моноблок Windows XP (и то только готовый образ). Взялся за разработку б/д под течпад, только головная боль

Надеюсь теперь дела хоть пойдут
...
Рейтинг: 0 / 0
Свой event в форме
    #37858009
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё понятно.
Код: vbnet
1.
2.
 Init
 Set kkk1 = kkk


Будет работать

Код: vbnet
1.
2.
3.
 
 Set kkk1 = kkk
Init


а так не будет

Видимо это значит, что моя задача не выполнима. Поскольку если с другой формы сделать [b]Init то в этой форме событие не сработает :([/b]
...
Рейтинг: 0 / 0
Свой event в форме
    #37858012
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SORY SORY SPRY

Отлично. Я немножко запутался. Все работает отлично!!!
...
Рейтинг: 0 / 0
Свой event в форме
    #37858016
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выложу полностью программу на две формы. Может кому в следующий раз тоже пригодится.
...
Рейтинг: 0 / 0
Свой event в форме
    #38008154
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще есть вопрос
1. Создал клас ClPlayer
2. В рабочем режиме программа дает задание обращаясь к класу через колекцию
Код: vbnet
1.
2.
Public PBPlayerInCollection As ClPlayer
Public PBPlayer As New Collection


--------------
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
PlayerInCollection.OpenFile MdbMusicPls("FullPath")
PlayerInCollection.VolumeBlA = Chislo(MdbMusicPls("VolumeBlA"))
PlayerInCollection.RunABLen = Chislo(MdbMusicPls("RunABLen"))
PlayerInCollection.RunABPos = Chislo(MdbMusicPls("RunABPos"))
PlayerInCollection.VolumeBlBC = Chislo(MdbMusicPls("VolumeBlBC"))
PlayerInCollection.VolumeBlD = Chislo(MdbMusicPls("VolumeBlD"))
PlayerInCollection.RunCDPos = Chislo(MdbMusicPls("RunCDPos"))
PlayerInCollection.RunCDLen = Chislo(MdbMusicPls("RunCDLen"))
PlayerInCollection.CutStart = Chislo(MdbMusicPls("StartCutTime"))
PlayerInCollection.CutEnd = Chislo(MdbMusicPls("EndCutTime"))
PBPlayer.Add PlayerInCollection


Когда запускаю функцию, то мне нужно чтоб в форме сработало действие CreateExemplar(Nomer)
Код: vbnet
1.
PBPlayer(f).Play


а по окончанию (там на таймерах работает), чтоб сработало DeleteExemplar(Nomer)
и RaiseEvent DeleteExemplar(NomerExemplar)

На форме для визуализации задействовано 3 элемента масива, для этого я и регистрирую/удаляю номер масива к которому буду обращаться

По предыдущему примеру собития не возникает.
Я так понял что я использую экземпляр в котором не возникает собития в настоящий момент, а там где возникает то оно передается в никуда.

Как воспользоваться тогда Event-ом если у меня клас в колекции ?
...
Рейтинг: 0 / 0
Свой event в форме
    #38008191
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется легче сделать Form111.EventStop.Caption = Timer
для Label
Private Sub EventStop_Change()
Stop
End Sub
чем ломать голову с эвентами. Хотя неохота повсюду будет менять Form111 и клепать элементы за всякий раз
...
Рейтинг: 0 / 0
Свой event в форме
    #38009011
ЦЦа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159,

в 8197167 показано, как можно делать коллекцию, которая транслирует события своих элементов в события коллекции.
...
Рейтинг: 0 / 0
Свой event в форме
    #38009035
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Полезно. Разобрался.
Много чего не описано о методе SET . С виду команда очень как-бы простая.
Но если создать TextBox1 и глобальную например переменную V , тогда
Set v = TextBox1
не просто передаст все значения с TextBox1 в v , но также они будут связаны.
Это можно анализировать когда остановить на паузу программу и менять v , к примеру v = timer . В результате мы увидим изменения в TextBox1 . Если мы запустим программу и изменим значения в поле TextBox1 , то проверив значения v - окажется что оно идентичное. Таким образом переменная v унаследует и события, но его нужно также дополнительно заявить чтоб оно сработало. По этой причине у меня не получалось.

Буквально пол года назад, когда успехи хорошенько пошли с разработкой классов, я начал минимизировать почти весь код, тем самым упрощая запутанную логику для многозадачной программы. Но нашел очень таки отрицательную черту - потеря скорости (заметное торможение). Работая с массивом исполнение программы было намного быстрее
...
Рейтинг: 0 / 0
Свой event в форме
    #38009075
ЦЦа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159,

К сожалению, Вы действительно что-то очень базовое пропустили про Set. Процитирую хелп к VB6:Set Statement...
Generally, when you use Set to assign an object reference to a variable, no copy of the object is created for that variable. Instead, a reference to the object is created. More than one object variable can refer to the same object. Because such variables are references to the object rather than copies of the object, any change in the object is reflected in all variables that refer to it. However, when you use the New keyword in the Set statement, you are actually creating an instance of the object.ПризнаЦЦа, не представляю, какие тут могут быть альтернативные толкования. Разве что можно добавить, что наряду с оператором New может быть вызов функции, метода, или свойства, создающий экземпляр объекта, но надо смотреть документацию к функции/методу/свойству так ли это, и возвращаеЦЦа ли ссылка на новый объект или на существующий (для примера, сравните, функции CreateObject и GetObject).
...
Рейтинг: 0 / 0
Свой event в форме
    #38009113
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одном из примеров нашел еще вот такой пример
Записано в глобальном модуле
Код: vbnet
1.
Call frmMemory.chkSYNC_Click


Раньше такого не практиковал. В моей библии тоже ни слова об этом
...
Рейтинг: 0 / 0
Свой event в форме
    #38009114
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но для того чтоб сработало chkSYNC_Click
в форме вместо private пишем public
...
Рейтинг: 0 / 0
Свой event в форме
    #38009115
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нахрен я себе мозги тогда два года парил с Events если можно из любой глобальной процедуры вызвать свой Event ?
Никто подобного чotto не советовал...


В форме Form1
Код: vbnet
1.
2.
3.
4.
5.
6.
Public Sub EventPlay()
  MsgBox "Yapona mat"
End Sub
Private Sub Command4_Click()
  Call Zapusk
End Sub



В модуле
Код: vbnet
1.
2.
3.
Public Sub Zapusk()
  Call Form1.EventPlay
End Sub
...
Рейтинг: 0 / 0
Свой event в форме
    #38009119
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное, надо было сначала объектную модель языка изучить... А затем уже программировать.
Но мы же обычно всё делаем методом "научного прикосновения" :))
...
Рейтинг: 0 / 0
Свой event в форме
    #38009124
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен)
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Свой event в форме
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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