![]() |
Komponenten-Entwicklung-Problem
Guten Tag,
Ich habe eine Komponente geschrieben, die von TPanel abgeleitet ist. Dieses erzeugt ein weiteres Panel. Soweit kein Problem. Ich möchte aber, das auch das zweite Panel aus dem Designer heraus größer gemacht werden kann oder weitere Objekte darauf gelegt werden können. Damit dies gewährleistet wird, muss der Owner von dem zweiten Panel ebenfalls die Form sein, auf der die Komponente auch liegt. Das klappt auch soweit. Das Problem ist nur, das es zwei stellen gibt, wo das zweite Panel erzeugt wird. Einmal in meiner Komponente und einmal von der Form selber. Wenn das Programm startet, ist das kein Problem, da ich in der Komponente nach dem csDesigning Flag frage und daher nicht noch einmal erzeuge. Das Porblem tritt erst auf, wenn ich mein Projekt schließe und wieder öffne, dann erzeugt die Form und meine Komponente ein zweites Panel und ich habe dieses nun doppelt. Ich habe bereits versucht in dem Constructor das doppelte Panel direkt wieder zu zerstören, was natürlich nur Zugriffsverletzungen aufwirft. Das ganze auch im AfterConstruction. Kann ich irgendwie im Create entscheiden, dass diese Komponente doch nicht erzeugt wird?? Ich hoffe irgendjemand kann mir da helfen :DD MfG DrTosh |
AW: Komponenten-Entwicklung-Problem
Hallo DrTosh und herzlich willkommen. :-)
So ganz genau kann ich Deine Erklärung nicht nachvollziehen. Warum soll das zweite Panel als Owner das Formular haben? Schau mal hier -> ![]() ob Du hier eine Anregung findest. Die Subcontrols werden von dem Maincontrol erzeugt und in der DFM serialisiert. Wenn das Subcontrols zum Formular gehören sollen, dann darfst Du das nicht aus Deinem Hauptcontrol erzeugen sondern nur in Deinem Formular und es dann einer Property Deines Hauptcontrols zuweisen (wie ein Dataset zu einem DBTable). |
AW: Komponenten-Entwicklung-Problem
Erstmal vielen Dank für deine Antwort.
Ich bin deinem Link gefolgt, jedoch hilft der mir nicht weiter, weil du ein Subcomponent kreirst. Das möchte ich aber eben nicht, weil ich das zweite Panel auch im IO mit der Maus größer und kleiner machen will und vorallem weitere Koponenten darauf droppen lassen möchte. Das geht nur wenn es ein eigenständiges Object ist und eben nicht "nur" ein SubComponent. Ich würde es aber gerne dabei belassen, das mein MainControl die weiteren selber erzeugt, weil ich zur laufzeit mit ihnen agiere. Mit dem Zuweisen ist an sich ein guter Anhaltspunkt. Ich glaube daraus lässt sich vielleicht was machen. Erstmal vielen Dank, ich werde mich nochmal melden |
AW: Komponenten-Entwicklung-Problem
Ja, dann erzeuge eine oder mehrere Properties, denen Du dann bei Bedarf externe Panels zuweisen kannst (oder die halt sonst nil bleiben).
Ich denke, die Zuweisung müsste dann die IDE schon automatisch ermöglichen. Ggf. frag halt nochmal nach. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 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