Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Komponenten-Entwicklung-Problem (https://www.delphipraxis.net/187490-komponenten-entwicklung-problem.html)

DrTosh 3. Dez 2015 14:44

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

stahli 3. Dez 2015 15:42

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 -> http://www.delphipraxis.net/79726-un...der-gruen.html
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).

DrTosh 4. Dez 2015 18:17

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

stahli 4. Dez 2015 18:24

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 18:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz