円参考に問題の授業を相互に活用し、それぞれ
-
22-08-2019 - |
質問
私は、以下の二つのクラス:
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いをオブザーバーパターンのように複数のデータパネル"が自動的に更新されるたびに"データコネクタ"に変更。
ここでの私の問題:いかに"円形refernece"の問題として各クラスのその他のインターフェースです。に関連する"使用"参照がインターフェイス部さんの"未申告の識別子"の問題であり、それと同じユニットになります。今回は同じユニット(私たち各々ユニットと、を取得します。"未申告の識別子:TcmTPDataConnector"エラーになります。
方法を教えてください頃か。
================
更新:
この金曜日の9:30ましたから、私は完全に固着しました。ほんの数分後の後、人々の日!!(!) 嬉しい!!
男私StackOverflow....私の友人はこの学習のように熱狂的な人気になる季節。:)ありがとうございました、ありがとうございまありがとうございます---
解決
同じユニットで、次の操作を試してください:
TcmTPDataConnector = class(TComponent);
TcmTPDataPanel = class(TcmTPBasePanel)
...
end;
TcmTPDataConnector = class(TComponent)
...
end;
他のヒント
さらに別のオプションは、インタフェースを使用することですが、私はそれがoverengineeredされるだろう。この場合だと思います。
二つのオプション:
1)入って同じユニット同タイプブロックを囲んで同じ時間を共有する。みを宣言するのにTcmTPDataConnectorの宣言の型として宣言します。(Jcinacioのポスト)
2)そうした先祖のTcmTPDataConnectorを含む必要とされる可能外部からのおもてなしに参照できます。これにより、頭痛ができるので、複数の単位です。