Teilweise ShowModal()
-
Hallo,
ist zu knifflig für mich und ich weiß nicht ob das überhaupt geht, aber ich hoffe ihr könnt es mir sagen (in der suche und in der FAQ habe ich leider nix gefunden, bin aber bestimmt der einzige der sowas braucht ^^)also mein Problem (lang): ich habe ein hauptform, der einige MDI-Childs hat und dann noch sonst normale fsAlwaysOnTop Fenster (die keine MDI-Childs sind) und paar andere nicht Child Fenster. Diese Fenster sind am Anfang des Programms nicht sichtbar. Und wenn sie es sein sollen, dann rufe ich diese mit ShowModal() auf. Was natürlich bewirkt, dass man keine weiteren Änderungen in den anderen Fenstern vornehmen kann (bzw. von dem der es aufgerufen hat). So soll es auch sein, aber da gibt es noch paar andere Fenster im Programm, die aber trotz des anderen Fenster's ShowModal() aktiv sein sollen, wie kriege ich das hin?
kurzfassung: ich möchte die funktion von ShowModal() haben, aber möchte das trotzdem paar andere Fenster im Programm "aktiv" sind (ausgenommen das fenster, wo ShowModal() aufgerufen wurde...)
ich danke für jede Hilfe
-
Hallo
wenn du mehrere Fenster aktiv haben willst, mußt du mit Show() und Close() anstatt ShowModal() arbeiten.
bis bald
akari
-
Ja aber dann ist ja das Problem da, dass sozusagen der Code weitergeht. Sry für schlechten Ausdruck.
So z.B.:
Form2->Show(); // Form2->ShowModal(); if(Form2->Checkbox1->Checked) {...} else {...}Der Code funktioniert dann natürlich nicht richtig, es sei denn man macht es mit Form2->ShowModal(), aber dann sind ja alle Fenster nicht aktiv.
-
hm ich bin nicht sicher, ob ich Dich richtig verstehe...
Aber wenn Du z.B. aus Form1 eine Form2 nicht-modal aufrufst und aus Form2 dann Form2 modal aufrufst, kannst Du Form2 nicht weiter verwenden. Form1 ist allerdings weiterhin verwendbar.
Modale Forms sperren immer nur die aufrufende Form, nicht die gesamte Anwendung.
-
Seltsam, bei mir schon...
Vielleicht liegt das daran dass die aufrufende Form ein Childfenster von der MainForm ist.
Auf jeden fall hab ich das so geregelt, korrigiert mich wenn es eine doofe lösung ist, aber es scheint zu funktionieren:MainF->DisableAllChilds(true); TextF->Show(); while(TextF->Visible) Application->ProcessMessages(); MainF->DisableAllChilds(false);