繁体   English   中英

MS Access:在自定义 class 中实例化一个表单

[英]MS Access: instantiating a form within a custom class

我正在尝试从自定义 class 模块 (clsMBox) 中实例化我项目中的现有表单 (frmVisibleForm),并从那里也操作其属性。 我希望能够使用表单中的事件。

我期望发生的事情:

  1. Form frmVisibleForm 被实例化但不可见
  2. 表单设置为模态
  3. 表单设置为可见
  4. 表单获得焦点

怎么了:

没有什么。 运行测试模块的 function 时,没有显示任何表格,没有错误消息,没有提示,什么也没有发生。这是我第一次在访问中尝试自定义类,所以也许我犯了一些基本错误,但我不明白为什么它不像我想象的那样工作。 感谢任何帮助。

这是我到目前为止的代码:

表格(frmVisibleForm):

Option Compare Database
Option Explicit

Public Event DataInput(InputValue As String)

(目前还没有实际事件)

自定义 Class 模块 (clsMBox):

Option Compare Database
Option Explicit

Dim WithEvents cls_frmVisibleForm As Form_frmVisibleForm

Private Sub InstantiateForm()

    Set cls_frmVisibleForm = New Form_frmVisibleForm

    With cls_frmVisibleForm
    
        .Modal = True
        .Visible = True
        .SetFocus
        
    End With

End Sub

我尝试从 (mdlTestMBox) 对其进行测试的模块:

Option Compare Database
Option Explicit

Public Function ClassTest()

    Dim mbox As clsMBox
    
    Set mbox = New clsMBox
    
End Function

我想您需要将InstantiateForm设为公共方法,然后调用它,或者将其重命名为初始化:

Private Sub Class_Initialize()

    Static cls_frmVisibleForm As Access.Form

    Set cls_frmVisibleForm = New Form_frmVisibleForm

    With cls_frmVisibleForm
    
        .Modal = True
        .Visible = True
        .Move 0, 0
        
    End With

End Sub

要打开和关闭表单实例:

Public Function ClassTest()

    Static mbox As clsMBox
    
    Set mbox = New clsMBox
    
    Stop
    DoCmd.Close acForm, Forms(0).Name
  
End Function

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM