Call Modal windows and return to original windows
Call Modal windows and return to original windows
我想通过模态表单模式实现搜索UI,它可以从不同的表单打开。模态窗体关闭后,模态窗体会将 select 记录 ID 传回调用窗体。
例如,我将使用客户搜索模态表单。当用户要搜索客户名称时,可以通过 Sales Order、Quotation、Invoice 或 AR form(calling form)打开。搜索完成后,模态表单会将 selected 客户 ID 传回调用表单,调用表单可以使用 selected 客户执行任务。
我尝试在调用表单上使用 getfocus。但是,它不起作用,因为如果调用表单有对象,则不会触发获取焦点。
如何在模态窗体关闭后获取控制权并接收从模态窗体传回的 ID?
在每个调用表单中声明一个表单对象变量WithEvents
。如果您的搜索被触发,您打开搜索表单,将变量设置为打开的表单并连接关闭事件。
在 Close
- 事件处理程序中,您可以处理用户在搜索表单中交互的结果值。
搜索表单应将 PopUp
-属性 设置为 True。
调用形式中的代码:
' general declarations area
Private WithEvents frmSearch As Form
Private Sub cmdSearch_Click()
Const FORM_NAME As String = "frmSearch"
DoCmd.OpenForm FORM_NAME, acNormal
Set frmSearch = Forms(FORM_NAME)
frmSearch.OnClose = "[Event Procedure]"
End Sub
Private Sub frmSearch_Close()
' process the result here,
' assuming result is in control txtSearchResult
MsgBox frmSearch.txtSearchResult.Value
End Sub
此解决方案基于用户在完成搜索后关闭搜索表单的假设。如果不是这种情况,您可以在搜索表单中定义自己的事件并改为处理它。
我想通过模态表单模式实现搜索UI,它可以从不同的表单打开。模态窗体关闭后,模态窗体会将 select 记录 ID 传回调用窗体。
例如,我将使用客户搜索模态表单。当用户要搜索客户名称时,可以通过 Sales Order、Quotation、Invoice 或 AR form(calling form)打开。搜索完成后,模态表单会将 selected 客户 ID 传回调用表单,调用表单可以使用 selected 客户执行任务。
我尝试在调用表单上使用 getfocus。但是,它不起作用,因为如果调用表单有对象,则不会触发获取焦点。
如何在模态窗体关闭后获取控制权并接收从模态窗体传回的 ID?
在每个调用表单中声明一个表单对象变量WithEvents
。如果您的搜索被触发,您打开搜索表单,将变量设置为打开的表单并连接关闭事件。
在 Close
- 事件处理程序中,您可以处理用户在搜索表单中交互的结果值。
搜索表单应将 PopUp
-属性 设置为 True。
调用形式中的代码:
' general declarations area
Private WithEvents frmSearch As Form
Private Sub cmdSearch_Click()
Const FORM_NAME As String = "frmSearch"
DoCmd.OpenForm FORM_NAME, acNormal
Set frmSearch = Forms(FORM_NAME)
frmSearch.OnClose = "[Event Procedure]"
End Sub
Private Sub frmSearch_Close()
' process the result here,
' assuming result is in control txtSearchResult
MsgBox frmSearch.txtSearchResult.Value
End Sub
此解决方案基于用户在完成搜索后关闭搜索表单的假设。如果不是这种情况,您可以在搜索表单中定义自己的事件并改为处理它。