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'.