Frage zum Thema: mehrere zur Laufzeit erstellten VCL-Objekte gleichzeitig verwalten
-
Hallo,
Ich möchte PageControl's mit TabSheets's und RichEdit's zur Laufzeit
erstellen, da die Anzahl dynamisch ist und nicht vorher festgelegt
werden kann.
Die PageControls stehen später alle untereinander, da es wie eine
Übersicht werden soll.
Sollte eines der RichEdit vollgeschrieben sein (wird per Event
geprüft), wird automatisch ein neues TPageControl wieder mit
RichEdit's usw. erstellt und ich möchte in dem neuen RichEdit
weiterschreiben.Das Problem ist, wenn die neuen PageControls erstellt werden, werden
leider auch meine alten RichEdit Objekte überschrieben
und ich komme an die "alten" nicht mehr ran, falls ich plötzlich
merke, ich hab mich im alten RichEdit verschrieben oder ähnliches.Als Codeschnipsel leg ich mal meine Erstellung bei:
global hab ich
int i = 0; // Variable für die Höhe(Top) der PageControl
Als Test das hier im OnButtonClickEvent, soll später passieren wenn
ein RichEdit voller Text ist, geht nur um das PrinzipTPageControl* page = new TPageControl(Form1);
page->Parent = Form1;
page->Top = i;
i = i + 600; // PageControlhöhe wird um 600 erhöht und
somit hab ich eine schöne Übersicht meiner ganzen PageControls
page->Width = 50;
page->Left = 5;
page->Height = 500;TTabSheet* tab1 = new TTabSheet(page);
tab1->PageControl = page;
tab1->Caption = "Vorderseite";
tab1->Visible = true;TRichEdit redit1 = new TRichEdit(tab1);
redit1->Parent = tab1;
redit1->Visible = true;
redit1->Text = "Test";Wie gesagt, nun passiert es, wenn ich erneut den Button drücke, er
mir meine PageControls alle untereinander darstellt.
Ich sehe zwar noch die alten PageControls kann sie aber nicht mehr
handlen, da die Objekte überschrieben wurden.
Ich kann zwar die Objekte speichern, hab aber im Prinzip immer nur
ein aktuelles Objekt, Möchte aber eigentlich alle bis jetzt
erstellten Objekte "handlebar" haben.
Später soll der Inhalt natürlich aus allen RichEdit Feldern der Text
ausgelesen und gespeichert werden.Es ist vergleichbar mit Word, ich hab eine Seite, ist die voll kommt
die nächste auf der ich schreiben kann.
Es ist aber auch kein Problem auf die alte Seite wechseln und dort
noch was zu ändern.Ich nutze den Borland C++ Builder 6.0 mit VCL
MfG
muendh
Wer eine Idee hat oder entscheidente Tipps bitte ich um Antwort am ---> muendh@aol.com
Thx an alle mit einem guten Tipp.
-
Hallo
das gehört doch offentsichtlich ins Builder-Forum.
Und dein Prolem läßt sich mit einem dynamischen Array wie std::vector oder DynamicArray lösen, wo du Pointer auf die bestehenden Tabs/RichEdits speicherst.Außerdem benutzt hier im Forum die C++ Tags, um deinen Code hervorzuheben. (Beim Schrieben eines Beitrags unter den Smilies zu finden)
bis bald
akari
-
Ich weiß nicht ob ich dich richtig verstanden habe, aber ich probiers mal.
TPageControl* page = new TPageControl(Form1); ... TTabSheet* tabs[16]; // Hier kannst du nun z.B. 16 Tabs halten. tabs[0] = new TTabSheet(page); ... TRichEdit redit[16]; // Das selbe dann noch bei RichEdit redit[0] = new TRichEdit(tabs[0]); ...Und beim nächsten Durchlauf erstellst du neue Objekte und speicherst die Zeiger in tabs[1]...[n] usw.
-
Hallo,
Das steht doch alles auch in der FAQ des BCB-Forums unter Komponenten.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.