-1

我有一个表格,上面有一堆从其他表格中使用的标签。我得出的结论是,这不是有效的方法,因为有时可能无法分配表格。所以我认为每次读取数据之前检查表单是否分配是不好的,我认为最好创建一个公共属性列表并在读取过程中检查表单是否分配。但除了确保只使用一种方法之外,我决定以某种方式关闭对表单组件属性的直接访问。

简而言之:保护在发布子句中声明的组件不被另一个类访问,就像受保护或私有子句一样。

但在这种情况下,似乎没有解决方案。唯一的事情是创建另一个具有属性的对象并强制表单使用其属性。

如果您知道,请给我另一个解决方案。

4

1 回答 1

4

属性一经发布,便无法取消发布。Delphi 表单设计器需要发布它所操作的组件。因此,您设计的表单将充满已发布的组件。

由于您无法隐藏组件,因此剩下的就是隐藏表单。由于您谈论有时未分配表单,因此我怀疑您正在使用全局变量来引用您的表单。这可能是你的主要问题。如果您有表单类型的可见全局变量,那么程序的任何部分都可以毫无限制地戳到任何其他部分。

所以首先要做的是删除那些全局变量。完全有可能编写一个没有表单类型的单个全局变量的应用程序。然后,您可以控制应用程序的各个部分如何相互交互。

问题的其他部分暗示您的表单拥有数据。这是一个相当脆弱的设计选择。将数据保存在专为此目的而设计的非可视模型对象中。并让表格仅呈现该数据的视图。然后当系统的某一部分需要请求数据时,它可以请求非可视模型对象而不是可视形式。

于 2013-04-26T06:25:36.993 回答