Verwenden von Stilen, die von Komponenten aus in der IDE installierten Entwurfszeit-Packages definiert wurden

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Anpassen von FireMonkey-Anwendungen mit Stilen


Mit in Ihrer FireMonkey-Unit definierten, benutzerdefinierten Komponenten können neue Stile definiert werden. Sie können diese benutzerdefinierten Komponenten in der Unit registrieren und ein Package aus dieser Unit erzeugen.

Dieses Entwurfszeit-Package können Sie in der IDE installieren und so diese benutzerdefinierten Komponenten registrieren. Wenn Sie die IDE ausführen und ein Projekt laden, das keine registrierten Komponenten aus diesem Package enthält, verwendet die IDE standardmäßig das intelligente Laden (Lazy Loading) von Komponenten. Deshalb werden die benutzerdefinierten Komponenten aus diesem Package nicht in den Arbeitsspeicher geladen. Der IDE sind daher die von diesen Komponenten definierten Stile nicht bekannt. Stile werden in Stilbüchern anhand der StyleName-Strings explizit referenziert. Die Verwendung eines für die benutzerdefinierte Komponente definierten StyleName veranlasst die IDE nicht dazu, diese benutzerdefinierte Komponente zu laden, wenn sie nicht in einem geladenen Projekt verwendet wird. Beim Öffnen eines derartigen Projekts wird ein Fehler wie der folgende generiert:

Error reading <StyleBook1.ResourcesBin>: Class <ComponentClass> not found. 
Ignore the error and continue?
NOTE: Ignoring the error may cause components to be deleted or property
values to be lost.   

Der referenzierte Stil ist dem Projekt nicht bekannt, wenn Sie solche Fehlermeldungen ignorieren. Wenn Sie solch ein Projekt erzeugen und die erhaltene Anwendung ausführen, kann die Anwendung beim Zugriffsversuch auf diesen Stil einen Laufzeitfehler generieren.

Für diese benutzerdefinierten Komponenten müssen Sie das intelligente Laden eines Package explizit deaktivieren, in dem diese Komponenten registriert sind.

Rufen Sie zum Deaktivieren des intelligenten Ladens von in einem Package registrierten Komponenten den folgenden Befehl

ForceDemandLoadState(dlDisable)

bei der Implementierung der Prozedur Register eines Package auf, wenn der Ladestatus des Package explizit festgelegt werden muss.

Das intelligente (Lazy) Laden von Entwurfszeit-Packages erfolgt folgendermaßen: Standardmäßig verwendet die IDE das intelligente Laden von in der IDE installierten Entwurfszeit-Packages. Beim Start der IDE werden nicht sofort alle installierten Packages geladen. Anfänglich lädt die IDE nur die installierten Packages, die explizit in der Projektgruppe verwendet werden. Nicht geladene Packages können bei Bedarf automatisch geladen werden. Wenn der Programmierer beispielsweise eine Komponente aus der Tool-Palette in den Formular-Designer zieht, dann wird das Package, in dem diese Komponente registriert ist, in die IDE geladen. Durch das intelligente Laden werden die Startzeit der IDE und der verwendete Arbeitsspeicher reduziert.

Siehe auch