GUI dynamisch aufbauen
-
Hi,
ich hab eine GroupBox in die ich DBCheckBoxes einfügen möchte. Per Formularanwendung alles kein Problem, aber wie mache ich das dynamisch?
Hintergrund: Meine Anwendung fordert den Benutzer auf, eine Zahl einzugeben. Hat er das getan, sollen in der GroupBox entsprechend viele DBCheckBoxes angezeigt werden.
Eine Methode wäre sicherlich, das ganze über visible zu steuern, aber eleganter wäre natürlich, das dynamisch zu erstellen.
-
Hallo
Siehe FAQ hier im Forum, Abschnitt Komponenten benutzen, Thread Dynamische Arrays von Komponenten.
bis bald
akari
-
Ok, aber:
TDBCheckBox *MyCheckbox = new TDBCheckBox; MyCheckBox->Top = 15; MyCheckBox->Show();
Daran meckert er, dass es TDBCheckBox::TDBCheckBox() nicht gibt. Also ganz so einfach ist es dann doch nicht...
-
Ok, mein Fehler, der Konstruktor verlangt einen Parameter...
-
Hallo
In dem von mir genannten Thread wird auch als Beispiel mit TLabel gearbeitet. Und dort siehst du auch, wie der Konstruktor von GUI-Steuerelementen aufgerufen wird.
bis bald
akari
-
Ich wurschtel mich da mal so durch...
Auf was hat der Owner beim Konstruktoraufruf eigentlich Auswirkungen? Das Parent wird dadurch jedenfalls nicht gesetzt.
-
Hallo
Owner gibt an, welche andere Komponente für das Löschen der neuen Komponente zuständig ist. Wenn du NULL angibst, must du selber die neue Komponente nach Gebrauch löschen.
bis bald
akari
-
Das Bedeutet, wird der Owner gelöscht, wird auch das Objekt gelöscht?
-
Hallo
Ja. Deshalb wird als Owner normalerweise das Form oder das Panel genommen, auf dem das neue Control liegen soll.
bis bald
akari
-
Jetzt hab ich doch noch was:
Ich verwende PageControl, wobei die Show-Funktion meine CheckBoxes erzeugt. Das führt interessanterweise dazu, dass die gesamte GroupBox (parent) nicht sichtbar wird. Nehme ich die GroupBox als parent raus oder rufe die Funktion beispielsweise per Button auf, ist sie wieder da. Auch wenn ich die Registerkarte wechsle und wieder zurückkehre, ist alles da. Nur beim Programmstart ist nix zu sehen.