Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Klassentyp zur Laufzeit ändern

  Alt 25. Mär 2009, 06:46
Hier ein Hack, mit dem das doch geht:
Delphi-Quellcode:
type
  PClass = ^TClass;

begin
  PClass(MyObjectOfTypeXXX)^ := TDerivedClassFromXXX;
end;
Bei Dir funktioniert das nur, wenn TVistaForm von TMainForm abgeleitet ist.

Viel sauberer wäre folgende Lösung;
Delphi-Quellcode:
Type
  TFormClass = Class Of TMyMainForm;
  TVistaForm = Class (TMyMainForm)...
  TWindows7Form = Class (TMyMainForm)...
  TWINNTForm = Class (TMyMainForm)...

Var
  FormClass : TFormClass;

Begin
// Das hier ist eine Class-Factory (nun ja, wenn sie einmal groß ist)
  Case OSType Of
    Vista : FormClass := TVistaForm;
    Windows7 : FormClass := TWindows7Form;
    ...
  End;
//
  Application.CreateForm (FormClass, MyFormInstance);
...
Such mal unter dem Stichwort: 'Class Factory'.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat