Form öffnen und schließen
-
Hi,
Ich hab mal folgendes getestet. 2 Formulare. Auf Form1 ein Button. Auf Form 2 eine Action.

Unit1.cpp:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Form2->ShowModal(); } //---------------------------------------------------------------------------Unit2.cpp
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit2.h" #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm2 *Form2; //--------------------------------------------------------------------------- __fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm2::Action1Execute(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm2::FormActivate(TObject *Sender) { Action1Execute(Form2); } //---------------------------------------------------------------------------Wenn ich jetzt den Button betätige sollte sich doch eigenlich das Fenster (Form2) öffnen und dann wieder schießen, seh ich das richtig?

Das Fenster öffnet sich aber es schließt sich nicht mehr.
Hat da jemand ne erklärung dafür? und ne lösung damit sich das fenster wieder automatisch schließt?
Danke schonmal
-
Hallo
Höchstrwahrscheinlioch weil während des Activate-Events der Close-Aufruf noch ignoriert wird.
Ich sehe zwar irgendwie keinen Sinn in dem ganzen, aber das einfachste ist doch
void __fastcall TForm1::Button1Click(TObject *Sender) { Form2->Show(); Form2->Close(); }bis bald
akari
-
hi,
ich weiß zwar nicht was du damit bezwecken willst.
void __fastcall TForm2::FormActivate(TObject *Sender) { Action1Execute(Sender); }
-
Hallo
@ Avalon : Und was soll das bringen?
bis bald
akari
-
@ akrai,
hatte ihn so verstanden das er die obere funktion aufrufen wollte.
-
Hallo
@ Avalon das schafft er auch mit dem Form2 als Parameter. Denn Form2 ist von TObject abgeleitet.
Das Problem vom ist auch nicht ein Compile-Problem, sondern ein logisches problem. Lies dir die Frage noch mal in Ruhe durch.
bis bald
akari
-
akari schrieb:
Hallo
@ Avalon das schafft er auch mit dem Form2 als Parameter. Denn Form2 ist von TObject abgeleitet.
Das Problem vom ist auch nicht ein Compile-Problem, sondern ein logisches problem. Lies dir die Frage noch mal in Ruhe durch.
bis bald
akariups, man sollte nicht zuviele sachen zeitgleich machen. hast recht

-
mach doch:
1. mit Timer, der in OnActivate der Forn gestartet wird2. Schick ne PostMessage (oder wars PostQuitMessage) mit WM_QUIT oder s.ä. an eigene Form (Form 2)
Wichtig: nicht SendMessage
-
Also ich will damit bezwecken das ich wenn die einstellungen in Form 1 auf Manuel stehen, das sich Form2 öffnet und man kann da die daten ändern. und wenn die einstellungen auf automatik stehen dann sollen bestimmte aktionen aus fenster 2 ausgeführt werden und danach das fenster wieder geschlossen werden.
Das alles genau zu erklären was ich da vor hab würde zu lange dauern. Vom prinzip her ist es das was ich vorhab.
Also das mit Form2->Show(); funzt net da kommt dann immer ne meldung das ich visible und hide nicht benutzen kann.
Und wenn ich Form2->ShowModal; Form2->Close(); mache, dann schießt er es immer noch nicht.
-
Hat sich erledigt.
Ich brauch dafür Form2 gar nicht zu öffnen. Ich kann die Aktionen auch von form1 aus ausführen (ohne Form2->Show() ) und es funzt so wie ich mir das vorgestellt habe.
Aber merkwürdig find ich das schon das er das fenster nicht schließt..
Danke für eure Hilfe.