Много кнопок с одним событием

antipod
Дата: 06.09.2005 07:33:17
У меня на форме порядка двадцати кнопок, а функция обработки события должна быть одна. Как сделать так чтобы она получала имя вызвавшей ее кнопки?
Alexander G
Дата: 06.09.2005 07:47:41
поспрошать у ActiveControl.Name
ОйОй
Дата: 06.09.2005 07:58:37
Если я правильно понял вопрос... В public модуле разместите функцию, принимающу в качестве параметра кнопку, поле, имя, любую метку. Например:

Public Function MyAnyFuncBlaBla(ByRef frm as Form, ByRef btn as CommandButton) as long
Dim a as string

With frm
a = .Name 'а тут делаем с формой, контролами и т.п. что надо
End with

With btn
a = .Name 'а тут с кнопкой (или любым контролом)
End With

End Function

Т.е. основной смысл - передать в ф-цию обработки ссылку на объект, а там уже... В общем, передавайте в неё всё что захочется, вплоть до форм и рекордсетов. Там и пишите код обработки.

А в самой кнопке на форме разместите что-нибудь, вроде:

Private Sub Кнп_ОгоГо_Click()

Call MyAnyFuncBlaBla(Me, Me.Кнп_ОгоГо)

End Sub

Ещё можно иммитировать массивы контролов (ибо прямой поддержки в Аксе массива контролов, по-моему, нет). Но тот путь, что я привёл - проще.
Alexander G
Дата: 06.09.2005 08:16:54
ОйОй

Как раз этого (определения процедуры обработки события для каждой кнопки) он, похоже и хочет избежать :)
АлексейК
Дата: 06.09.2005 09:09:59
screen.activecontrol
Витал
Дата: 06.09.2005 09:58:33
Alexander G
ОйОй

Как раз этого (определения процедуры обработки события для каждой кнопки) он, похоже и хочет избежать :)

пропиши имя этой единственной функции в свойствах кнопок, на событие клик например, =ИмяФункции(Параметр),
где Параметр м.б. число или текст (имя кнопки).
Ессно функция должна его принимать.
antipod
Дата: 06.09.2005 10:27:01
Спасибо.
В принципе можно и так выкрутится.
Вообще задачка такая, несколько извращенно, но работать должно.

На плане (подложка на форме) может распологатся какое-то число объектов.
Расположение кнопок я эмулирую их положение(при открытии формы они распологаются там где надо). Количество оюектов не ограничено, я побольше кнопок накидал не видимыми. Не хочу описывать все.
Как это избежать? Можно ли добавлять кнопку программно, а так же событие кней?
Витал
Дата: 06.09.2005 10:42:31
antipod
Спасибо.
В принципе можно и так выкрутится.
Вообще задачка такая, несколько извращенно, но работать должно.

На плане (подложка на форме) может распологатся какое-то число объектов.
Расположение кнопок я эмулирую их положение(при открытии формы они распологаются там где надо). Количество оюектов не ограничено, я побольше кнопок накидал не видимыми. Не хочу описывать все.
Как это избежать? Можно ли добавлять кнопку программно, а так же событие кней?


Private Sub Form_Load()
Me.btn1.OnClick = "=fnMyFunction(0)"
End Sub

Если fnMyFunction(0) - функция, существующая в общем модуле, то нет проблем, как видим.
Пользователь2
Дата: 06.09.2005 10:48:54
antipod
Можно ли добавлять кнопку программно?


CreateControl