Vba 如何直接在集合中实例化窗体
我以几种方式使用“订单行”表单(按订单号、按产品代码、按客户、按供应商等)。 它的每个实例都可以启动一个新实例 例如:Vba 如何直接在集合中实例化窗体,vba,ms-access,Vba,Ms Access,我以几种方式使用“订单行”表单(按订单号、按产品代码、按客户、按供应商等)。 它的每个实例都可以启动一个新实例 例如: 此表单的第一个实例列出了特定订单的所有订单行 通过双击此实例中的产品ID,用户启动此表单的第二个实例,其中列出了与此特定产品相关的所有订单行 通过双击第二个实例中的客户代码,用户启动第三个实例,该实例列出了与此特定客户相关的所有订单行 等等 为了实例化表单“OrderLines”,我使用以下代码: 在“声明”模块中: 以电话形式: x = boring_functi
- 此表单的第一个实例列出了特定订单的所有订单行
- 通过双击此实例中的产品ID,用户启动此表单的第二个实例,其中列出了与此特定产品相关的所有订单行
- 通过双击第二个实例中的客户代码,用户启动第三个实例,该实例列出了与此特定客户相关的所有订单行
- 等等
x = boring_function_to_find_a_free_room_in_fForms()
Set fForms(x) = New Form_OrderLines
fForms(x).SetFocus
cForms.add Item:=cForms(x), Key:=CStr(cForms(x).Hwnd)
我的问题是:有没有办法在集合中“直接”实例化表单,而不是使用枯燥的函数来在fForms()和fForms(x)中查找一个空闲的房间来实例化表单
我试过:
cForms.add Item:=(New Form_OrderLines)
这是可行的,但:
1) 每个新实例都会关闭上一个实例
2) 我不知道如何编写“Key:=CStr(cForms(x).Hwnd)”的等价物。当您拥有集合时,您不需要数组 这是良好的“ol”代码,用于通过hWnd跟踪多个实例:
Option Compare Database
Public colForms As New Collection
Public mintI As Integer
Public Sub NewFormInstance(frmOld As Form_MyForm)
Dim frm As Form_MyForm
Set frm = New Form_MyForm
mintI = mintI + 1
colForms.Add Item:=frm, Key:=frm.Hwnd & ""
frm.Caption = "My Form " & mintI
DoCmd.MoveSize (mintI + 1) * 80, (mintI + 1) * 350
frm.Visible = True
End Sub
您可以轻松地根据您的场景进行调整。拥有集合时,您不需要阵列 这是良好的“ol”代码,用于通过hWnd跟踪多个实例:
Option Compare Database
Public colForms As New Collection
Public mintI As Integer
Public Sub NewFormInstance(frmOld As Form_MyForm)
Dim frm As Form_MyForm
Set frm = New Form_MyForm
mintI = mintI + 1
colForms.Add Item:=frm, Key:=frm.Hwnd & ""
frm.Caption = "My Form " & mintI
DoCmd.MoveSize (mintI + 1) * 80, (mintI + 1) * 350
frm.Visible = True
End Sub
您可以轻松地将其适应您的场景。为什么需要cForms,您使用它来实现阵列无法实现的功能是什么?另外,要在数组中实例化它的集合fForms(无聊的函数\u到\u找到\u一个\u空闲的房间\u在\u fForms()中)=新表单\u订单行为什么需要cForms,你用它来做数组无法完成的事?另外,要在数组中实例化它的集合fForms(在fForms()中找到一个空闲的房间)=新表单OrderLinesThanks,它可以正常工作。即使我不了解它是如何工作的:表单实例如何在NewFormInstance()执行结束时生存到“frm”变量死亡?frm不会“死亡”,而是存储在集合中,以便稍后通过其键进行识别。谢谢,它工作得很好。即使我不理解它是如何工作的:表单实例如何在NewFormInstance()执行结束时生存到“frm”变量的死亡?
frm
不会“死亡”,而是存储在集合中,以便稍后通过其键进行识别。