Einzelnen Beitrag anzeigen

Headbucket

Registriert seit: 12. Dez 2013
Ort: Dresden
172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#14

AW: RegisterClass/GetClass von TFrame schlägt nach Projektumstieg XE8 -> Delphi 10.1

  Alt 16. Jan 2017, 11:44
Vielen Dank für die vielen Antworten!

Käme die Variante der dynamischen Erzeugung der Frames in Frage?
Die Frames werden ja bereits dynamisch erzeugt. Damit ich aber weiß, welches Frame ich erzeugen muss, werden sie vorher registriert .

Also bevor Du Dir das antust würde ich wirklich mal da durch Debuggen.
[...]
Es muss da ein Problem sein und ich könnte nicht ruhig schlafen ohne dem nachzugehen
Ich habe nun mal etwas intensiver mit dem Debugger geschaut. Es werden bei FindClass auf die selben Listen zugegriffen. Ich sehe sogar im Debugger meinen registrierten Eintrag. Es wird jedoch trotzdem bei
FClassList.TryGetValue(AClassName, Result); ein nil zurückgegeben... .
FClassList ist vom Typ
TPersistentClassDictionary = TDictionary<string, TPersistentClass>; Hier bin ich dann auch irgendwie mit meinem Latein am Ende

Allerdings hatte ich zwischendurch auch das Problem, daß mir meine Frames beim Einfügen im Designer nicht angezeigt wurden. Abhilfe schaffte ein kleiner Eingriff in die dproj-Datei in der Art, daß die <DCCReference>-Einträge eines Frames zusätzlich zum <Form> folgende Sub-Einträge haben mussten:
Code:
           
  <FormType>dfm</FormType>
  <DesignClass>TFrame</DesignClass>
Ich habe bei mir den FormType hinzugefügt, denn dieser hat tatsächlich bei allen Frames gefehlt. Geändert hat sich dadurch leider nichts.

Ich habe nun aber noch eine weitere Sache festgestellt. Angenommen ich habe folgende Struktur:
Code:
- TMyBaseFrame = class(TFrame) //Basisframe
- TMySpecialFrame = class(TMyBaseFrame) //Von Basisframe abgeleitet
Rufe ich folgendes im TMyBaseFrame auf funktiniert alles:
Delphi-Quellcode:
initialization
  RegisterClass(TMyBaseFrame);
  FindClass('TMyBaseFrame');
Rufe ich aber beim Programmstart noch einmal FindClass('TMyBaseFrame'); auf, dann findet er die Klasse schon nicht mehr.
Wenn ich RegisterClass und FindClass im initialization-Abschnitt von TMySpecialFrame aufrufe, dann klappt es nicht mal dort.

Arbeitet denn schon jemand mit der neusten Delphiversion mit der Registrierung von Frames? Mir gehen leider so langsam die Ideen aus.

Grüße
Headbucket
  Mit Zitat antworten Zitat