j'ai les deux catégories suivantes:numéro de référence circulaire avec des classes qui utilisent l'autre
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 est un (3ème génération) TFrame descendant. Il n'est pas utilisé directement, mais plusieurs autres composants composés en descendent.
TcmDataConnector est un composant qui contient les informations de connexion à la base de données pour ces autres composants. J'utilise ModelMaker et j'essaie d'implémenter un pattern Observer pour que plusieurs "Data Panels" puissent être automatiquement mis à jour chaque fois que le "Data Connector" change d'état.
Voici mon problème: Je n'arrive pas à contourner le problème "circular refernece", car chaque classe utilise l'autre dans la section Interface. Mettre la référence "uses" associée dans la section Interface n'efface pas le problème "Undeclared identifier", et les mettre tous les deux dans la même unité ne le fait pas non plus. À l'heure actuelle, ils sont dans la même unité (je les ai essayés dans des unités séparées, et ensemble), et j'ai l'erreur "Undeclared identifier: TcmTPDataConnector".
Comment puis-je contourner le problème?
================
MISE À JOUR:
Il est vendredi soir à 21h30 où je suis, et je suis tout à fait coincé. Juste MINUTES après mon poste, vous les gens sauvés le jour !! (nuit!) MERCI !!
L'homme, j'adore StackOverflow .... DONC mon ami dans cette saison d'apprentissage-comme-folle. :) Merci, merci, merci ...
Ceci ne sera pas compilé! Omettre le premier (Tcomponent). Cela devrait être = class; –
MERCI, vous deux! :) – Jamo
Ils doivent être définis dans le même bloc de type. –