|
автор: Сергей (13.10.2006 в 06:28) |
|
| Как из одной формы вызвать процедуру в другой открытой или закрытой форме?
Access97, 2000 | |
|
| |
|
|
|
| В ДругойФорме сделать процедуру Public
Вызывать ее
Call Form_ДругаяФорма.Кнопка0_Click | |
|
| |
|
|
|
| если форма закрыта, то вызвать процедуру не получится. Предварительно будет необходимо открыть | |
|
| |
|
|
|
| >если форма закрыта, то вызвать процедуру не получится.
>Предварительно будет необходимо открыть
в принципе открывать форму нет необходимости) | |
|
| |
|
|
|
| ну как минимум объявить переменную As Form
Пример, допустим есть форма "frmDeclarant" в ней процедура q
Public Function prom1()
Dim frm As Form
On Error GoTo Err_Debug
Set frm = New Form_frmDeclarant
Call frm.q("sdfgg")
Exit_Here:
Set frm = Nothing
Exit Function
Err_Debug:
Resume Exit_Here
End Function | |
|
| |
|
|
|
| Ну так
Set frm = New Form_frmDeclarant
это и есть создание экземпляра формы т.е. открытие | |
|
| |
|
|
|
| ХЗ... на 2000 давно не работала... на 2003 мой код нормально пашет при закрытой форме. Проверила | |
|
| |
|
|
|
| На самом деле при таком вызове
call Forms_ДругаяФормы.myFunction
экземпляр формы все равно создается.
Это можно увидеть посмотре в этот момент коллекцию Forms.
т.е. работать будет, но если говорить глобально:
"Фунцкию можно вызвать только у открытой формы" | |
|
| |
|
|
|
| БО СПО.... не знала | |
|
| |
|
|
|
| >На самом деле при таком вызове
>call Forms_ДругаяФормы.myFunction
>
>экземпляр формы все равно создается.
Конечно, и, естественно,будут выполнены процедуры на открытие/загрузку формы (если они есть). | |
|
| |
|
|
|
| А у меня почему-то не создаётся | |
|
| |
|
|
|
| а, может, вы просто этого не замечаете?
| |
|
| |
|
|
|
| Сейчас поэксперементировал. Результат такой. Если форма уже запущена, запускается ещё один экземпляр (невидимый), но только один. Если нет, то опять же запускается один невидимый экземпляр.
Если же вызов идет из основной формы к подчинённой, то никаких новых экземпляров не создаётся. Так было и у меня вчера, поэтому я и не видел новых форм. | |
|
| |
|
12 Кб. |
|
| >ХЗ... на 2000 давно не работала... на 2003 мой код нормально
>пашет при закрытой форме. Проверила
А если потом загрузить эту самую форму, то закрывать ее нужно уже два раза, т.е. нужно чтобы docmd.close acform сработал два раза, чтоб форма наконец-таки закрылась. Проверял :)
Поэтому вызов функций из закрытых форм, делать наверное не нуна, лучш не ленится и перенести ее в модуль
Попробуйте в приведенном примере:
- запустить из модуля процедуру в форме;
- открыть саму форму;
- закрыть форму по кнопке 'закрыть' | |
|
| |
|
автор: Аноним (24.10.2006 в 12:26) |
|
| Перенеси функцию в модуль и не мучайся. | |
|
| |