AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls RegisterClass/GetClass von TFrame schlägt nach Projektumstieg XE8 -> Delphi 10.1 fehl
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Headbucket · begonnen am 11. Jan 2017 · letzter Beitrag vom 16. Jan 2017
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz