Problem
我有一个复杂的搜索表单,需要多次(同时)打开,以允许用户同时进行多个搜索。我发现可以使用以下命令打开表单的实例(因为它是一个类):
Option Compare Database
Option Explicit
'Array to hold Form Instances
Private MyFormCollection(1 To 4) As Form_frmTest
Private Sub cmd_CloneMe_Click()
Dim intCounter As Integer
For intCounter = 1 To 4
Set MyFormCollection(intCounter) = New Form_frmTest
MyFormCollection(intCounter).Caption = "Form #" & intCounter
MyFormCollection(intCounter).Visible = True
Next intCounter
Forms!frmTest.SetFocus
End Sub
这是一个打开表单的多个实例的示例,而不是我将用于最终代码的示例,因为每次点击我只需要打开一个实例,但很可能已经打开了其他实例!
但我无法找到一种方法将这些重复项之一作为 acDialog (因此调用函数会暂停,直到您隐藏或关闭新的对话框表单)。这是我通常打开普通表格(而不是副本)的方式:
Call DoCmd.OpenForm("SomeForm", acNormal, , , , acDialog)
Question
如何将表单的新实例作为对话框打开(因此调用函数会暂停,直到新表单关闭或隐藏)?
Thanks
您可以使用此代码来检查表单是否可见:
Private Function IsVisible(intObjType As Integer, strObjName As String) As Boolean
Dim intObjState As Integer
intObjState = SysCmd(acSysCmdGetObjectState, intObjType, strObjName)
IsVisible = intObjState And acObjStateOpen
End Function
如果是,除了等待之外什么都不做:
Do While IsVisible(acForm, "frmInfo")
DoEvents
Loop
=================
好的,另一个想法:您可以选择打开对话框模式并停止调用函数中的代码,或者使用更多对话框并运行调用函数。
我认为解决这个问题的唯一方法是打开对话框的计数器,并在计数仍然 > 0 时拒绝在调用函数中执行任何操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)