【发布时间】:2010-11-13 08:32:36
【问题描述】:
在过去的 3 年里,我一直在学习 Delphi,在兴趣/职业层面。我很高兴地说,我现在已经进步到可以带着恐惧和尴尬回顾我早期的代码了。所以我现在正在检查我的一些早期应用程序并重写/重构它们。
我试图摆脱的一个坏习惯是从另一个单元访问一个表单上的组件。为了加强这一点,我一直在尝试使用框架作为信息隐藏的方法。因此,我没有创建一个带有组件的表单,而是创建一个框架来保存所有表单组件,然后将框架放置在表单上,将框架声明移动到私有声明中,
type
TMyForm = class(TForm)
private
MyFrame: TMyFrame;
procedure SetTimeDate(const Value: TMyItem);
function ReadTimeDate:TMyItem ;
然后在表单初始化部分注册框架
initialization
begin
RegisterClasses([TMyFrame])
然后我在表单单元的公共部分声明我需要的属性,它可以访问框架及其组件。
public
property TimeDate: TOverlayItem read ReadTimeDate write SetTimeDate;
我还使用框架来合并经常重复的组件组。
这似乎可以达到我想要的目的(隐藏 Myframe 及其组件),但是其他人有这种方法的经验吗?
使用框架有什么缺点吗? 我真的从这样做中获得任何好处吗? 在框架内使用嵌套框架有什么问题吗? 在 Delphi 中使用框架是否有任何好的实践指南? 对于隐藏在 Delphi 中的 GUI 信息,是否有更好/更简单的方法来实现相同的效果?
HMcG
【问题讨论】:
-
RegisterClasses([TMyFrame]) 有什么用?
-
因为我正在移动 MyFrame: TMyFrame;进入私有部分,如果我不注册 TMyframe,则会出现一个异常,指出“找不到 TMyFrame”。
-
你应该专注于如何在你的设计中减少耦合,这样最终你是否使用框架都没有关系。我发现以下文章很有启发性:objectmentor.com/resources/articles/TheHumbleDialogBox.pdf
标签: delphi user-interface vcl information-hiding