verwenden Ich habe die folgenden zwei Klassen:Rundreferenz Problem mit Klassen, die einander
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 ist ein (3. Generation) TFrame Nachkomme. Es wird nicht direkt verwendet, sondern es gehen mehrere andere zusammengesetzte Komponenten daraus hervor.
TcmDataConnector ist eine Komponente, die die Datenbankverbindungsinformationen für diese anderen Komponenten enthält.
Ich verwende ModelMaker und versuche ein Observer-Muster zu implementieren, so dass mehrere "Data Panels" automatisch aktualisiert werden können, wenn der "Data Connector" den Status ändert.
Hier ist mein Problem: Ich kann nicht scheinen, um die "circular reference" Problem zu umgehen, wie jede Klasse die andere in der Schnittstelle verwendet. Wenn Sie die verknüpfte Referenz "uses" im Abschnitt "Interface" einfügen, wird das Problem "Undeclared identifier" nicht beseitigt, und beide werden nicht in dieselbe Einheit eingefügt. Im Moment sind sie in der gleichen Einheit (ich habe sie in getrennten Einheiten und zusammen ausprobiert), und ich bekomme den Fehler "Undeclared identifier: TcmTPDataConnector".
Wie kann ich das umgehen?
================
UPDATE:
Es ist Freitagabend um 09.30 Uhr, wo ich bin, und ich war total fest. Nur Minuten nach meinem Post, Sie Leute gerettet den Tag! (Nacht!) DANKE !!
Mann, ich liebe StackOverflow .... SO mein Freund in dieser lernen-wie-verrückt-Saison. :) Danke, danke, danke ...
Dies wird nicht kompilieren! Lassen Sie die erste (T-Komponente) aus. Es sollte = Klasse sein; –
DANKE, euch beide! :) – Jamo
Sie müssen im selben Typblock definiert sein. –