Bonjour,

J'ai une classe de base TDocument dans laquelle j'ai créé un constructor virtual et abstract afin que mes sous-classes implémentent obligatoirement ce constructeur.

De cette façon, je voulais lister mes types de classes dans un TListBox et utiliser le même code du bouton pour créer divers types d'objets dérivés de TDocument.

J'ai testé le code de cette page et ça fonctionne bien:
http://laurent-dardenne.developpez.c...es/metaclasse/

Par contre, je peux seulement l'utiliser pour une classe!

Dans l'exemple, il y a ceci: TRefMesClasses = class of TMesClasses;

Dans mon code, j'ai fait TDocuments = class of (TDoc1);

Sur mon code de bouton, ceci fonctionne et ça appelle le constructeur de la classe TDoc1 (docs étant un TObjectList):

docs.add(getClassByName(Listbox2.Items.Strings[ListBox2.ItemIndex]).Create());

Évidemment, le même code sur mon TDoc2 ne fonctionne pas, car je ne suis pas capable de faire un registerClassByName car c'est incompatible avec mon type TDocuments.

Merci de votre aide!