Formular laden abwarten
-
Hallo
ich habe ein Problem mit der Formulardarstellung.
Ich starte innerhalb einer Funktion (Funktion1) eine weitere Funktion (Funktion2) die ein Formular öffnet und Daten aus einer Datenbank einträgt.Das Problem ist jetzt wie kann ich auf die vollständige!!! Darstellung des Formulars (aus Funktion2) warten und dann erst mit der Funktion1 fortfahren?
Ich habe probiert mit einer while-Schleife auf einen Rückgabewert der Funktion 2 zu warten - war aber auch nicht erfolgreich.
Für einen Tip wäre ich dankbar.
Gruss
Bernd
-
Hallo
ShowModal anstatt Show
bis bald
akari
-
Soll darauf gewartet werden bis das Formular vollständig angezeigt ist, oder bis es wieder beendet wird?
Bei zweiterem trifft akaris Lösung zu. Für ersteres würde ich mit einem Event arbeiten, das in Formular 2 ausgelöst wird. In Formular 1 wird dann darauf gewartet, dass dieses Event ausgelöst wird. Ich bin nur nicht sicher, ob Events innerhalb eines Threads funktionieren... Mußt Du ausprobieren.HANDLE EventForm1CanContinue; // muss an Form2 übergeben werden EvemtForm1CanContinue = CreateEvent(NULL, true, false,NULL); Form2->SetEventHandler(EventForm1CanContinue); // Übergabe mittels einer Setter-Methode // jetzt in Form2 die Funktion aufrufen WaitForSingleObject(EventForm1CanContinue, INFINITE); // jetzt wird der Prozess angehalten, bis das Event in Form 2 gesetzt wird CloseHandle(EventForm1CanContinue); // In Form2 muss an passender Stelle der Event ausgelöst werden SetEvent(/*Der übergebene Event*/); // da muss der Name rein, den das Event in Form2 hat
-
Hallo
es soll gewartet werden bis das Formular2 geladen und alle Inhalte dargestellt sind - jetzt mach ich es mit Show() auf - und warte mit einer while-Schleife auf einen Rückgabewert vom Ende der Funktion2. Dann gehts erst in der Funktion1 weiter.
Das Manko ist halt - das Formular wird am Bildschirm nicht komplett dargestellt, erst nachdem die Funktion1 durchgelaufen ist - irgenwie mit Sleep etc warten hilft auch nicht weiter weil dann ja das System mehr oder weniger komplett steht und auch nichts passiert.Ich werd die Vorschläge mal heute Abend probieren.
Gruss
Bernd
-
Eigentlich müsste auch ein Application->ProcessMessages(); reichen
form->Show(); Application->ProcessMessages();
-
VergissEs schrieb:
Eigentlich müsste auch ein Application->ProcessMessages(); reichen
form->Show(); Application->ProcessMessages();Öh? Ich hatte es so verstanden, dass in Form1 gewartet werden soll, bis ein bestimmter Zustand in Form2 erreicht ist.
-
Danke für die Hilfe
der kurze und einfach Weg über ProcessMessages() funktioniert einwandfrei.
Viele Grüsse
Bernd