您好我想知道如何在所有单元之间共享资源,例如文本框的值,以便我可以轻松访问它而无需函数中的参数。如果我有来自不同组件的大量值和从数据库中获取的信息,很难将它们作为参数放在函数中。
有没有标准的方法呢?
答案 0 :(得分:0)
近十年来我没有使用Delphi。对不起,如果我的回答是错误的。
我认为你可以将所有这些价值放在一个共同单位中,让我们称之为[XXInfoManager]
然后:
(1)UI单元可以将用户输入的值放入XXInfoManager单元, 通过类似的东西:
XXInfoManager.setXXValue(UserInput.text)
(2)功能单元可以从XXInfoManager单元获取值, 通过类似的东西:
x := XXInfoManager.getXXValue()
使用此模式,所有常见值都由公共模块管理, 因此,使用这些值的模块和产生这些值的模块之间不存在任何依赖关系。 相反,它们都依赖于常见的XXInfoManager模块。
答案 1 :(得分:0)
虽然全局变量通常是个坏主意,但全局对象的公共只读属性却不是。并且它们可以具有更好(更简单)文档的每个全局数据项(因为所有文档都在一个地方)和使用它的函数(因为它们不需要不同的参数,每个真正需要记录的功能)。
使用私有字段( Ffoo:string )为数据项定义一个全局对象(通常在一个公共单元中),并通过公共只读属性( property foo)公开它们:string read Ffoo )。然后,您可以通过 MyGlobalObject.foo 等参考引用这些项目。
如果是私人领域'如果没有在这个通用的全局单元中设置值,那么你必须注意不能简单地从任何地方设置它们#34;。在这种情况下,可以通过调用公共全局对象的公共函数来设置私有值,以便使属性'必须通过调用 MyGlobalObject.SetNewFoo(bar)之类的内容来有意识地设置值,而不是简单地通过编写 MyGlobalObject.foo:= bar 来设置。您甚至可以在以下函数中测试Sender参数: MyGlobalObject.SetNewFoo(bar,Sender),以便它们只能由一个特定对象调用。
但与所有全球数据一样,即使采用这种方法,维护数据完整性也需要一些编码自律,并且在由多个人处理的代码中开始变得危险。只需确保控制全局数据值的设置方式(谁可以设置它们),否则你将快速地沿着全局变量兔子孔,这应该不惜一切代价避免。
我打算将此作为评论发布,但用完了字符;因此,作为答案发布的原因。