![]() |
|
Модераторы: Akina |
![]()
|
|
| АлексейМ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 29.8.2005 Репутация: нет Всего: нет |
Народ!
У меня проблемка. При клике по контролу формы (прямоугольнику!) надо вывести в MessageBox его имя. Но функция, которую я намалякал, выводит имя активного объекта, а не того, по которому кликаю. Подскажите, плиз, как из этого выпутаться |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Событие OnClick происходит абстрактно в приложении, и нельзя определить где именно (косвенно - по смещению фокуса, но не все контролы его получают).
В то же время события OnMouseDown, OnMouseUp, etc. получают в качестве параметров координаты события в окне приложения (внимательно следить за ед. изм.!). Следовательно, перебрав все контролы и сравнив, можно выяснить, в тело какого контрола попадает клик. Возможно, следует учитывать также Hidden. Трудности возникнут, если есть несколько видимых контролов один над другим. Или, скажем, с закладками. Как вывернуться тут - пока не знаю... впрочем взаимное расположение контролов известно на стадии дизайна, а если оно потом программно изменяется - это можно отслеживать. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Papirus |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 298 Регистрация: 19.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 1 |
Событие Click здесь наступает (если речь о прямоугольнике) в случае щелчка по линии границы. Это надо?
Тогда все просто - пишем свой код в процедуре обработки события:
Если надо во всей области прямоугольника, то не знаю, что и посоветовать. Попробуй вместо прямоугольника использовать Label соответственно оформленный. |
|||
|
||||
| АлексейМ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 29.8.2005 Репутация: нет Всего: нет |
Большое спасибо!
Ещё вопросик. Почти по этой же теме. Вот смотрите. У меня два контрола. При клике по одному из них должно определяться его имя и помещаться в функцию. Например, чтобы при клике по нему выводилось сообщение с его именем (но вообще для разных целей, конечно). Для чего я это спрашиваю? Просто представьте, что этих контролов штук 50, или тыща - и для каждого прописывать функцию. Это ведь ужасно! А если имя будет определяться и помещаться в функцию, то хватит и её одной - она просто станет универсальной Подскажите, пожалуйста. Наверное, не только мне это интересно. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Дело в том, что невозможно понять пока ЦЕЛЬ всей этой заморочки. Не локальную маленькую по получению имени контрола, а за нафига это потребовалось...
Озвучь. Вдруг окажется, что задача имеет иное решение? ведь не свою среду визуального построения макетов поди пишешь... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| АлексейМ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 29.8.2005 Репутация: нет Всего: нет |
Да это во многом пригодится может
Мне бы пока решение этой задачки, если можно. Всё дело в том, что для решения моей проблемки уже практически всё сделано, кроме вот того, о что я попросил объяснить Когда сделаю, обязательно расскажу! А пока... Нет, в общих чертах я сейчас расскажу Алгоритм примерно такой при клике по контролу, означающему какое-то место на плане зала: 1. Передача в функцию имени места, то, о чём я и спрашиваю - номера его (имя контрола на плане зала) 2. Определение, занято или свободно место 3. Затем, если свободно, открыть форму для заполнения именно этого места. После принятия данных место считается занятым 4. Если место занято, то открыть форму очистки (освобождения) места 5. Ну и, в конце концов, обновление формы-плана зала (окраска занятых-незанятых мест в разные цвета) Вот такие пироги. Первый пункт - вот чего прошу объяснить Добавлено @ 18:24 Кстати, чё значит
Всё моё Заранее благодарю за помощь Это сообщение отредактировал(а) АлексейМ - 29.8.2005, 18:20 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
И ты эту всю байду рисуешь ректанглами? да ты сам виноват - выбрал наихудший по реализации вариант. Замени просто кучу прямоугольников на массив (слышишь? МАССИВ!) лэйблов - и от твоих проблем ничего не останется... мало того что лабел принимает клик, так когда есть уцправляющий массив, он принимается как
Так что не зря я с тебя тряс целю работы... а по коду от такой замены будет правка ну просто минимальная. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| АлексейМ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 29.8.2005 Репутация: нет Всего: нет |
Спасибо огромное!
Когда я буду массив лэйблов использовать, всё-таки будет определятся имя конкретного лэйбла при клике по нему? |
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Имя у них будет на всех одно. А вот индекс у каждого свой - и он передается обработчику события. грубо - если у тебя 5 рядов по 5 лэйбаков, то
Ты эта... прежде чем спрашивать - попробуй... Простейший способ создания массива контролов с управляющим массивом - это копирование-вставка в макете... при вставке второго экземпляра тебе будет предложено создать управляющий массив - согласись. Обработчики событий пиши ПОСЛЕ создания управляющего массива - иначе придется дописывать аргумент руками. И не забудь отслеживать порядок расположения лэйблов по этому индексу. Да, индекс начинается с нуля. Добавлено @ 09:29 Что еще удобно - достаточно в макете поместить 1 лабел с управляющим массивом, а остальные можно создавать из него в рантайме... но это потом, сперва со статическим массивом контролов разберись. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| АлексейМ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 29.8.2005 Репутация: нет Всего: нет |
P.S. Пробую прибамбасы форума |
|||
|
||||
| АлексейМ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 29.8.2005 Репутация: нет Всего: нет |
Эээ... Позвольте ещё вопросик - что такое лабел? В смысле по-русски...
А то чё-то в справке не нашёл Я ещё немного новичок. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Label. Он же Надпись.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| АлексейМ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 29.8.2005 Репутация: нет Всего: нет |
Понял.
|
|||
|
||||
| АлексейМ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 29.8.2005 Репутация: нет Всего: нет |
Все хелпы перерыл, а как массив сделать, не нашёл. Подскажите, кто могет!
|
|||
|
||||
| Papirus |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 298 Регистрация: 19.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 1 |
Чессно говоря, про массивы контролов в VB6 знаю, а в Access не встречал и есть большие сомнения, что они таки существуют.
Добавлено @ 08:07 Есть еще и такой вариант действий (не такой красивый, к сожалению, как с массивом) - создать функцию с параметром в общем модуле. Затем разместить Надписи на форме и в свойствах каждой на событие клик (или иное) прописать =ИмяФункции(Параметр). Зато здесь сам управляешь - какой лейбл какой параметр передает функции. При этом также как и с массивом изменения в алгоритм работы проги потребуется вносить только раз. |
|||
|
||||
![]()
|
| Правила форума "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. |