Dynamisch erzeugte Elemente verschwinden auf PageControl
-
Hi,
ich hab mein altes Problem mal in ein nachvollziehbares Projekt gestecket:
Ich habe ein neues Formular-Projekt erstellt. Dort habe ich ein PageControl mit zwei Seiten eingefügt.
Dann habe ich ein Frame erstellt und darauf eine GroupBox eingefügt. Da Frame hab ich auf der ersten Seite meines PageControl eingefügt. In der Show-Funktion dieser Seite erstelle ich dann in der Groupbox eine DBCheckBox wie folgt:void __fastcall TForm1::TabSheet1Show(TObject *Sender) { TDBCheckBox *MyCheckBox; MyCheckBox = new TDBCheckBox(this); MyCheckBox->Parent = this->Frame21->GroupBox1; MyCheckBox->Top = 10; MyCheckBox->Left = 10; MyCheckBox->Width = 50; MyCheckBox->Name = "DBCheckBoxx"; MyCheckBox->Visible = true; MyCheckBox->Show(); }
Visible und Show() haben keine Auswirkungen auf das Ergebnis. Führe ich das Projekt jetzt aus, wird die GroupBox samt CheckBox nicht angezeigt. Die Eigenschaft showing ist false, visible aber true! Ich habe auch festgestellt, dass es an der Parent-Zuweisung liegt. und zwar wird immer das Element nicht angezeigt, das ich der CheckBox als Parent zuweise.
Wechsle ich jetzt in der laufenden Anwendung die Registerkarte, wird die GruoupBox samt CheckBox angezeigt (von der Exception, dass die Checkbox gereits besteht mal abgesehen).
Verwende ich keine PageControl und führe den Code in dem FormCreate() aus, läuft alles, wie es soll.
Was tu ich jetzt, damit mir GroupBox und CheckBox immer angezeigt werden?
-
versuch mal:
MyCheckBox = new TDBCheckBox(this->Frame21->GroupBox1); MyCheckBox->Parent = this->Frame21->GroupBox1;
-
Hab ich vergessen: das hatte ich probiert und hat nicht funktioniert.
Es muss irgendetwas mit der Schow-Funktion zu tun haben. Packe ich das in die FormCreate-Methode, wird alles dargestellt.