dynamischen Komponenten löschen
-
hei,
habe so meine Komponente in einer Form erstellt// // - - - >>> dynamisch erstellte RichEdit iNew = RichEditSource.Length; RichEditSource.Length++; RichEditSource[iNew] = new TRichEdit(this); RichEditSource[iNew]->Parent = pPage;Diesen Code lasse ich z.B. 3mal durchlaufen. Nun möchte ich, wenn ich diese Form schliesse, das "RichEditSource" gelöscht wird.
die mache ich in der FormClose mitAction = caFree;War der Meinung, das alle in der Form erstellte Komponente damit lösche.
wenn ich anschließend die Form neu öffne, sind immer noch die 3 dynamischen Komponenten "RichEditSource" vorhanden. Dies ermittele ich ausRichEditSource.Length;Was mache ich falsch ?
bis bald dieleena
-
Hallo
Du hast offenbar keine Ahnung, was caFree in Wirklichkeit macht. Aus der Builder-Hilfe
Das Fomular wird geschlossen und sein Speicher freigegeben
Das heißt das gesamte Formular wird gelöscht, mit samt seiner untergeorneten Controls.
Nicht nur die untergeordneten Controls! Das bedeutet jedes weitere Zugreifen auf die so geschlossene Form-Instanz ist ungültig, und sollte einen Speicherfehler auslösen.Wenn du ohne das Löschen des Forms an sich, nur einige Controls löschen willlst, must du das auch manuell mit dem delete Schlüsselwort machen.
bis bald
akari
-
EDIT: zu spät und auch noch falsch.
An die Admins: Kann man für akari eine zeitverzögerte Form des Forums bereitstellen? 5 Minuten sollten reichen.

-
hei,
davon bin ich ja ausgegangen "Das Fomular wird geschlossen und sein Speicher freigegeben".
Aber, ich habe hier einen Fehler gemacht. Ich hatteTSourceEditor *Active = (TSourceEditor*)this->ActiveMDIChild;verschoben, und somit bekam ich nach
Active->Close();und
FormSourceCode();aus
iNew1 = Active->RichEditSource.Length;einen falschen Wert zurück.
kann vorkommen.
bis bald dieleena
-
Hallo
@ Joe : Ist doch nicht nötig, dafür könnt ihr dann meine Antworten kritisieren

Und Lenna hat ja bestätigt, das auch meine Antwort nicht völlig das Problem getroffen hat.bis bald
akari