Owner einer Komponente wird nicht gesetzt
-
Hallo nochmal,
ist es Euch auch schon mal passiert, dass wenn man eine selber geschriebene Kompo auf ein Panel oder Tabsheet zieht, diese dann nicht direkt dem Panel/Tabsheet zugewiesen wird, sondern der Form direkt? Ich muss dann jedesmal in der Objekthierarchie per Hand die Kompo auf das gewünschte Objekt ziehen. Was kann man dagegen tun?
F98
-
Von was ist die Komponente denn abgeleitet? Nicht-visuelle Komponenten haben immer die Form als Owner.
-
Meine Kompo ist von TPanel abgeleitet. Im Konstruktor setze ich den Parent was aber nichts nützt. Die Kompo wird trotzdem der Form zugewiesen, nicht der Tabsheet oder auch anderen Panels usw. auf die man die Kompo draufzieht.
Den Owner kann man leider nicht explizit setzten, da bringt der Compiler:
[C++ Fehler] Rasterpanel.cpp(22): E2247 Zugriff auf 'TComponent::Owner' nicht möglich
Code:
__fastcall TRasterpanel::TRasterpanel(TComponent* Owner) : TPanel(Owner) { DoubleBuffered = true; SetBounds(0, 0, 640, 480); Caption = " "; Parent = dynamic_cast<TWinControl*>(Owner); this->Owner = Owner; // bringt Compiler-Fehler ... }
-
Hallo,
Versuch's mal so :
__fastcall TRasterpanel::TRasterpanel(TComponent* Owner) : TPanel(Owner) { DoubleBuffered = true; SetBounds(0, 0, 640, 480); Caption = " "; // Parent = dynamic_cast<TWinControl*>(Owner); // this->Owner = Owner; // bringt Compiler-Fehler ... }Bis dann denn,

Nash
-
Aha!
Es funktioniert. Ich dachte das Owner immer selbst zugewiesen werden muss ...
Naja, vielen Dank erstmal!

-
Wenn ich das so lese fällt mir auf, dass ich eigentlich Unsinn geschrieben habe.

Alle zur Entwurfszeit eingebundenen Komponenten haben standardmässig die Form als Owner.
Der Parent-Eigenschaft visueller Komponenten hingegen sollte automatisch der Container zugewiesen werden, auf bzw. in dem sie abgelegt werden.