gpt4 book ai didi

delphi - 将参数传递给delphi TFrame

转载 作者:行者123 更新时间:2023-12-03 15:51:20 29 4
gpt4 key购买 nike

为了避免单例和全局变量,我希望能够将参数传递给 TFrame 组件。然而,由于 TFrame 通常在设计时包含在表单中,因此只能使用默认构造函数。

创建 TFrame 后,父窗体当然可以在 OnCreate 回调中设置一些属性。然而,这并不能确保属性不会被遗忘,并且依赖关系也不像使用构造函数那么清晰。

如果可以在读取 dfm 文件时注册一个用于创建组件的工厂,那就是一个不错的方法。然后,所需的参数可以在工厂创建时传递给 TFrame 构造函数。有办法实现这一点吗?

或者有人对如何将参数传递给 TFrame 有更好的解决方案吗?

最佳答案

所有组件,包括 TFrame 的后代,都需要能够使用从 TComponent 继承的构造函数来构造。否则,它们将无法在设计时正确使用。如果您可以接受设计时使用的限制,那么您可以重写该构造函数并引发异常。这将阻止在设计时将组件放置在表单上。只需提供一些需要其他参数的其他构造函数即可。

由于设计时要求,所有组件都需要能够在其部分或全部属性仍为其默认值的情况下存在。这并不意味着组件在处于该状态时必须执行有用的操作,但它们确实需要能够无限期地保持在该状态。例如,应该可以将组件放置在窗体上,保存窗体,然后关闭 Delphi,以便稍后恢复窗体设计。即使尚未设置其所有属性以供最终使用,组件也应允许自身保存和恢复。

我的首选选项是仅在运行时强制执行组件的规则。在允许使用所有属性之前,请检查所有属性是否都设置为合理的值。您可以使用断言来强制正确使用组件。如果您的类(class)的使用者尚未在其表单上完成您的组件设置,他们将很快学会。

关于delphi - 将参数传递给delphi TFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/614937/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com