Страница 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
&quot писал(а):у меня вот так

Код: Выделить всё

Private Sub Label1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
MsgBox Label1.Caption
End Sub
работает
Да, так, действительно работает. Спасибо за подсказку!