Обработчик событий для нескольких объектов формы.
Модератор: Naeel Maqsudov
Добрый день! Хочу предложить такую задачу:
На пользовательской форме есть несколько десятков объектов "Label" . В ответ на событие "Click" должен запускаться макрос, в каждом случае отличающийся только аргументами, определяемыми свойствами ".Name" и ".Caption" соответствующих объектов. Можно ли сделать групповой обработчик события "Click", который возвращал бы значение свойств ".Name" и ".Caption" данного объекта, чтобы не прописывать несколько десятков обработчиков.
На пользовательской форме есть несколько десятков объектов "Label" . В ответ на событие "Click" должен запускаться макрос, в каждом случае отличающийся только аргументами, определяемыми свойствами ".Name" и ".Caption" соответствующих объектов. Можно ли сделать групповой обработчик события "Click", который возвращал бы значение свойств ".Name" и ".Caption" данного объекта, чтобы не прописывать несколько десятков обработчиков.
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
а почему нет?
прописать в макросе все Label и изменить им нужные свойства "одним махом". (click - ом)
или я не так понял вопрос ?
прописать в макросе все Label и изменить им нужные свойства "одним махом". (click - ом)
или я не так понял вопрос ?
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
Я имел в виду, чтобы не писать кучу обработчиков событий для однотипных объектов:
А написать один обработчик события для всех объектов Label на форме или в одной рамке сразу. Свойства объекта Label в данном случае не присваиваются, а наоборот, являются аргументами функции.
В противном случае, было бы всё очень просто.
Код: Выделить всё
Private Sub Label1_Click()
'Функция (label1.name, label1.caption)
End Sub
Private Sub Label2_Click()
'Функция (label2.name, label2.caption)
End Sub
Private Sub Label3_Click()
'Функция (label3.name, label3.caption)
End Sub
' и т.д.
В противном случае, было бы всё очень просто.
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
не знаю, проверить не на чем (лень Вашу форму полностью воспроизводить
)
А что, так:
не работает?
***
p.s. если бы сразу видел Вашу редакцию предыдущего поста, то этот был бы неуместен.

А что, так:
Код: Выделить всё
Sub Test()
'Функция (label1.name, label1.caption)
'Функция (label2.name, label2.caption)
'Функция (label3.name, label3.caption)
End Sub
***
p.s. если бы сразу видел Вашу редакцию предыдущего поста, то этот был бы неуместен.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
Эх, не быть мне политиком... 
Извиняюсь за, возможно, плохую формулировку проблемы. Попробую объяснить ещё раз:
Запускаемая функция должна зависит от того, по какой надписи пользователь щёлкнул. От этого будут зависеть аргументы функции, определяемые свойствами объекта (Label), вызвавшего событие "Click".
P.S.: Когда отвечал, не видел предыдущего сообщения. Видимо, это то, что нужно, спасибо! Буду пробовать.

Извиняюсь за, возможно, плохую формулировку проблемы. Попробую объяснить ещё раз:
Запускаемая функция должна зависит от того, по какой надписи пользователь щёлкнул. От этого будут зависеть аргументы функции, определяемые свойствами объекта (Label), вызвавшего событие "Click".
P.S.: Когда отвечал, не видел предыдущего сообщения. Видимо, это то, что нужно, спасибо! Буду пробовать.
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
AlexZZZ, 
конечно, все что я писал выше - это о другом
вот теперь понялЗапускаемая функция должна зависит от того, по какой надписи пользователь щёлкнул. От этого будут зависеть аргументы функции, определяемые свойствами объекта (Label), вызвавшего событие "Click".

конечно, все что я писал выше - это о другом

"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
Ура! Заработало!! bi-lya, спасибо большое!!!
Единственная проблема: такая конструкция для объекта Label не работает:
Или событие "DblClick" для объекта "Label" недопустимо и возможно использовать только событие "Click" ("ctl_Click" - работает)?
Единственная проблема: такая конструкция для объекта Label не работает:
Код: Выделить всё
Private Sub ctl_DblClick()
MsgBox ctl.Caption
End Sub
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
у меня вот так
работает
Код: Выделить всё
Private Sub Label1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
MsgBox Label1.Caption
End Sub
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
Да, так, действительно работает. Спасибо за подсказку!" писал(а):у меня вот так
работаетКод: Выделить всё
Private Sub Label1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) MsgBox Label1.Caption End Sub