我以多种方式使用“OrderLines”表单(按订单号,按产品代码,按客户,按供应商,......)。 它的每个实例都能够启动它的新实例。
示例:
要实例化“OrderLines”形式,我使用这种代码:
在“声明”模块中:
Global cForms As Collection
Global fForms(20) As Form
致电表格:
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)
我的问题是:不是使用boring_function_to_find_a_free_room_in_fForms()和fForms(x)来实例化表单,有没有办法在集合中“直接”实例化它?
我试过了:
cForms.add Item:=(New Form_OrderLines)
它的工作原理但是:
1)每个新实例关闭前一个实例
2)我不知道怎么写相当于“Key:= CStr(cForms(x).Hwnd)”
答案 0 :(得分:0)
收藏时你不需要阵列。
这是好的'代码,用于通过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
您可以轻松地根据您的情况进行调整。