次の2つのクラスがあります。
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 を使用しており、オブザーバー パターンを実装して、「データ コネクタ」の状態が変わるたびに複数の「データ パネル」を自動的に更新できるようにしようとしています。
これが私の問題です。各クラスがインターフェイスセクションで他のクラスを使用しているため、「循環参照」の問題を回避できないようです。関連する「uses」参照を Interface セクションに配置しても、「宣言されていない識別子」の問題は解決されず、両方を同じユニットに配置しても解決されません。現在、それらは同じユニットにあり (別々のユニットで、一緒に試しました)、「宣言されていない識別子: TcmTPDataConnector」エラーが発生します。
どうすればこれを回避できますか?
================
更新:
私がいるのは金曜日の夜の午後 9 時 30 分で、完全に立ち往生していました。私の投稿からわずか数分後、あなたはその日を救った!! (夜!) ありがとう!!
男、私はStackOverflowが大好きです....だから、この学習のようなクレイジーな季節の私の友人です。: ) ありがとう、ありがとう、ありがとう...