powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / много одинаковых обработчиков событий
11 сообщений из 36, страница 2 из 2
много одинаковых обработчиков событий
    #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
11 сообщений из 36, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / много одинаковых обработчиков событий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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