![]() |
Button aus DLL in der Hauptanwendung
Moin,
Ich Code derzeit ein Programm welches Plugins unterstüzt. Nun wollte ich, das ein Plugin in die Statusbar ein neuen Eintrag hinzufügen kann. Pseudocode:
Delphi-Quellcode:
// Caption wird erfolgreich zurück gegeben
ShowMessage(TButton(PluginManager.Plugin[I].StatusBarControl).Caption); // Testbutton erstellen btn := TButton.Create(self); btn.Caption := 'Test Button'; // Dies Funktioniert, der Button wird in der Statusleiste angezeigt TJvStatusPanel(JvStatusBar1.Panels[0]).Control := btn; // Dies Funktioniert nicht, der Button wird in der Statusleiste nicht angezeigt TJvStatusPanel(JvStatusBar1.Panels[0]).Control := TButton(PluginManager.Plugin[I].StatusBarControl); Warum funktioniert das nicht? Es ist mir unerklärlich. Fehler: Zitat:
|
Re: Button aus DLL in der Hauptanwendung
Weil es sich um 2 verschiedene Instanzen der VCL handelt.
|
Re: Button aus DLL in der Hauptanwendung
Lösungsidee? :duck:
|
Re: Button aus DLL in der Hauptanwendung
Keine Objekte im Interface übergeben/ansprechen. in diesem Fall könntest du versuchen, die Eigenschaften des Fonts direkt zu setzen
Delphi-Quellcode:
.Font.Name := ...
|
Re: Button aus DLL in der Hauptanwendung
Was soll ich dann übergeben anstatt einem Button? Das komische ist ja das Problem mit der Font von der ich eigentlich nichts will... :wall:
|
Re: Button aus DLL in der Hauptanwendung
Wie gesagt nicht direkt darauf zugreifen. Biete in deinem Programm Funktionen an, mit welchen der PlugIn dann die Oberfläche manipulieren kann
|
Re: Button aus DLL in der Hauptanwendung
Dein Problem: Du hast (wie mkinzler schon angemerkt hat) zwei unterschiedliche RTTI's. Sprich ein TButton der DLL != TButton der Exe da alle Klasseninformationen sowhl in der Exe als auch der DLL vorliegen. Jeder vergleich mit xyz is TButton oder xyz as TButton wir fehlschlagen wenn du eine Referenz aus der DLL in der Exe verwenden willst.
Du hast zwei Lösungsmöglichkeiten: a, Kompiliere Exe und DLL mit gemeinsamen Laufzeitpackages. Jetzt mußt du nur noch diese BPL's (VCL.bpl, ...) immer mit dem Programm mitliefern b, Bau dein Programm auf eine C-Kompatible Schnittstelle um. |
Re: Button aus DLL in der Hauptanwendung
Da kommt nur Variante A in Frage. Gibt es nun eine Möglichkeit mein ganzes System unkompliziert auf dieses Laufzeitpackages umzustellen?
Was muss alles in so ein Laufzeitpackages rein? |
Re: Button aus DLL in der Hauptanwendung
Zitat:
Zitat:
|
Re: Button aus DLL in der Hauptanwendung
es gibt noch Variante 1b) Verwende sattt einer Dll eine Bpl.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21: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 by Thomas Breitkreuz