|
как передать название программы в ее вызов по нажатию кнопки
|
|||
---|---|---|---|
#18+
ACCESS 2003-2010. Есть кнопочная форма("КнопочнаяФорма"), а в ней кнопка1. Каждый раз при вызове кнопочной формы из основной, в зависимости от названия основной формы (откуда вызывается кнопочная) нужно организовать вызов программы, находящейся в общем программном модуле. Программы в модуле именуются по принципу "Форма1_НужноеДействие1", "Форма2_НужноеДействие1" и т.д. Как мне передать название процедуры в команду CALL что-то типа Private Sub Кнопка1_Click() ' знаем название процедуры (текстовый формат) Call ?????????? End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2016, 09:35 |
|
как передать название программы в ее вызов по нажатию кнопки
|
|||
---|---|---|---|
#18+
garvy, В сторону CallByName посмотрите. Ну или просто, через Select Case ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2016, 09:51 |
|
как передать название программы в ее вызов по нажатию кнопки
|
|||
---|---|---|---|
#18+
Run "Форма1_НужноеДействие1" ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2016, 12:42 |
|
как передать название программы в ее вызов по нажатию кнопки
|
|||
---|---|---|---|
#18+
Select case можно конечно, но это длинный способ. Делаю универсальную кнопочную форму, при вызове которой из разных рабочих форм формируется перечень от 1 до 20 кнопок и на каждую из кнопок вешается программа для данной рабочей формы. CALLBYNAME подошла бы. Но не пойму как передать параметры в нее. Все эти программы для кнопок логично было бы собрать в одном общем модуле и вызывать программы из него. Глядишь - какие-то подошли бы для нескольких случаев - повышаем reusability. Из справки на функцию CALLBYNAME - первый параметр - объект, для которого выполняется метод. Второй - название вызываемой процедуры, третий в моем случае - vbMethod. Непонятно пока с первым параметром. Из модуля кнопочной формы для Кнопка1 надо вызвать процедуру из общего модуля. Что тут объект? Кнопка, сама кнопочная форма, общий модуль? Пробовал все это подставлять - выдает ошибку 2465 application defined or object.defined error или (если объект - кнопка) 438 Object doesnt support method. Упаковал вызов процедуры из общего модуля в отдельную процедуру в модуле кнопочной формы - не помогло. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2016, 12:50 |
|
как передать название программы в ее вызов по нажатию кнопки
|
|||
---|---|---|---|
#18+
garvy, С помощью CallByName из стандартного модуля процедуру не вызовешь. Используйте либо Application.Run, либо поместите процедуру в класс. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2016, 13:17 |
|
как передать название программы в ее вызов по нажатию кнопки
|
|||
---|---|---|---|
#18+
garvy , то есть при нажатии кнопки "сама кнопка" чётко знает, на какой форме она располагается и какое действие при вызове ожидает. Ну так и передавай про нажатию в параметрах и фамилию формы, и требуемое действие... Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
И пусть тебя не смущает формальная тавтология - потенциальный геморрой со всякоразными CallByName и протчая обойдётся дороже кажущейся изящности и лаконичности. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2016, 13:36 |
|
как передать название программы в ее вызов по нажатию кнопки
|
|||
---|---|---|---|
#18+
Спасибо! У меня в итоге заработало таким способом: Private Sub Кнопка1_Click() Dim cl As ПрограммыКнопок ' создал в общих модулях модуль класса с таким именем - в него буду складывать все возможные программы для кнопок Set cl = New ПрограммыКнопок CallByName cl, Кнопка1.Tag, VbMethod ' при открытии кнопочной формы из конкретной рабочей формы прописываю в тегах каждой кнопки название программы для нее, сам список кнопок для каждой рабочей формы веду в отдельной таблице, где дана информация по имени кнопки, всплывающей подсказке, вызываемой программе. End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2016, 13:48 |
|
как передать название программы в ее вызов по нажатию кнопки
|
|||
---|---|---|---|
#18+
garvy... CallByName cl, Кнопка1.Tag, VbMethod ' при открытии кнопочной формы из конкретной рабочей формы прописываю в тегах каждой кнопки название программы для нее... Зачем писать в тэг, затем дергать CallByName? Пишите уж тогда сразу в OnClick Property. Типа: =DoIt(), где DoIt - имя функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2016, 18:42 |
|
|
start [/forum/topic.php?fid=45&msg=39323008&tid=1613093]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 135ms |
0 / 0 |