Schleifen Sie übergeordnete Komponenten (Container) vom letzten zum ersten Element (c++ 11)
-
Hallo
Als Beispiel erstelle ich ein Formular mit drei TRectangle Komponenten. Jede davon enthält eine weitere TRectangle Komponente, mit Ausnahme der letzten (TRectangle3), die den Fokus hat:Form1
I
TRectangle1
I
TRectangle2
I
TRectangle3Ich muss Komponente für Komponente von TRectangle3 zum ursprünglichen Form1 gehen und zu diesem Zeitpunkt einige Eigenschaften der "aktiven“ Komponente ändern.
Ich habe versucht, es umzusetzen:
this->Root->GetObject();
Aber ich bekomme es nicht zum Laufen.
¿ine Idee ?, danke.
-
Wenn die
TRectangleX
visuelle/sichtbare Komponenten sind (d.h. vonControl
erben), dann kannst du einfach mittels Parent nach oben navigieren (du mußt aber in den entsprechenden Typ casten, z.B. mitdynamic_cast<...>
).
-
Danke für die Antwort...
Richtig es ist ein eine visuelle Komponente ... aber sie wäre innerhalb einer Android-Anwendung (sorry
dass ich es nicht kommentiert habe), y ich die Datei Vcl.Controls.hpp nicht einbinden kann mi Projekt.
-
Dann mußt du die zugehörige FMX-Eigenschaft Parent benutzen (jedes
TFmxObject
besitzt diese).
Und du solltest direkt darauf zugreifen können, ohne weitere Headerdateien einbinden zu müssen.
-
Danke. Ich werde es versuchen und sehen, ob ich es bekomme
-
Hallo
Abschließend wird es wie folgt gelöst:
TControl* obj = TRectangle3; ShowMessage(obj->Name); // Rectangle3 while (obj->HasParent()) { obj = (TControl*)obj->GetParentComponent(); ShowMessage(obj->Name); // Rectangle2, Rectangle1, Form1 }