我有以下两个类:
TcmTPDataPanel = class(TcmTPBasePanel) Database: TnxDatabase; Session: TnxSession; private FDataConnector: TcmTPDataConnector; MyNxDataBase: TnxDatabase; MyNxSession: TnxSession; MyRefNxDataBase: TnxDatabase; protected procedure Disconnect; virtual; abstract; procedure Refresh; virtual; procedure Requery; virtual; abstract; public procedure Connect; published property DataConnector: TcmTPDataConnector read FDataConnector write FDataConnector; end; TcmTPDataConnector = class(TComponent) private FDatabase: TnxDatabase; FObservers: TList; FTableForCategories: TnxTable; FTableForItemCategoryLinks: TnxTable; FTableForItems: TnxTable; procedure SetTableForItemCategoryLinks(const Value: TnxTable); protected procedure IterateObservers; public constructor Create; destructor Destroy; override; procedure Register(Instance: TcmTPDataPanel); procedure Unregister(Instance: TcmTPDataPanel); published property Database: TnxDatabase read FDatabase write FDatabase; property TableForCategories: TnxTable read FTableForCategories write FTableForCategories; property TableForItemCategoryLinks: TnxTable read FTableForItemCategoryLinks write SetTableForItemCategoryLinks; property TableForItems: TnxTable read FTableForItems write FTableForItems; end;
TcmDataPanel是(第3代)TFrame后代.它不是直接使用的,而是多个其他化合物成分从中下降.
TcmDataConnector是一个包含这些其他组件的数据库连接信息的组件.
我正在使用ModelMaker,并且正在尝试实现Observer模式,以便每当"数据连接器"更改状态时,可以自动更新多个"数据面板".
这是我的问题:我似乎无法解决"循环引用"问题,因为每个类在接口部分使用另一个.在接口部分中放置关联的"使用"引用不会清除"未声明的标识符"问题,并且将它们放在同一单元中也不会.现在他们在同一个单元(我已经在不同的单元中一起尝试过它们),并且我得到了"未声明的标识符:TcmTPDataConnector"错误.
我怎么能绕过这个?
================
更新:
这是星期五晚上9点30分,我在那里,我完全陷入困境.在我的帖子发布后,你们节省了一天!(晚上!)谢谢!
男人,我喜欢StackOverflow ....所以我的朋友在这个疯狂的学习季节.: ) 谢谢你,谢谢你,谢谢你...
在同一台设备上,尝试以下方法:
TcmTPDataConnector = class(TComponent); TcmTPDataPanel = class(TcmTPBasePanel) ... end; TcmTPDataConnector = class(TComponent) ... end;