je une classe définie comme:Delphi - Créer une instance de la sous-classe
TfraFrame = class(TFrame);
alors j'ai plusieurs sous-classes tous inherting de cela, tels que:
TfraUsers = class(TfraFrame);
TfraGroups = class(TfraFrame);
TfraMenus = class(TfraFrame);
Dans ma principale forme que je l'ai déclaré variables comme:
var
fraUsers: TfraUsers;
fraGroups: TfraGroups;
fraMenus: TfraMenus;
Maintenant ma question est, je voudrais avoir une seule fonction pour contrôler la génératio n des instances de chaque classe. Il ne devrait y avoir qu'une instance de chaque classe, mais je veux seulement créer les instances si l'utilisateur les requiert.
Je voudrais passer la variable comme ceci:
procedure ShowFrame(Frame: TfraFrame)
begin
if Frame = nil then
begin
Frame := TfraFrame.Create(self);
Frame.Init(Panel1);
end;
Frame.Show;
end;
et l'appeler comme celui-ci;
ShowFrame(fraUsers);
Je l'attendais pour créer une instance de TfraUsers
(parce que c'est ce que fraUsers
est déclaré), cependant, je pense qu'il peut créer une instance de fraFrame
.
Y at-il un moyen de créer une instance du type que la variable a été déclarée comme?
Je pense que l'OP veut le cadre de montrer si elle est affectée ... –
Oui, alors qu'est-ce qui l'empêche d'affecter le résultat de la fonction à la var? Il pensait probablement dans son code original que cela fonctionnerait en assignant le résultat du paramètre Créer au paramètre transmis, mais cela ne fonctionnerait pas, même s'il était déclaré comme var car avec les paramètres var, Delphi se plaindrait de la réalité. et les types déclarés étant différents. –
@Andreas, oh diable, oubliez mon commentaire. Lisez le vôtre mal. –