Страница 1 из 1
Обработчик событий для нескольких объектов формы.
Добавлено: 30 июн 2008, 11:46
AlexZZZ
Добрый день! Хочу предложить такую задачу:
На пользовательской форме есть несколько десятков объектов "Label" . В ответ на событие "Click" должен запускаться макрос, в каждом случае отличающийся только аргументами, определяемыми свойствами ".Name" и ".Caption" соответствующих объектов. Можно ли сделать групповой обработчик события "Click", который возвращал бы значение свойств ".Name" и ".Caption" данного объекта, чтобы не прописывать несколько десятков обработчиков.
Re: Обработчик событий для нескольких объектов формы.
Добавлено: 30 июн 2008, 11:50
VictorM
а почему нет?
прописать в макросе все Label и изменить им нужные свойства "одним махом". (click - ом)
или я не так понял вопрос ?
Re: Обработчик событий для нескольких объектов формы.
Добавлено: 30 июн 2008, 13:17
AlexZZZ
Я имел в виду, чтобы не писать кучу обработчиков событий для однотипных объектов:
Код: Выделить всё
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
' и т.д.
А написать один обработчик события для всех объектов Label на форме или в одной рамке сразу. Свойства объекта Label в данном случае не присваиваются, а наоборот, являются аргументами функции.
В противном случае, было бы всё очень просто.
Re: Обработчик событий для нескольких объектов формы.
Добавлено: 30 июн 2008, 13:23
VictorM
не знаю, проверить не на чем (лень Вашу форму полностью воспроизводить

)
А что, так:
Код: Выделить всё
Sub Test()
'Функция (label1.name, label1.caption)
'Функция (label2.name, label2.caption)
'Функция (label3.name, label3.caption)
End Sub
не работает?
***
p.s. если бы сразу видел Вашу редакцию предыдущего поста, то этот был бы неуместен.
Re: Обработчик событий для нескольких объектов формы.
Добавлено: 30 июн 2008, 13:25
bi-lya
Re: Обработчик событий для нескольких объектов формы.
Добавлено: 30 июн 2008, 13:33
AlexZZZ
Эх, не быть мне политиком...

Извиняюсь за, возможно, плохую формулировку проблемы. Попробую объяснить ещё раз:
Запускаемая функция должна зависит от того, по какой надписи пользователь щёлкнул. От этого будут зависеть аргументы функции, определяемые свойствами объекта (Label), вызвавшего событие "Click".
P.S.: Когда отвечал, не видел предыдущего сообщения. Видимо, это то, что нужно, спасибо! Буду пробовать.
Re: Обработчик событий для нескольких объектов формы.
Добавлено: 30 июн 2008, 14:08
VictorM
AlexZZZ,
Запускаемая функция должна зависит от того, по какой надписи пользователь щёлкнул. От этого будут зависеть аргументы функции, определяемые свойствами объекта (Label), вызвавшего событие "Click".
вот теперь понял

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

Re: Обработчик событий для нескольких объектов формы.
Добавлено: 30 июн 2008, 14:45
AlexZZZ
Ура! Заработало!!
bi-lya, спасибо большое!!!
Единственная проблема: такая конструкция для объекта Label не работает:
Код: Выделить всё
Private Sub ctl_DblClick()
MsgBox ctl.Caption
End Sub
Или событие "DblClick" для объекта "Label" недопустимо и возможно использовать только событие "Click" ("ctl_Click" - работает)?
Re: Обработчик событий для нескольких объектов формы.
Добавлено: 30 июн 2008, 15:03
VictorM
у меня вот так
Код: Выделить всё
Private Sub Label1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
MsgBox Label1.Caption
End Sub
работает
Re: Обработчик событий для нескольких объектов формы.
Добавлено: 01 июл 2008, 00:18
AlexZZZ
" писал(а):у меня вот так
Код: Выделить всё
Private Sub Label1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
MsgBox Label1.Caption
End Sub
работает
Да, так, действительно работает. Спасибо за подсказку!