【发布时间】:2017-06-24 12:34:34
【问题描述】:
我陷入了一件非常烦人的事情。
我需要在类模块中打开一个表单,将类本身传递给表单,以便表单可以使用所有类属性和方法。 我说的是表单,而不是用户表单。 (在第二种情况下不存在问题)。 表单必须是弹出式和模态的。
所以让我们假设打开表单的调用类方法中的这段代码:
sub OpenFormMethodOfTheCallingClass
set MyForm = new [Form_FormToBeOpened]
with MyForm
set .MyFatherClass = Me
.SetFocus ' ... this opens the form
MsgBox "Ok, user has closed the form ..."
end with
end sub
这样,代码流不会在表单内“停止”。 我的意思是消息“好的,用户已经关闭了表单......”立即出现在打开的表单的“前面”。 然后,很明显,方法结束并且表单(同样,显然)消失了,因为它是关闭方法的一个实例。
在设计视图中,Popup 和 Modal 表单都设置为 TRUE。
以这种方式在调用过程中设置两个属性:
with MyForm
.Modal = True
.PopUp = True
(...)
... 根本没有帮助,因为: - MODAL 不影响代码流行为 - 无法设置 POPUP (!):它返回运行时错误。
我发现实现目标的唯一方法就是这样打开:
DoCmd.OpenForm "FormToBeOpened", WindowMode:=acDialog
这样,代码流“卡”在表单中,只有当用户关闭表单本身时,流程才会返回到调用过程及其后续指令。 但问题是我无法将调用类传递给表单。 好的,有人可能会反对:由于我的表单是 MODAL,用户不能打开表单的多个同时期实例,因此我可以通过其他方式将调用类的任何属性传递给表单(“bridge-public -variables",或 OpenArgs 中的 JSON ...)。但这……真的太可怕了。
我害怕,不知道为什么,这是一个非常愚蠢的问题,答案很简单。 :)
让我们看看。
谢谢,
FL
【问题讨论】: