2011-03-16 4 views
3

Lorsque j'essaie d'hériter TDataModule Delphi traiter la classe descendante comme un formulaire en leur donnant des propriétés comme la police et les propriétés du client. (l'exception "propriété n'existe pas" à l'exécution)TDataModule inheritance

TixDataModule = class(TDataModule); 

TDM = class(TixDataModule) 
end; 

Que puis-je faire pour que cela fonctionne?

Répondre

2
  1. Comme TixDatamodule est un synonyme de TDataModule, vous pouvez hériter directement de TDataModule
  2. Si vous voulez vraiment hériter de TixDataModule, puis mettre TixDataModule dans une unité distincte, avec sa propre .dfm.
+0

Je veux juste remplacer la méthode AfterConstruction – JustMe

+0

@ JustMe: Dans TixDatamodule, ou dans TDM? Pour surcharger une méthode, vous n'avez pas besoin du TisDatamodule – Toto

+0

In TDataModule class – JustMe

4

Assurez-vous que tous les composants hérités sont marqués avec inherited au lieu de object dans le fichier dfm.

Basculer "dfm comme texte" et "dfm comme visuel" avec Alt + F12.

+0

Bon, fonctionne quand j'ai hérité d'un formulaire – JustMe

+2

@JustMe: +1; c'est en effet la cause de la «propriété n'existe pas» problème. Voir aussi mon [TInterfacedDatamodule revisited] (http://wiert.wordpress.com/2009/08/20/delphi-tinterfaceddatamodule-revisted-inherited-in-your-dfm-files-when-your-datamodules-look-like- formulaires-dans-le-designer /) blog pour un exemple plus détaillé de ce que cette réponse explique. L'article explique comment faire l'héritage DataModule et comment corriger les modules de données que vous souhaitez hériter de votre 'TixDataModule'. –

+0

@Jeroen Vous avez raison, quand vous héritez comme le problème Toto (répondu) n'existe pas. – JustMe