![]() |
|
Модераторы: Akina |
![]()
|
|
| BelkaJul |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 4.9.2007 Репутация: нет Всего: нет |
доброго времени суток, коллеги.
Общая суть проблемы: на форме расположено около сотни объектов "прямоугольник" (имена в виде L1S1P1, L2S1P1....). В базе товара есть поле "полка на складе" (хранится строка, совпадающая с именем одного из "прямоугольников"). Надо чтобы кликая на прямоугольнике (символизирующем конкретную полку) - выдавалась информация о товаре, который лежит на складе. ЧТобы не плодить код сделань так:
Т.е. в цикле на все эти "прямоугольники" вешаю процедуру обработки "macros_fun". Передать в macros_fun агрументом имя объекта (на котором кликнули) не получается. Можно ли как-нибудь в функции macros_fun определить на каком же прямоугольнике только что кликнул пользователь? вариант Screen.ActiveForm.ActiveControl.ControlName не срабатывает |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Это макрос или процедура в модуле? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| BelkaJul |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 4.9.2007 Репутация: нет Всего: нет |
это процедура в модуле. поэтому и в квадратных скобках (если верить Хелпу, то:
в этой процедуре будет запрос к таблице и выборка строк по имени прямоугольника. Просто прописывать около ста раз на каждый прямоугольник
и для каждого прямоугольника прописывать, какое же имя передавать в запрос - это просто дикость |
||||||||
|
|||||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Предлагаю такие решения.
Решение 1 - Вместо OnClick использовать OnMouseUp - ему передаются, кроме всего прочего, координаты клика, что позволит определить контрол, на котором произошел клик. Что-нить вроде:
Если это неприменимо, и надо использовать обязательно OnClick, то Решение 2 - Дополнительно обработать OnMouseDown, в нем определять имя контрола, на котором выполнен последний клик (также по координатам клика), сохранять его в переменной уровня модуля или проекта, и использовать его в процедуре OnClick. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Зачем тебе макрос? Функция гораздо лучше - ошибки можно обработать и прочее. В модуле необходимо объявить публичную фнункцию. Элементу на событие присваивать так "=имя_функции()". ActiveControl не работает, потому что прямоугольник не может получить фокуса. Для того чтобы сосалться на текущий объект в событии используй CodeContextObject.
Т.е. из справки You can use the CodeContextObject property to determine the object in which a macro or Visual Basic code is executing. Read-only Object. expression.CodeContextObject expression Required. An expression that returns one of the objects in the Applies To list. Setting The CodeContextObject property is set by Microsoft Access and is read-only in all views. Remarks The ActiveControl, ActiveDataAccessPage, ActiveDatasheet, ActiveForm, and ActiveReport properties of the Screen object always return the object that currently has the focus. The object with the focus may or may not be the object where a macro or Visual Basic code is currently running, for example, when Visual Basic code runs in the Timer event on a hidden form.
|
|||
|
||||
| BelkaJul |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 4.9.2007 Репутация: нет Всего: нет |
Akina, видимо где-то я не догоняю :(
bopoha,
аааа, точно!!!!! (переделала. Вместо прямоугольников теперь кнопки) Теперь можно использовать и ActiveControl.ColntrolName
Большое спасибо всем за участие и помощь!!! |
||||
|
|||||
![]()
|
| Правила форума "MS Access" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS Access | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |