powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / много одинаковых обработчиков событий
36 сообщений из 36, показаны все 2 страниц
много одинаковых обработчиков событий
    #32240313
A-Lex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто нибудь знает, можно ли в конструкторе в свойствах события поставить уже готовую процедуру, а то есть куча одинаковых обработчиков, которые я уже запарился клонировать
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240322
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В конструкторе чего???
Что такое свойства события???
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240332
A-Lex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В конструкторе формы, где допустим ставим обработчик на открытие формы, при этом тот же обработчик надо поставить на обновление пары тройки полей и т.д.
Не хочеться каждый раз копировать текст обработчика в новую процедуру.
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240335
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишите функцию, например test(), в конструкторе выбираете все нужные контролы и в событии пишите
=test()
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240337
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пихаешь в модуль Public sub
И вызываешь когда надо
типа CALL
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240362
A-Lex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Говорит нет такой функции
а по нажатию в конструкторе в свойствах обработчика кнопки ...
Выдает ее родимую (слово public и в модуль ее засунуть не забыл)
В чем прикол
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240371
A-Lex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Догнал, нужна функция, а уменя процедура.
Сейчас переделаем, хотя стоп, а че она возвращать должна?
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240382
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа мой сообщения в игноре?

В любой модуль суешь что-то вроде

Public Sub MyProcedure
...

End Sub

Вызываешь так

Call MyProcedure
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240389
A-Lex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый Vsevolod Вас я читаю и пробую ваши рекомендации в первую очередь, так вот ругается он на слово call
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240391
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>хотя стоп, а че она возвращать должна?
А зачем ей что-то возвращать? Необязательно.
И Public она быть не обязана, если находится в той же форме
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240393
A-Lex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если это функция, она должна вернуть значение, а если это процедура, он ее не видит
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240407
Фотография TatianaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а кто сказал что функция прям таки обязана что-либо возвращать?
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240416
кам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 TatianaT

а кто сказал что функция прям таки обязана что-либо возвращать?

Бил Гейтс.
Но можно конечно не принимать возвращаемое
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240418
A-Lex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок, переделал ее в функцию, но возникла другая проблема
С перемещением ентой функции в модуль VBA стал ругаться на Me!
говорит: неправильно ты ее юзаешь уважаемый
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240425
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Но можно конечно не принимать возвращаемое
И что вернет такая функция
Public Function test()
MsgBox "test"
End Function
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240429
кам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Естественно.
Есть два пути:
1) set mee = ActiveForm внутри функции
2) в функции параметр типа форма, а при использовании =Func([form])
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240431
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>С перемещением ентой функции в модуль VBA стал ругаться на Me!
>говорит: неправильно ты ее юзаешь уважаемый

А зачем вы ее в общий модуль?
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240439
A-Lex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общий модуль потому, что используется она в двух основных формах
с шестью подставляемыми на выбор подчиненками
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240443
кам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Serge Gavrilov

И что вернет такая функция
Public Function test()
MsgBox "test"
End Function


Выполни и посмотри.
(Для тех кому лень смотреть - Empty)
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240448
A-Lex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To: кам
выдает ошибку на activeForm
говорит незнаю ентого слова
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240454
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Screen.ActiveForm

но при применении этой функции, в случае наличия модальных (диалоговых), окон вас ждут сюрпризы :)
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240459
A-Lex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не догнал.
Из-за переноса функции в модуль, разве форма перестала быть активной.
Почему перестала работать Me!, что изменилось и как с этим бороться
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240465
A-Lex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати
Set Me = Screen.ActiveForm
тоже неработает, говорит неправильно Me юзаем
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240472
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Выполни и посмотри.
>(Для тех кому лень смотреть - Empty)

Я прям смутился :)

И что такое Empty?
Это лишь ключевое слово указывающее на неинициализированное значение.
А вы это видимо за значение принимаете?

А такая функция что вернет:
Public Function test() As Object
MsgBox "test"
End Function

Уж точно не "Empty" :)
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240473
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dim frm as access.form
Set frm = Screen.ActiveForm

или вместо Me использовать Forms("FormName")
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240503
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, а в чем проблема с таким подходом:
Public Sub test()
MsgBox "test"
End Sub

????
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240505
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы перенесли в общий модуль, то можете попробовать вызывать функцию так
=myFunction([Form])

А в общем модуле функцию объявить так
Public Function myFunction(frm as Form)
....

И вместо Me пишите везде frm

Мне кажется, должно работать, но не проверял
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240521
кам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 A-Lex

Set Me = Screen.ActiveForm
тоже неработает, говорит неправильно Me юзаем


Я писал mee, а не Me ! Но можно и frm, конечно.


2 Serge Gavrilov

Я прям смутился :)
И что такое Empty?
Это лишь ключевое слово указывающее на неинициализированное значение.
А вы это видимо за значение принимаете?


Ты будешь смеяться, но это значение.

А такая функция что вернет:
Public Function test() As Object
MsgBox "test"
End Function

Уж точно не "Empty" :)


Конечно не Empty, так как это значение не совместимо с типом Object.
Будет Nоthing. И это тоже значение.
А для целого - 0, и т.д. и что ?
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240848
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ты будешь смеяться, но это значение.
Я уже почти готов поверить, что это значение, но хочется мотивировок...
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240859
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Ты будешь смеяться, но это значение.
>Я уже почти готов поверить, что это значение, но хочется мотивировок...

Все, я сдался, мне уже не хочется :)
Но, кстати по вопросу инициализации переменных,
как определить инициализирован массив или нет?
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240883
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Serge Gavrilov.
>Но, кстати по вопросу инициализации переменных,
>как определить инициализирован массив или нет?
Массив инициализирутся до выполнения первой строки исходного текста значениями, зависящими от типа который хранися в массиве .
числовые типы - 0,

Boolean - False,

Variant - Empty,

Объектные ссылки - Nothing.
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240915
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Shkurenko Alexander

>Массив инициализирутся до выполнения первой строки исходного текста >значениями, зависящими от типа который хранися в массиве .

Так, объявляем динамический массив

Dim a() As Long

Как мне узнать (без обработки ошибки) инициализирован массив или нет.
Ваш ответ в данном контексте я не пойму.
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240921
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Serge Gavrilov

Dim a() As Long

Как мне узнать (без обработки ошибки) инициализирован массив или нет.


Получается, что ответ Александра справедлив для статических массивов. А в случае с динамическими инициализирован любой а(n), где n<a.Count. Причем Count в большинстве случаев нужно считать самому. А при добавлении очередного элемента в массив, этот элемент автоматически инициализируется (во всяком случае, должен автоматизироваться).
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240929
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я говорю об инициализации массива, а не элемента массива.
Может в этом случае термин инициализация не совсем подходит, тогда зададим вопрос так: как узнать, что динамический массив не имеет ни одного элемента?
UBound, LBound дадут ошибку.
IsArray даст True.
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240935
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем в тему, но последовательный вызов tt1 и tt2 в этом коде ошибки не дает.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Option Compare Database
Option Explicit

Private ft As New Collection

Public Function tt1()
  ft.Add  11 
End Function

Public Function tt2()
  Do While ft.Count >  0 
    ft.Remove  1 
  Loop
End Function


А вот узнать инициализирован ли массив
Dim a() as long, если в нем нет ни одного элемента, не прибегая к обработке ошибки, мне не удалось... М.б. есть какой-нибудь SizeOf?
...
Рейтинг: 0 / 0
много одинаковых обработчиков событий
    #32240969
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если попробовать написать один обработчик, а потом его использовать?

В качестве примера приведу пример класса-валидатора для zip-поля, такую же идею можно использовать и в других случаях
Создаем модуль класса ZipValidator

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
private WithEvents zip as TextBox

public property set Zip(z as TextBox)
  set zip=z;
  'здесь же можно установить маску ввода и формат вывода'
end property

sub zip_BeforeUpdate(bool Cancel)
  if (формат не подходит) then
    MsgBox  "Неправильный формат поля." 
    zip.SetFocus
  end if
end sub


а использовать на форме можно так:
(у нас на форме 2 Zip-поля)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
dim zipv1 as new ZipValidator
dim zipv2 as new ZipValidator

  sub Form_Load()
     set zipv1=me.Zip1
     set zipv2=me.Zip2
  end sub

  sub Form_Close()
     set zipv1=Nothing
     set zipv2=Nothing
  end sub


Т.е. мы один раз разработали объект - валидатор, и потом используем его многократно в разных формах или в одной форме на разных контролах.

Точно так же можно разработать любой объект, который реагирует на события другого объекта. Т.е. это один из способов избежать дублирования кода.
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / много одинаковых обработчиков событий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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