質問

私は、以下の二つのクラス:

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を含む必要とされる可能外部からのおもてなしに参照できます。これにより、頭痛ができるので、複数の単位です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top