Unterform schliessen
-
Hallo zusammen,
ich habe ein Problem und zwar öffne ich von einem Hauptform aus mit
Application->CreateForm(__classid(TOpenGL3DGUI), &OpenGL3DGUI); OpenGL3DGUI->Show();ein "Unterfenster" in dem eine OpenGL-Darstellung ist. Wenn ich dieses Fenster nun mit
void __fastcall TOpenGL3DGUI::FormClose(TObject *Sender, TCloseAction &Action) { if (OpenGL3DGUI != NULL) { delete OpenGL3DGUI; OpenGL3DGUI = NULL; } }schliesse, und in der folgenden Funktion einen Haltepunkt setze
void __fastcall TOpenGL3DGUI::IdleLoop(TObject*, bool& done) { done = false; RenderGLScene(); SwapBuffers(hdc); }so sehe ich, dass diese weiterhin durchlaufen wird. Was muss ich tun, damit das Fenster komplett zerstört wird (also der Zustand VOR öffnen des Fensters wiederhergestellt wird)?
Danke und Gruss
Lodi
-
versuch mal
OpenGL3DGUI->Release();vor dem delete
-
Am besten ist es, du erzeugst deine neue Form gar nicht erst über CreateForm, sondern einfach mittels new.
OpenGL3DGUI = new TOpenGL3DGUI(0);In diesem Fall (0 als Parameter) mußt du natürlich selbst für das Löschen sorgen, was du ja wohl auch willst.
-
Hi,
wo kann ich denn folgende Eigenschaft setzen:
[C++] __property TCloseEvent OnClose = {read=FOnClose, write=FOnClose};
sie steht für untergeordnete SDI-Formulare auf caHide (siehe Hilfe), ich würde sie aber gerne auf caFree setzen????
Danke und Gruss
-
Hallo
OnClose ist ein Event. Du must also mit dem Objektinspektor für das Form eine Eventmethode für diesen Event erzeugen. Dann kannst du dem entsprechenden Parameter der Methode auch den Wert caFree übergeben. Das alles kannst du auch in der Builder-Hilfe nachlesen.
/Edit : und sfds
bis bald
akari