Einzelnen Beitrag anzeigen

omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Klasse die im Create eine Unterklasse erstellt

  Alt 23. Nov 2007, 00:10
So, ich versuche mich auch mal dran...

Delphi-Quellcode:
type
  TModus = (Sub1, Sub2);

  TBase = class
    public
      constructor Create; overload; virtual; abstract;
      class function Create(Modus:TModus):TBase; overload; virtual;
  end;

  TSub1 = class(TBase)
    public
      constructor Create; override;
  end;

  TSub2 = class(TBase)
    public
      constructor Create; override;
  end;

:
:

{ TBase }

class function TBase.Create(Modus:TModus): TBase;
begin
  case Modus of
    Sub1: Result:=TSub1.Create;
    Sub2: Result:=TSub2.Create;
  end;
end;

{ TSub1 }

constructor TSub1.Create;
begin
  inherited;

end;

{ TSub2 }

constructor TSub2.Create;
begin
  inherited;

end;
Aufruf...
Delphi-Quellcode:
procedure TForm.ButtonClick(Sender: TObject);
var Base:TBase;
begin
  Base:=TBase.Create(Sub1);
  ShowMessage(Base.ClassName);

  Base:=TBase.Create(Sub2);
  ShowMessage(Base.ClassName);

  Base:=TBase.Create; // <-- löst einen "Abtrakten Fehler" aus
  ShowMessage(Base.ClassName);
end;
Gruss
Thorsten
  Mit Zitat antworten Zitat