Vielen Dank schonmal für die Antworten!
Compiliere doch einfach mal mit debug
dcu und debugge in den registerclass aufruf hinein.
Sollte Dir den Fehler ja zeigen
Habe ich gemacht. Hier scheint alles i.O. zu sein. RegisterClass sieht ja wie folgt aus:
Delphi-Quellcode:
procedure RegisterClass(AClass: TPersistentClass);
begin
RegGroups.Lock;
try
while not RegGroups.Registered(AClass) do
begin
RegGroups.RegisterClass(AClass);
if AClass = TPersistent then Break;
AClass := TPersistentClass(AClass.ClassParent);
end;
finally
RegGroups.Unlock;
end;
end;
Nach dem Aufruf RegisterClass(TMyTestFrame) wird also zunächst TMyTestFrame registriert. Der ClassParent ist TFrame und wird AClass zugewiesen. Danach bricht die Schleife ab.
Vielleicht fehlt ein
%CLASSGROUP in der Frame-
Unit. Und gibt's da nicht ein FrameworkType o.ä. in der *.dproj?
Das werde ich mir sofort mal anschauen.
Arbeitet ihr mit Laufzeitpackages?
Und wenn ja, wird eure
Unit (der Initialization-Abschnitt) auch verwendet/geladen?
Wir verwenden nur statische Packages, welche aber damit gar nichts zu tun haben sollte, da der Fehler ja auch auftritt, wenn ich ein neues Frame erstelle und dieses direkt von TFrame ableite
.
Initialization wird in jedem Fall vorher ausgeführt.
Edit: Unter XE8 funktioniert es wie gesagt einwandfrei. Wenn ich das Projekt 1:1 mit Delphi 10.1 öffne, dann funktioniert es nicht. Delphi 10.1 läuft allerdings in einer anderen virtuellen Maschine. Außerdem habe ich das Problem, dass meine Anwendung mit Delphi 10.1 den Look von Windows 2000 hat. Aus diesem Grund habe ich auch die dproj-Datei neu erstellen lassen. Danach war das Aussehen der Anwendung wieder normal. In beiden Fällen funktioniert aber FindClass nicht.
Grüße
Headbucket