Form->ShowModal anzeigen - >Berechnungen > Form->Ausblenden
-
mrOk
-
Original erstellt von <=>:
mrOk??????
Wieso
So stehts in der Hilfe und so klappt es bestens.
-
-
Nimm statt onShow einfach onActivate, das vereinfacht das ganze *g*
-
hallo,
wenn ein form modal angezeigt wird, wird die codeausführung genau an der stelle des modalen aufrufs solange angehalten, bis das modale fenster wieder geschlossen wird:
MyForm->ShowModal();
MyForm->Release();oder
if (MyForm->ShowModal() == mrOk) //wenn mit ModalResult = mrOk geschlossen wird,
ShowMessage("zu"); //geht die codeausführung hier weiter.
MyForm->Release();solange ein modaler dialog bzw. fenster geöffnet ist, geht die codeausführung in diesem fenster weiter. so wäre es also von der theorie her so, das du die berechnung in der unit des modalen dialoges durchführst.
wenn dies aber aus irgendwelchen gründen nicht geht, solltest du evtl. den von junix genannte möglichkeit ins auge fassen und den dialog normal mit show anzeigen aber mit FormStyle = fsStayOnTop;
mfg
murphysto
-
Was bringt denn fsStayOnTop? Was macht das genau?
Denn sonst würde ich eher sagen onActivate, aber ich weiß ja net was stayontop genau bedeutet.
-
fsStayOnTop
Das Formular bleibt immer im Vordergrund, es sei denn, bei anderen Fenstern ist FormStyle auch auf fsStayOnTop gesetzt. Wenn ein fsStayOnTop-Formular ein anderes fsStayOnTop-Formular aufruft, bleibt keines der beiden dauerhaft im Vordergrund.
-
So etwas habe ich auch in einem Programm gemacht. Während einer längeren Berechnung mache ich ein neues Fenster auf, darin habe ich eine Progressbar, die ich dann in der Berechnung ab und an weitersteppe.
[... in Form1 startet gerade die Berechnung ...] //Hauptfenster Form2->Show() //Fenster mit Progressbar anzeigen Form2->ProgressBar1->StepBy(1); //Progressbar wird initialisiert Form2->ProgressBar1->Position=0; Form2->ProgressBar1->Max=1000; Form2->ProgressBar1->StepIt(); [...Berechnung in Form1 läuft weiter ...] Form2->ProgressBar1->StepIt(); [...Berechnung läuft weiter ...] Form2->ProgressBar1->StepIt(); [...Berechnung läuft weiter ...] Form2->ProgressBar1->StepIt(); [...Berechnung ist jetzt fertig...] Form2->Close();
Dazu musste ich in Form2 noch nicht mal fsStayOnTop einstellen. Wenn die Berechnung extrem Rechenzeit verlangt, kann nach der Initialisierung der Progressbar ein Refresh von Form2 helfen.
mfG, Jens
-
Achso, immer im Vordergrund, dann würd ich immrnoch bei onActivate bleiben und fsStayOnTop verwenden.
-
Hallo??
Mit ShowModal öffnen und mit ModelResult==1; wieder schließn.
Auszug aus Hilfe:
int __fastcall ShowModal(void);
Beschreibung
Mit ShowModal kann ein Formular modal angezeigt werden. Wenn ein Formular modal angezeigt wird, kann die Anwendung erst fortgesetzt werden, wenn das Formular geschlossen wurde.
Um ein modales Formular zu schließen, setzen Sie seine Eigenschaft ModalResult auf einen Wert ungleich null.
un dgenau das willst du doch, oder?