Зачем придумали Ме!

ё
Дата: 27.11.2009 13:45:29
удобно использовать в процедурах принимающих параметр - Form
можно писать универсальную процедуру для всех форм
обновление формы и возврат на запись - например
ну и само собой Me - отработает быстрее чем Forms("МаяКрасиваяФорма")
Александр Маркин
Дата: 27.11.2009 13:47:08
Joss,

ты как всегда прав!
отакота
Дата: 27.11.2009 13:52:19
Александр Маркин
Владимир Саныч,

5. Отличия . и ! .

Из системы помощи Microsoft Access 97
Операторы ! и . (точка) в идентификаторах указывают тип элемента, стоящего справа от оператора.
Оператор ! указывает, что следующий за ним элемент является элементом, определяемым пользователем (элементом семейства). Например, с помощью оператора ! определяют ссылку на открытую форму, отчет или элемент управления в открытой форме или отчете. (Forms![Заказы]![КодЗаказа])
Оператор . (точка) обычно указывает, что следующий за ним элемент определен в Microsoft Access. Например, оператор . (точка) используется для ссылок на свойства форм, отчетов и элементов управления. Допускается также использование оператора . (точка) для ссылок на значение поля в инструкции SQL, метод Visual Basic for Application или семейство. Например, идентификатор Forms![Заказы].Controls представляет ссылку на семейство Controls формы Заказы.

Но ведь без Ме! обойтись можно! Код работает Так зачем использовать?
как минимум, читабельность кода повышается. если вы пишете в модуле обращение к контролу без Me перед ним, то сходу такое обращение нельзя отличить от обращения к переменной, объявленной где-то вне визуальных пределов (например, на уровне модуля или как public) - чтобы это узнать наверняка, надо либо рыться в списке имен контролов формы, либо делать поиск деклараций по проекту. А в случае "Me.Имя" все сразу очевидно прямо на месте.

Возможно, вы сейчас не задумываетесь о читабельности вашего кода, но тем не менее это весьма важное качество, и если о нем не заботиться, то по мере разрастания проекта, либо при возвращении к проекту какое-то время спустя, вам возможно придется тратить (лишнее) время на разбор прежних полетов мысли.
Диам
Дата: 27.11.2009 14:37:17
Joss
Me заменяет конструкцию Forms("Имя_текущей_формы") или Repors("Имя_текущего_отчета") можно обходится и без Me, но писать придется больше. А зачем писать больше?(с)

вообще-то в форме можно напрямую обратиться к контролу без вызова Me и без вызова конструкции Forms("Имя_текущей_формы"), так что писать больше не придется.
Насколько я понял, именно об этом и пишет топикстартер.
Ну и ответ Отактота оч. верен. Читабельность и удобность - поставил точку - вывалились методы, свойства и контролы, лежащие на форме.
Александр Маркин
Дата: 27.11.2009 14:46:30
Спасибо, отакота!
CoolMind
Дата: 27.11.2009 15:43:48
Всё верно, читабельность кода резко возрастает при использовании Me, This, Self (в зависимости от языка программирования). Я раньше тоже не любил эту Me. А потом, спустя какое-то время, не мог понять, переменная это или вызов функции, или поле формы, или поле рекордсета передо мной.
Ну, про всплывающие подсказки после набора "Me." уже не упоминаю.
Дальше, скорость обращения. Не помню точно, но кажется, VBA быстрее обращается и находит поле формы, если оно указывается через Me.
Несколько месяцев назад был топик (по-моему), в котором указывалось, что обращение "Me." VBA иногда игнорирует и обозначает ошибкой, в то время как "Me!" проходило без проблем. Могу ошибаться.
nord-woolf
Дата: 27.11.2009 16:20:53
Joss
Ме работает только в модулях формы или отчета.

Не совсем так, правильнее так:
Ме работает только в модулях классов. (коими и являются модули форм и отчетов)
Бенедикт
Дата: 27.11.2009 17:39:44
Me нужно (не путать с "можно применять") там, где нужна ссылка на экземпляр класса. Например, справа от знака присваивания в операторе Set, или при передаче параметра в функцию. Me не заменяет конструкцию Forms("Имя_текущей_формы") или Reports("Имя_текущего_отчета").
ILL HEAD
Дата: 28.11.2009 15:11:48
Бенедикт,

в смысле $this ?
ILL HEAD
Дата: 28.11.2009 15:16:28
ILL HEAD
Бенедикт,

в смысле $this ?
т.е. хотел сказать , что кроме как в классах эта конструкция бессмыссленна (избыточна)