|
обработчик событий формы/контрола
|
|||
---|---|---|---|
#18+
Доброго дня! Мне необходимо в рантайме разным контролам и формам назначить идентичный обработчик события - некоторую пользовательскую функцию ОБРАБОТКА, определенную в общем модуле. Например, назначить ее событию OnMouseDown. С назначением обработчика в VBA нет вопросов: ="=ОБРАБОТКА()", но как передать параметры стандартного обработчика, которые есть в модуле формы при использовании "[event procedure]" - MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single). Вопрос - как значения этих параметров передать в мою функцию ОБРАБОТКА(Button As Integer, Shift As Integer, X As Single, Y As Single)? спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2016, 05:46 |
|
обработчик событий формы/контрола
|
|||
---|---|---|---|
#18+
v-e-t, Прямо внутри события и вызывайте свою функцию / процедуру и заодно передавайте значение параметров. Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2016, 06:42 |
|
обработчик событий формы/контрола
|
|||
---|---|---|---|
#18+
studierenv-e-t, Прямо внутри события и вызывайте свою функцию / процедуру и заодно передавайте значение параметров. Код: vbnet 1. 2. 3.
Вопрос именно в том, чтобы не писать в модуле формы вообще ничего, а в режиме рантайм назначить обработчик в виде готовой функции потому, что форм будет много (например 30), и при чего-либо в функции я не хочу править все 30 форм. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2016, 15:12 |
|
обработчик событий формы/контрола
|
|||
---|---|---|---|
#18+
v-e-t... Вопрос именно в том, чтобы не писать в модуле формы вообще ничего... Тогда никак. v-e-t... форм будет много (например 30), и при чего-либо в функции я не хочу править все 30 форм. Можно для каждого типа формы/контрола описать класс-обертку, где подписываться на события, описывать процедуры обработки событий, и в них реализовывать нужный "стандартизированный" функционал. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2016, 16:39 |
|
обработчик событий формы/контрола
|
|||
---|---|---|---|
#18+
Пример лайт: для формы - бэк колор области данных при активации/деактивации для кнопок - клик и форе колор на получение/потерю фокуса для текстбоксов - мышка вниз, мышка вверх. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2016, 18:31 |
|
обработчик событий формы/контрола
|
|||
---|---|---|---|
#18+
Predeclared, На счет своих классов и инстансов форм я знаю. Интересует решение именно в постановке вопроса, но все равно спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2016, 07:59 |
|
обработчик событий формы/контрола
|
|||
---|---|---|---|
#18+
v-e-t, добрый день. Собственно, Predeclared уже все сказал, я лишь добавлю, пару слов. Может вам пригодится. К параметрам, которые вас интересуют (Button As Integer, Shift As Integer, X As Single, Y As Single), можно получить доступ только из модуля формы. Делегаты тут не используешь. Писать код в каждой форме вас не устраивает, значит, как сказал Predeclared, на эти события нужно подписаться откуда-нибудь. Причем это должен быть только модуль класса. Собственно я и хотел предложить вариант. Вот тут я выкладывал файл: http://am.rusimport.ru/MsAccess/topic.aspx?ID=782 Тема другая, но там есть фрагмент, который можно приспособить для вашей задачи. Вы хотите в одном месте разместить код, который будут использовать разные формы/отчеты и их контролы. Т.е. нужен класс. в примере, что я дал, одна из подсистем это своеобразный Диспетчер уровня приложения, который следит за происходящим: Открытие/Закрытие/Активация/Декативация форм/отчетов в приложении(Диспетчер представлен двумя классами и одним интерфейсом) и генерирует соответствующие события. Так вот. По вашей задаче. Как я сказал, вам нужен класс, где вы разместите свой код на все случаи жизни. В моем примере таким классом был модуль формы F_Start. В этом классе, создается объектная переменная типа Диспетчера. Это вам дает доступ ко событиям Диспетчера. А события эти: Event AfterOpenFR(FR_Object As Object) Event ActivationFR(FR_Object As Object, blnAfterOpen As Boolean) Event DeactivateFR(FR_Object As Object, intReasonDeact As ReasonDeact, NewFR As Object, FR_IsBeingActivated As Object) Event CloseFR(FR_Object As Object) Т.е. вы получаете возможность прослушивать из одного места события Открытие(суррогат этого события)/Закрытие/Активация/Декативация всех форм/отчетов. Непосредственная дальнейшая организация - это уже ваше творчество, как построите. у Диспетчера есть ряд ограничений. Они описаны в файле: формы не должны быть всплывающие или быть открыты как acDialog, а также все они должны иметь модуль. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2016, 01:41 |
|
|
start [/forum/topic.php?fid=45&msg=39154022&tid=1614019]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
79ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 334ms |
total: | 501ms |
0 / 0 |