![]() |
Verwenden von GetClass und RegisterClass
Hallo zusammen,
ich habe folgendes Problem: Ich versuche ein DFM mit ReadComponentResFile('c:\temp\test.dfm', form2); auszulesen und dann anzuzeigen. Das Problem ist das nicht alle Klassen registriert sind. Selbst mit ein dfm welches nur Standardkomponenten enthält läßt sich so nicht anzeigen. Funktionieren tut es wenn ich die einzelnen Klassen mit z.Bsp RegisterClass( TButton) registrieren und dann das Fenster anzeige. Gibt es da nicht irgendwie eine Möglichkeit die Standarddelphikomponenten irgendwie zu registrieren bei Programmstart? Striker |
Re: Verwenden von GetClass und RegisterClass
Wenn du die VCL (VCL07.bpl) extern verlinkst, dann können die nicht benutzten componenten nicht weg optimiert werden, und das müsste somit gehen (vermute ich mal).
PS: Wilkommen in der Praxis :dp: |
Re: Verwenden von GetClass und RegisterClass
ja ok aber wie verlinke ich die VCL extern? Mit LoadPackage ?
Loadpackage('vcl60.bpl') wird zwar ausgeführt und ich bekomme auch ein Handle zurück aber GetClass oder FindClass bringen immer noch kein Ergebnis.. :?: Ps: danke für die willkommensgrüsse :-D |
Re: Verwenden von GetClass und RegisterClass
Ne ne, das was du versucht hast, ist dynamisches laden von BPLs zur laufzeit (kann für plugIns recht praktisch sein).
Du musst es statisch extern verlinken: Projektoptionen -> packages -> 'mit laufzeit-packages compilieren' -> rtl60, vcl60 ....in etwa. dh. du musst diese packages (aus %win\system32) dann aber auch mit ausliefern :-D |
Re: Verwenden von GetClass und RegisterClass
Das hab ich nun auch probiert aber es hat auch keinen Erfolg gebracht...
Laut doku ist es doch so dass ein Package alle Klassen registriert sobald es geladen wird. Meine Vermutung ist das die Registrierung nicht global geschieht... :?: :?: :?: |
Re: Verwenden von GetClass und RegisterClass
hmm... hab mal ein bisschen geforscht und fest gestellt, das komponenten, die direkt auf einer form benutzt werden nicht explizit registriert werden müssen. Es wird einfach die fieldClassTable des forms geholt, wo dann alle klassen gelistet sind die das form benutzt...und erst danach wird nach klassen gesucht, die in der normalen registrierung sind :(
So jetzt gibt es da aber einen illegalen trick, der aber relativ effektiv sein könnt. Werd heut abend mal was zu testen und dann bescheid sagen :wink: |
Re: Verwenden von GetClass und RegisterClass
NEIN... :wall: Alles futsch. Ich hoffe mal du hast den beitrag auswendig gelernt? :evil:
|
Re: Verwenden von GetClass und RegisterClass
:wiejetzt:
Neeeeeeeeeeeeeeeeeeeeeeeeeeeinnnnn. Natürlich nicht. :cry: Hast du es bitte noch irgenwo?? |
Re: Verwenden von GetClass und RegisterClass
Liste der Anhänge anzeigen (Anzahl: 1)
Da ich es hasse mich zu wiederholen, mach ich es kurz. In der unit steht jetzt alles nötige und der code von Hagen. Du musst nur die folgende funktion aufrufen:
Delphi-Quellcode:
Das registriert, wie gesagt, alle TPersistent abkömmlinge, deren RTTI einträge in dem modul gefunden werden.
RegisterAllPersistentClasses(HInstance);
viel glück :) |
Re: Verwenden von GetClass und RegisterClass
Hallo Maximov,
Ja super das ist genau das was ich brauche. :spin: Vielen Dank Maximov :dp: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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