gpt4 book ai didi

ms-access - 如何创建表单类的新实例,然后将其作为acDialog框打开(暂停其他代码)?

转载 作者:行者123 更新时间:2023-12-02 04:04:39 25 4
gpt4 key购买 nike

问题

我有一个复杂的搜索表单,需要多次打开(一次)以允许用户同时进行多个搜索。我发现可以使用以下方式打开表单实例(因为它是一个类):

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)



如何打开对话框的新窗体实例(所以调用函数会暂停直到新窗体关闭或隐藏)?

谢谢

最佳答案

您可以使用以下代码检查表单是否可见:

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时拒绝在调用函数中执行任何操作。

关于ms-access - 如何创建表单类的新实例,然后将其作为acDialog框打开(暂停其他代码)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8338895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com