Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
07.10.2016, 09:35
|
|||
---|---|---|---|
как передать название программы в ее вызов по нажатию кнопки |
|||
#18+
ACCESS 2003-2010. Есть кнопочная форма("КнопочнаяФорма"), а в ней кнопка1. Каждый раз при вызове кнопочной формы из основной, в зависимости от названия основной формы (откуда вызывается кнопочная) нужно организовать вызов программы, находящейся в общем программном модуле. Программы в модуле именуются по принципу "Форма1_НужноеДействие1", "Форма2_НужноеДействие1" и т.д. Как мне передать название процедуры в команду CALL что-то типа Private Sub Кнопка1_Click() ' знаем название процедуры (текстовый формат) Call ?????????? End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.10.2016, 09:51
|
|||
---|---|---|---|
как передать название программы в ее вызов по нажатию кнопки |
|||
#18+
garvy, В сторону CallByName посмотрите. Ну или просто, через Select Case ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.10.2016, 12:42
|
|||
---|---|---|---|
|
|||
как передать название программы в ее вызов по нажатию кнопки |
|||
#18+
Run "Форма1_НужноеДействие1" ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.10.2016, 12:50
|
|||
---|---|---|---|
как передать название программы в ее вызов по нажатию кнопки |
|||
#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, 13:17
|
|||
---|---|---|---|
как передать название программы в ее вызов по нажатию кнопки |
|||
#18+
garvy, С помощью CallByName из стандартного модуля процедуру не вызовешь. Используйте либо Application.Run, либо поместите процедуру в класс. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.10.2016, 13:36
|
|||
---|---|---|---|
как передать название программы в ее вызов по нажатию кнопки |
|||
#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:48
|
|||
---|---|---|---|
как передать название программы в ее вызов по нажатию кнопки |
|||
#18+
Спасибо! У меня в итоге заработало таким способом: Private Sub Кнопка1_Click() Dim cl As ПрограммыКнопок ' создал в общих модулях модуль класса с таким именем - в него буду складывать все возможные программы для кнопок Set cl = New ПрограммыКнопок CallByName cl, Кнопка1.Tag, VbMethod ' при открытии кнопочной формы из конкретной рабочей формы прописываю в тегах каждой кнопки название программы для нее, сам список кнопок для каждой рабочей формы веду в отдельной таблице, где дана информация по имени кнопки, всплывающей подсказке, вызываемой программе. End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.10.2016, 18:42
|
|||
---|---|---|---|
|
|||
как передать название программы в ее вызов по нажатию кнопки |
|||
#18+
garvy... CallByName cl, Кнопка1.Tag, VbMethod ' при открытии кнопочной формы из конкретной рабочей формы прописываю в тегах каждой кнопки название программы для нее... Зачем писать в тэг, затем дергать CallByName? Пишите уж тогда сразу в OnClick Property. Типа: =DoIt(), где DoIt - имя функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=45&tablet=1&tid=1613093]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 130ms |
0 / 0 |