|
Свой event в форме
|
|||
---|---|---|---|
#18+
Про event почти ничего не знаю. Нужно чтоб в форме сработало свое событие, но вызов чтоб осуществлялся из модуля. Возможно ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2012, 20:38 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
Конечно - Создаешь модуль класса MyClass - Прописываешь в нем событие Код: vbnet 1.
- В форме объявляешь переменную с перехватом событий Код: vbnet 1.
- Создаешь новый экземпляр класса Код: vbnet 1.
- Создаешь обработчик события ABC в форме (так же, как и событие формы и ее контролов - оно будет в выпадающем списке) - В классе генерируешь событие Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2012, 21:01 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
Пересмотрел десяток примеров, хотел разобраться сам...подходящего не нашел. Есть вопрос по Вашему примеру Set KKK = New MyClass должно быть в событии Form_load ? Если да, то я чего-то еще не знаю. Сделал все, пробовал ковирялся, но не срабатывает. Есть архив ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2012, 22:24 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
Потому что ты создаешь ДВА РАЗНЫХ экземпляра класса. Один в форме, один в модуле. Событие ты генеришь в классе, который в модуле, а ожидаешь его на форме - там его не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2012, 22:28 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
Адаптировал твой пример ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2012, 22:32 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
Shocker.ProАдаптировал твой примеротличие в том, что в двух переменных ссылка на один и тот же экземпляр класса. При этом вторая переменная запросто приватная и видна только внутри формы. А у тебя, как я уже сказал, было два разных класса в двух разных переменных. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2012, 22:35 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
Спасибо за урок. Распечатаю чтоб понять, а то розкинул окна на два больших монитора а толку то... Нужно разобраться чтоб не краснеть Большое спасибо В VB я такой трюк могу обойти простым элементом TextBox, которому присвою любое значение и сработает в любой форме события Change. Код: vbnet 1. 2. 3. 4. 5.
Так я и делал много раз. А в MSACESS так не получалось. Да и вобще там много подножек. Хорошо что хоть windows 7 снес, ели удалось установить на моноблок Windows XP (и то только готовый образ). Взялся за разработку б/д под течпад, только головная боль Надеюсь теперь дела хоть пойдут ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2012, 23:05 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
Всё понятно. Код: vbnet 1. 2.
Будет работать Код: vbnet 1. 2. 3.
а так не будет Видимо это значит, что моя задача не выполнима. Поскольку если с другой формы сделать [b]Init то в этой форме событие не сработает :([/b] ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2012, 23:11 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
SORY SORY SPRY Отлично. Я немножко запутался. Все работает отлично!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2012, 23:14 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
Выложу полностью программу на две формы. Может кому в следующий раз тоже пригодится. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2012, 23:17 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
Еще есть вопрос 1. Создал клас ClPlayer 2. В рабочем режиме программа дает задание обращаясь к класу через колекцию Код: vbnet 1. 2.
-------------- Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Когда запускаю функцию, то мне нужно чтоб в форме сработало действие CreateExemplar(Nomer) Код: vbnet 1.
а по окончанию (там на таймерах работает), чтоб сработало DeleteExemplar(Nomer) и RaiseEvent DeleteExemplar(NomerExemplar) На форме для визуализации задействовано 3 элемента масива, для этого я и регистрирую/удаляю номер масива к которому буду обращаться По предыдущему примеру собития не возникает. Я так понял что я использую экземпляр в котором не возникает собития в настоящий момент, а там где возникает то оно передается в никуда. Как воспользоваться тогда Event-ом если у меня клас в колекции ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2012, 14:10 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
Кажется легче сделать Form111.EventStop.Caption = Timer для Label Private Sub EventStop_Change() Stop End Sub чем ломать голову с эвентами. Хотя неохота повсюду будет менять Form111 и клепать элементы за всякий раз ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2012, 14:28 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
Андрей159, в 8197167 показано, как можно делать коллекцию, которая транслирует события своих элементов в события коллекции. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2012, 23:45 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
Спасибо. Полезно. Разобрался. Много чего не описано о методе SET . С виду команда очень как-бы простая. Но если создать TextBox1 и глобальную например переменную V , тогда Set v = TextBox1 не просто передаст все значения с TextBox1 в v , но также они будут связаны. Это можно анализировать когда остановить на паузу программу и менять v , к примеру v = timer . В результате мы увидим изменения в TextBox1 . Если мы запустим программу и изменим значения в поле TextBox1 , то проверив значения v - окажется что оно идентичное. Таким образом переменная v унаследует и события, но его нужно также дополнительно заявить чтоб оно сработало. По этой причине у меня не получалось. Буквально пол года назад, когда успехи хорошенько пошли с разработкой классов, я начал минимизировать почти весь код, тем самым упрощая запутанную логику для многозадачной программы. Но нашел очень таки отрицательную черту - потеря скорости (заметное торможение). Работая с массивом исполнение программы было намного быстрее ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 00:23 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
Андрей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). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 01:57 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
В одном из примеров нашел еще вот такой пример Записано в глобальном модуле Код: vbnet 1.
Раньше такого не практиковал. В моей библии тоже ни слова об этом ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 04:20 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
но для того чтоб сработало chkSYNC_Click в форме вместо private пишем public ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 04:24 |
|
Свой event в форме
|
|||
---|---|---|---|
#18+
А нахрен я себе мозги тогда два года парил с Events если можно из любой глобальной процедуры вызвать свой Event ? Никто подобного чotto не советовал... В форме Form1 Код: vbnet 1. 2. 3. 4. 5. 6.
В модуле Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 04:37 |
|
|
start [/forum/topic.php?fid=60&fpage=68&tid=2157381]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 151ms |
0 / 0 |