سؤال

لدي التالية فئتين:

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 هو (3rd generation) TFrame سليل.انها لا تستخدم مباشرة ، وإنما أخرى متعددة مجمع مكونات ينزل من ذلك.

TcmDataConnector هو العنصر الذي يحمل معلومات اتصال قاعدة البيانات لهذه المكونات الأخرى.

أنا باستخدام ModelMaker ، وأنا أحاول تنفيذ مراقب نمط بحيث متعددة "لوحات البيانات" يمكن تحديثها تلقائيا كلما "البيانات رابط" تغيير الدولة.

هنا مشكلتي:أنا لا يمكن أن يبدو للحصول على حول "التعميم refernece" مشكلة ، حيث أن كل فئة الاستخدامات الأخرى في واجهة القسم.وضع المرتبطة "يستخدم" الإشارة في واجهة القسم لا تصل واضحة "معرف غير معلنة" القضية ، ووضع لهم على حد سواء في نفس الوحدة لا سواء.الآن هم في نفس الوحدة (لقد حاولت في وحدات منفصلة ، معا) ، وأنا الحصول على "معرف غير معلنة:TcmTPDataConnector" خطأ.

كيف يمكنني الحصول على حول هذا ؟

================
تحديث:

إنها ليلة الجمعة الساعة 9:30 مساء حيث أنني كنت عالقة.بعد دقائق من منصبي, أنت أنقذت اليوم!!(الليل!) شكرا لك!!

أنا أحب ستاكوفيرفلوو....حتى صديقي في هذا التعلم مثل المجنون الموسم.:) شكرا لك شكرا لك شكرا لك...

هل كانت مفيدة؟

المحلول

في نفس الوحدة ، قم بما يلي:

TcmTPDataConnector = class(TComponent);


TcmTPDataPanel = class(TcmTPBasePanel)
   ... 
end;

TcmTPDataConnector = class(TComponent)
  ...
end;

نصائح أخرى

حتى الآن خيار آخر هو استخدام واجهات, ولكن أعتقد أنه في هذه الحالة سيكون overengineered.

اثنين من الخيارات:

1) ووضعها في نفس الوحدة ، نفس النوع كتلة داخله.إلى الأمام تعلن TcmTPDataConnector, تعلن نوع آخر ومن ثم تعلن ذلك.(انظر jcinacio بعد)

2) جعل سلف TcmTPDataConnector الذي يحتوي على ما يجب أن تكون متاحة خارجيا وجعل الإشارات إلى ذلك.هذا هو أكثر من الصداع ولكن يسمح لك أن تفعل ذلك عبر عدة وحدات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top